Our CI caught 2
deadcode tool and I ran it on our monorepo out of curiosity.go install golang.org/x/tools/cmd/deadcode@latest
deadcode ./...Two thousand three hundred lines. Functions nobody calls. Structs instantiated once in a test that got deleted. An entire retry wrapper the model hallucinated because "it's best practice." All sitting there, compiling cleanly, passing tests, doing absolutely nothing.
The uncomfortable part? Most of it came from prompt patterns we encouraged. "Add retries with exponential backoff." "Make this configurable." "Follow the existing patterns in the codebase." The model did exactly what we asked — it just didn't know which patterns were already dead.
We've since added deadcode to pre-commit and CI. Caught another 400 lines this week. The tool isn't perfect — it flags plugin entry points and reflection-heavy code — but the signal-to-noise is good enough that we treat warnings as errors now.
What changed: we stopped treating AI output as "code that works" and started treating it as "code that exists." Different standard. The model doesn't know your architecture. It doesn't know what got deprecated last quarter. It only knows what looks plausible.
If you're running Go in production and haven't run this tool, you're probably carrying dead weight you don't know about. One command. Takes thirty seconds.