chore: build with Go 1.26 and update vulnerable dependencies - #1097
Conversation
Go 1.23 stopped receiving security patches in August 2025, so binaries built with it are flagged by vulnerability scanners for unpatched stdlib CVEs, alongside outdated x/net, x/crypto and go-git module versions embedded in the build metadata. - Bump go.mod to Go 1.26 and point setup-go at it via go-version-file (release, test and CodeQL workflows) and the Dockerfile build stage. - Upgrade go-git to v5.19.2, x/net to v0.57.0, x/crypto to v0.54.0, plus transitive x/* bumps via go mod tidy. - Migrate golangci-lint to v2 (action @v9): the v1.64 line is built with Go 1.24 and cannot typecheck a go 1.26 module. Lint behavior is preserved (v1's implicit default exclusions are now declared explicitly; goimports moved to the formatters section). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
CI note: the failing The failure is an assertion inside the fixture app itself ( All 16 other checks on this PR are green. |
Why
saucectl release binaries are currently built with Go 1.23 (go1.23.12), a toolchain line that stopped receiving security patches in August 2025. Vulnerability scanners therefore flag the released binaries for the unpatched Go standard library (38 known CVEs to date per OSV, none of which will ever be fixed on the 1.23 line), alongside outdated
golang.org/x/netv0.33.0,golang.org/x/cryptov0.31.0 andgo-gitv5.13.1 module versions embedded in the build metadata. Users who package saucectl into container images see these findings in their image scans.What
go.mod(go-version-file), bumped to Go 1.26 — one place to bump going forward. Applies to the release, test and CodeQL workflows plus the Dockerfile build stage.go-gitv5.13.1 → v5.19.2,x/netv0.33.0 → v0.57.0,x/cryptov0.31.0 → v0.54.0, plus transitivex/*bumps viago mod tidy.@v9): the v1.64 line is built with Go 1.24 and cannot typecheck ago 1.26module..golangci.ymlis migrated to the v2 config format preserving the previous behavior — same linters, v1's implicit default exclusions now declared explicitly,goimportsmoved to the formatters section.Supersedes #1026, #1055 and #1070.
Verification
go build ./...andgo test ./...pass with go1.26.5.golangci-lint run(v2.12.2): 0 issues.govulncheck ./...: 0 vulnerabilities affecting saucectl code. The only remaining module-level advisory is GO-2026-5932 — the deprecatedx/crypto/openpgppackage, which saucectl does not import and which has no fixed version to upgrade to.go version -mon a test build (the metadata that version-based scanners inspect) now reportsgo1.26.5and the updated module versions.🤖 Generated with Claude Code