A model trained on five years of tutorials will blend three major versions of a library into one function and hand it back looking perfectly clean. The bug is not in any single line. It sits in the seam between an API signature pulled from an old release and a config shape pulled from a newer one, and that seam stays invisible until someone runs an update months later.
The Details:
A human writing against a library checks the docs for the version actually installed, and a stale Stack Overflow answer usually carries a timestamp or an error that exposes the mismatch fast. A model has no such friction: it draws on a blended corpus spanning many versions and produces output that imports cleanly and reads as idiomatic, with no marker that a guess was made.
Training data skews toward whichever version accumulated the most tutorials and forum posts, which is rarely the version pinned in your lockfile. The model cannot see your lockfile, so it fills that gap with the statistically dominant version from its training set, confidently and silently.
Human teammates accumulate project context passively, through code review and hallway conversation, so conventions and past decisions live in shared memory over time. A model starts from zero every session, so anything not written down becomes another gap it fills with a best guess rather than your team's actual history.
The fix is cheap and specific: paste the relevant lockfile line, import block, or module snippet before asking for code, and when something looks off, ask for the exact import path and function signature the model believes it is calling. Pin dependencies, run the output against your real test suite, and treat the result as a fast first draft rather than finished work.
Bottom Line: The ten seconds it takes to state your actual dependency version is cheaper than the debugging session you'll have three months from now when nobody remembers why the code assumed otherwise.
Enjoy this article?
Listen to the Claude Code Conversations radio show or join the community.