Skip to content
Latchkey

Go GOPROXY "410 Gone" / "reading ... 404" - Fix Proxy Fetch Errors

Go asked the module proxy for a version and got 410 Gone or 404 Not Found. The proxy has no record of that module or version - it was removed, never existed, or is private and not reachable through a public proxy.

What this error means

A module fetch fails with reading https://proxy.golang.org/.../@v/vX.Y.Z.info: 410 Gone or a 404. It can be deterministic (a genuinely missing version) or transient (a proxy hiccup that clears on retry).

go output
go: github.com/example/lib@v1.9.9: reading
https://proxy.golang.org/github.com/example/lib/@v/v1.9.9.info: 410 Gone
	server response: not found: ... invalid version: unknown revision v1.9.9

Common causes

The version does not exist on the proxy

A tag was deleted upstream, never published, or mistyped. The public proxy returns 410/404 because it has nothing to serve for that exact version.

A private module routed through the public proxy

Without GOPRIVATE/GONOSUMDB, Go asks proxy.golang.org for a private repo it cannot see, and gets a not-found.

Transient proxy or network failure

An intermittent proxy error or DNS blip can surface as a fetch failure that succeeds on retry.

How to fix it

Verify the version exists and is spelled right

Terminal
go list -m -versions github.com/example/lib
# then pin a version that actually exists
go get github.com/example/lib@v1.9.0

Exclude private modules from the public proxy

Tell Go which paths are private so it bypasses the proxy and checksum database for them.

Terminal
export GOPRIVATE=github.com/yourorg/*
# or route everything direct
export GOFLAGS=-mod=mod GOPROXY=direct

Retry transient proxy failures

A genuine 410 for a missing version will not fix itself, but an intermittent proxy/network error usually clears on a second attempt.

How to prevent it

  • Pin to versions that exist and are not force-pushable.
  • Set GOPRIVATE for internal modules so they skip the public proxy.
  • Cache the module download cache so CI re-fetches less from the proxy.

Frequently asked questions

What causes ""410 Gone" / "404 Not Found""?
A tag was deleted upstream, never published, or mistyped. The public proxy returns 410/404 because it has nothing to serve for that exact version.
How do I fix "410 Gone" / "404 Not Found"?
Verify the version exists and is spelled right
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card