Go error: module proxy returned 404 Not Found or 410 Gone

The module proxy says the requested module or version is unavailable. Go may fall through according to the GOPROXY separators.

go: example.com/team/lib@v1.2.3: reading https://packages.example.com/go/example.com/team/lib/@v/v1.2.3.info: 404 Not Found
go: example.com/team/lib@v1.2.3: reading https://packages.example.com/go/example.com/team/lib/@v/v1.2.3.mod: 410 Gone

Fix it fast

Most likely: The version is absent from this proxy, the path is wrong, or a private module was routed to the wrong source.

Confirm this is your error

Match the output and confirm you are troubleshooting the same failure.

go: example.com/team/lib@v1.2.3: reading https://packages.example.com/go/example.com/team/lib/@v/v1.2.3.info: 404 Not Found
go: example.com/team/lib@v1.2.3: reading https://packages.example.com/go/example.com/team/lib/@v/v1.2.3.mod: 410 Gone

What Go Could Not Find

The request was valid enough to perform a lookup, but the upstream source could not match it to a real package, image, version, or artifact for this environment.

Confirm the module, version, proxy, and separator

Run go env GOPROXY GOPRIVATE GONOPROXY and check the separators.

Run go list -m <module>@<version> and confirm the exact module path and canonical version requested.

Use go mod download -x <module>@<version> to identify which module endpoint and proxy returned 404 or 410.

Check the upstream tag and RepoFlow metadata before changing fallback.

Confirm the exact module or package you asked for

Before you retry, confirm the exact name, version or tag, namespace, and index or registry this environment is supposed to use. Most fixes here are about pointing at the right thing.

Missing version:publish or select an existing immutable version.

Wrong path:correct the module path and semantic major-version suffix.

Private path leak:align GOPRIVATE, GONOPROXY, and GOPROXY with the intended private-module strategy.

RepoFlow issue:correct the upstream URL or repair only the verified bad metadata entry.

Fallback policy:change comma or pipe separators only as an explicit availability and security decision.

Why It Was Not Found

Most of the time this comes down to a typo, a wrong mirror or registry, a missing platform build, or a version that exists somewhere else but not in the source this environment is querying.

The version was never tagged or has not reached the proxy.

The module path or major-version suffix is wrong.

A private module was sent to a public proxy because privacy patterns did not match.

RepoFlow points at the wrong upstream or has incomplete metadata.

Fallback occurred but every later proxy or direct origin also lacked the requested module.

Prove the Source Resolves Correctly Now

Run go list -m <module>@<version> and expect one concrete module version.

Repeat the download with -x and confirm the intended proxy or fallback serves it.

How 404 and 410 control GOPROXY fallback

A module proxy serves list, .info, .mod, and .zip endpoints. With comma-separated GOPROXY, HTTP 404 or 410 means Go may try the next entry. Other errors stop comma fallback. Pipes allow fallback after any error.

Avoid Version and Source Drift

To prevent this, validate new internal versions through RepoFlow before dependent builds use them, monitor proxy 404/410 separately from authentication and service errors, and test private path patterns before they can expose internal names to public services.

Docs and source code

Go module proxy selection source

Current implementation of GOPROXY order, comma fallback, pipe fallback, and 404/410 handling. - Source

Pipe entries fall back on any error. Comma entries fall back only when the response is not found.

Managing Dependencies

Official task guidance for dependency changes and GOPROXY comma-versus-pipe fallback behavior. - Source

Comma-separated proxies fall through on 404 or 410. Pipe-separated proxies fall through on any error.

Go Modules Reference

Official reference for module files, version selection, proxies, private modules, checksums, workspaces, and vendoring. - Source

The go command uses module paths and versions to resolve, download, and authenticate dependencies.

Need help or found a mistake? Contact RepoFlow support for questions.

Join our mailing list

Product updates, new tools, and practical guides from RepoFlow.