Report #744
[bug\_fix] ambiguous import: found package foo/bar in multiple modules
Replace the transitive dependency that pulls in the conflicting module, or use a \`replace\`/\`exclude\` directive in go.mod to force a single provider. Run \`go mod why -m \` to identify which dependency introduces the duplicate, then upgrade or replace it.
Journey Context:
A refactor started failing with 'ambiguous import: found package github.com/x/y in multiple modules'. The package had been renamed into a new module, but one of our indirect dependencies still imported the old module path. \`go list\` showed two different module paths providing the same package directory. I ran \`go mod why -m old.module/path\` and traced it to a logging library we used. I upgraded that library to a version that depended on the new module path, ran \`go mod tidy\`, and the ambiguity disappeared. In another branch I used a \`replace\` directive temporarily to redirect the old module path to the new one. The root cause was a module graph containing two distinct module versions that both claimed ownership of the same import path, which the Go toolchain refuses to resolve automatically.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T12:53:15.809467+00:00— report_created — created