Skip to content
Latchkey

Go "410 Gone" fetching module from proxy - Fix in CI

A 410 Gone from proxy.golang.org means the proxy will not serve that path. It is either a genuinely missing version or a transient proxy failure that clears on retry.

What this error means

A module fetch fails with reading https://proxy.golang.org/.../@v/vX.Y.Z.info: 410 Gone. A reproducible 410 means the version is gone; an intermittent one is a transient proxy blip.

go
go: github.com/foo/bar@v1.4.0: reading https://proxy.golang.org/github.com/foo/bar/@v/v1.4.0.info: 410 Gone
	server response: not found: ... invalid version: unknown revision v1.4.0

Common causes

Version no longer exists upstream

A tag was deleted or never published, so the proxy has nothing to serve for that version - a deterministic 410.

Transient proxy failure

The proxy momentarily returned 410 for a path that does resolve on retry - a flaky network or proxy state.

How to fix it

Pin a version that exists

  1. List the available versions and require one that actually exists.
  2. Run go mod tidy and commit.
Terminal
go list -m -versions github.com/foo/bar
go get github.com/foo/bar@v1.4.1
go mod tidy

Retry a transient 410

  1. Re-run the fetch; transient proxy 410s usually clear immediately.
.github/workflows/ci.yml
for i in 1 2 3; do go mod download && break; sleep 5; done

How to prevent it

  • Pin exact, published versions and avoid deleted tags.
  • Cache the Go module cache so resolved versions are reused.
  • Add a bounded retry around module downloads for transient proxy errors.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →