The Fence Nobody Removes
Deletion has no advocate. AI assistants add code faster than any team could two years ago, removal stays near zero, and the gap becomes migration scope, security triage, and the months a new engineer spends reconstructing intent nobody wrote down.
The tilt is measured. ETH Zurich and LogicStar.ai built FixedBench: 200 verified tasks from SWE-Bench where the fix is already applied and the right output is an empty patch. Across five models and four harnesses, agents edited working source in 35 to 65 percent of cases, excluding tests and docs. The best stayed under 67 percent correct abstention. The failing ones skipped reproduction, and the fix sat in the latest commit where a glance at git history would have caught it. Abstention tracked willingness to push back on nonsensical requests, not SWE-Bench score. Restraint is a compliance property, so better coding benchmarks will not deliver it.
Deletion sits at the far end of that axis. Removing code requires concluding it is safe to remove, with attributable downside when wrong. Adding carries no equivalent burden of proof. The models learned this from commits written by developers who already had the instinct, tuned on reviewers who share it. The two biases point the same way. Most enterprises add a third layer, since removing shared code needs someone willing to own a break in another business unit, and that role is often unassigned.
The correction used to come from an engineer irritated enough to run a cleanup pass. That pressure weakens when the assistant shares the reluctance and volume climbs.
Where this lands on your P&L
Handoffs. A developer ships a product line with heavy AI assistance and leaves. With hand-written code, someone once understood every line, and traces of that survive in commits and reviews. With generated code accepted without close review, the understanding was never formed. The successor has nobody to ask, so every ambiguous block defaults to leave it. You are not accumulating code so much as code no human has read.
Context tax. Retired code sits in the repository your agents read. Tokens cost money, though the money is the small part. Agents patch the deprecated copy of a function and pick up patterns from modules abandoned years ago, which produces more code that becomes more context.
Parallel implementations. Facing code it does not follow, an agent writes a second version beside the first. Two payment paths in production with no record of which one is live converts clutter into operational ambiguity, and that is the more expensive failure.
Security surface. Unused dependencies keep their CVEs, and scanners flag every one, spending triage hours on paths nothing calls. Some of those paths stay reachable: unrouted endpoints, deprecated auth logic, retired crypto.
Migration and validation. Scoping a cloud migration means paying to move code nobody can certify as dead. In validated systems removal can trigger revalidation, which is why regulated environments hold the most of it.
Vendor incentives. Statements of work specify features delivered. Lines removed is not a deliverable, so integrators have little reason to propose cleanup, and default tool configurations do not propose it either.
Four moves
- Put deletion in the definition of done. Adding an explicit abstain instruction moved GPT-5.4 mini from 24 to 77 percent on the same model. Telling agents to edit made it worse. Your coding standard outranks your model choice.
- Watch the limit of that fix. Agents told to reproduce first began abstaining on partially-fixed issues that still needed a patch. One error traded for another.
- Assign deletion-with-verification to agents. Enumerating call sites is tedious for humans and cheap for machines, and it happens only when scheduled against a budget.
- Track lines removed beside lines added. No target needed. A net-lines chart that only climbs forecasts the next migration bill.
The bottom line
The model was trained toward caution, the developer inherited it, the org chart withholds authority, the vendor bills on delivery. Advocacy for removal has to be manufactured, which makes it an executive decision. Dead code costs nothing the day it is written and charges interest every day after. Subtraction is the constrained capability now, and it stays constrained until someone gives it a line item.
#AI #AgenticAI #EngineeringLeadership #TechnicalDebt #ProductStrategy
Source: Gloaguen, Mündler, Müller, Raychev, Vechev, "Coding Agents Don't Know When to Act," arXiv:2605.07769.