diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 81f1eb3ba6d2b27ff824f526ecec259feb48564c..9f7aed462986efcead658f1a25fb4338bd61231a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -26,6 +26,8 @@ jobs:
       - uses: actions/checkout@v4
       - run: go version
       - uses: actions/setup-go@v5
+        with:
+          go-version-file: ./go.mod
       - run: ./ci/lint.sh
 
   test:
@@ -42,7 +44,7 @@ jobs:
         with:
           go-version-file: ./go.mod
       - run: ./ci/test.sh
-      - uses: actions/upload-artifact@v3
+      - uses: actions/upload-artifact@v4
         with:
           name: coverage.html
           path: ./ci/out/coverage.html
diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml
index 91af7ce5c59490795b55ee8293f269805c62c4e8..0eac94cc4746174c7367a2bd1deea8c6b88e822d 100644
--- a/.github/workflows/daily.yml
+++ b/.github/workflows/daily.yml
@@ -30,7 +30,7 @@ jobs:
         with:
           go-version-file: ./go.mod
       - run: AUTOBAHN=1 ./ci/test.sh
-      - uses: actions/upload-artifact@v3
+      - uses: actions/upload-artifact@v4
         with:
           name: coverage.html
           path: ./ci/out/coverage.html
@@ -60,7 +60,7 @@ jobs:
         with:
           go-version-file: ./go.mod
       - run: AUTOBAHN=1 ./ci/test.sh
-      - uses: actions/upload-artifact@v3
+      - uses: actions/upload-artifact@v4
         with:
           name: coverage-dev.html
           path: ./ci/out/coverage.html
diff --git a/ci/lint.sh b/ci/lint.sh
index 3cf8eee4e042382d3205f55cb910aa33aa928043..cf9d1abdb9ff5a5db705001cbab3697c92a92717 100755
--- a/ci/lint.sh
+++ b/ci/lint.sh
@@ -1,11 +1,12 @@
 #!/bin/sh
+set -x
 set -eu
 cd -- "$(dirname "$0")/.."
 
 go vet ./...
 GOOS=js GOARCH=wasm go vet ./...
 
-go install honnef.co/go/tools/cmd/staticcheck@latest
+go install honnef.co/go/tools/cmd/staticcheck@v0.4.7
 staticcheck ./...
 GOOS=js GOARCH=wasm staticcheck ./...
 
@@ -15,7 +16,7 @@ govulncheck() {
 		cat "$tmpf"
 	fi
 }
-go install golang.org/x/vuln/cmd/govulncheck@latest
+go install golang.org/x/vuln/cmd/govulncheck@v1.1.1
 govulncheck ./...
 GOOS=js GOARCH=wasm govulncheck ./...