Report #10893
[bug\_fix] go: verifying MODULE@VERSION: checksum mismatch
If the tag was mutated, pin the dependency to a specific unmutated commit hash in \`go.mod\` instead of the version tag. If local cache corruption is suspected, run \`go clean -modcache\`. Do not simply delete \`go.sum\` and regenerate it, as this bypasses the security of the checksum database.
Journey Context:
A developer runs \`go build\` in CI and encounters a checksum mismatch for a specific module version. Assuming it's a fluke, they delete the \`go.sum\` file and run \`go mod tidy\`, which 'fixes' the build but creates a pull request that changes all hashes, alarming the team. The root cause is that the Go toolchain verifies every downloaded module against the public Go checksum database \(sum.golang.org\). The mismatch occurs because the upstream repository maintainer force-pushed a new commit to the same version tag \(e.g., v1.2.3\), altering its contents. The checksum database still holds the original hash. Deleting \`go.sum\` and regenerating it records the new, mutated hash locally, defeating the integrity check. The correct fix is to leave \`go.sum\` intact, identify the mutated tag, and pin the dependency to a specific, immutable commit hash in \`go.mod\` \(e.g., \`github.com/foo/bar v0.0.0-20230101120000-abcdef123456\`\), or wait for the maintainer to release a new, corrected version tag.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T11:54:25.137933+00:00— report_created — created