Go "inconsistent vendoring" - Fix in CI
When a vendor/ directory exists, Go builds from it and checks vendor/modules.txt against go.mod. If they disagree, the build refuses rather than guessing.
What this error means
A build fails with inconsistent vendoring and a list of modules that are in go.mod but not in vendor/modules.txt (or the reverse). It means the vendor tree was not regenerated after a go.mod change.
go
go: inconsistent vendoring in /home/runner/work/app:
github.com/pkg/errors@v0.9.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
To ignore the vendor directory, use -mod=mod or -mod=readonly.
To sync the vendor directory, run:
go mod vendorCommon causes
vendor tree not regenerated
go.mod changed but go mod vendor was not re-run, so vendor/modules.txt is stale relative to the requirements.
Partial vendor commit
Some vendored files or modules.txt were left out of the commit, leaving the tree internally inconsistent.
How to fix it
Regenerate and commit the vendor tree
- Run go mod vendor to rebuild vendor/ and vendor/modules.txt from go.mod.
- Stage the entire vendor directory plus modules.txt and commit.
Terminal
go mod vendor
git add vendor go.mod go.sum
git commit -m "go mod vendor"Keep CI in vendor mode
- Build with -mod=vendor so CI uses the committed tree.
- Verify the tree is current with a diff guard.
.github/workflows/ci.yml
go mod vendor
git diff --exit-code vendor
go build -mod=vendor ./...How to prevent it
- Re-run
go mod vendorafter any go.mod change. - Commit the whole vendor/ tree, not a subset.
- Add a
git diff --exit-code vendorguard to CI.
Related guides
Go "missing go.sum entry for module" - Fix in CIFix Go "missing go.sum entry for module providing package" in CI - go.sum lacks a checksum the readonly build…
Go "updates to go.mod needed" under readonly - Fix in CIFix Go "updates to go.mod needed; disabled by -mod=readonly" in CI - a readonly build found a required change…
Go "go.mod file not found in current directory" - Fix in CIFix Go "go.mod file not found in current directory or any parent directory" in CI - the job ran outside the m…