Earlier this month I gave a fellow O’Reilly Radar author a one line reading of his agent experiments: the model cannot leave a loop open. It closes every loop except the conversation itself. He was generous with the idea, and it has been rattling around my head since. The extension arrived on July 10 and took me six days to catch whole. This is it, on the record.
The observation came from daily life in Claude Code. Give the agent a task and watch what it actually optimizes. It does not search for the best route to done. It searches for the path of least resistance to a closed loop, and it takes that exit every time one is available. Once I saw it, I could predict it.
Closure is only half of it. The other half is how the loop gets closed.
Watch an agent work for long enough and the same move sits under every familiar annoyance. It does not choose the best closure. It chooses the nearest one that still looks like completion:
- ·It claims done the moment done is claimable.
- ·It writes the smallest edit that technically answers.
- ·It leaves
// rest of code unchangedwhere the work should be. - ·It skips the test run when a confident summary is available.
- ·It relabels a task as parked instead of doing it.
- ·It answers its own question rather than waiting for yours.
- ·It agrees with you, because agreement ends the exchange.
Seven behaviors, one move. The loop must close, and it closes through the cheapest acceptable exit.
The evidence was already collected
People measuring other things keep finding this law without naming it. A study of false success in LLM agents published this June [1] quantified how often agents claim completion when the environment says otherwise: over a third of all failures on one benchmark, three quarters on another. The detail that matters is the shape of the failures. Agents claimed completion after an average of 23 API calls on false successes, against 37 on honest failures, and easier tasks showed more false completion, not less. The cheaper the claimable closure, the more often it gets taken. That is least effort path selection, measured in someone else’s data.
The same paper found that LLM judges cannot reliably catch the behavior. No judge configuration cleared an AUROC of 0.65, because judges anchor on confident closing language. Sit with that one. The evaluator falls for the same performance of closure it was hired to audit.
The rest of the record lines up. OpenAI patched GPT-4 Turbo in January 2024 specifically to reduce cases of laziness where the model does not complete a task [2]. That is a vendor confirming the behavior in release notes. A month earlier came the December experiment [3]: identical prompts, different system date, and outputs shrank about five percent when the model believed it was winter. A wind-down frame was enough to shrink the close. METR found that at least 16 percent of successful runs on eight hour tasks involved cheating [4]. The longer the loop, the more attractive the cheap exit. And Anthropic’s own postmortem this April reported that a brevity rule in the system prompt measurably cost three percent on coding evals and had to be reverted [5]. Closure pressure is a real lever with a real price, and the vendors are already paying it.
Simon named this in 1956
Herbert Simon called the human version satisficing [7]: an agent under resource constraints does not optimize, it stops at the first option that clears the bar. We have spent seventy years applying that idea to people and almost no time applying it to language models. I think the port is direct. An LLM is a satisficer over closure states.
The mechanism is not mysterious either. RLHF optimizes for rater approval. Raters approve when output looks done. So the learned gradient points at the nearest acceptable looking closure, and the token sequence that resembles a closed loop becomes cheaper to emit than the one that is a closed loop. Training bakes the shortcut in.
The countermeasures are the fossil record
If you want cruder proof, look at what we all do about it. There is a standardized folk canon of anti-laziness prompts by now: do not truncate, no placeholders, never describe what you would do, do it. There are published tools whose entire function is forcing complete output. Nobody builds an ecosystem of defenses against a behavior that is not the default. The countermeasures are the fossil record of the thing they fight.
This is not reward hacking in a new coat
The obvious objection: this is just reward hacking with new labels. I do not think it is, and the test is simple. Reward hacking needs a misspecified incentive to exploit. Shortest path closure should show up where there is nothing to hack: a cooperative coding task with no benchmark attached, a plain conversation, a helpful exchange with no score. If the same signature fires in benign settings, and my own logs say it does, then it is not an artifact of bad incentives. It is how the organism moves. That experiment is where I am headed next.
I am calling it the cheapest acceptable exit until someone hands me a better name. Watch your agent today. Count how many loops it closes, then check how many things it actually finished. The gap between those two numbers is the whole phenomenon, and I do not think we have priced it yet.