The Timer That Wouldn't Let Go
- Admitted
- 2026-09-14
- Source dataset
- Other / sample
- Failure mode
- Infinite loop
- Agent system
- Multi-agent
- Tool access
- Read-only
- Industry
- Software development
Presenting Behaviour
While running a code-review skill that fanned work out to eleven subagents, an agent needed to wait for them to finish. Lacking a proper wait primitive, it issued a backgrounded shell command ("sleep N; echo ok") to poll for completion; each time the timer expired, it woke the agent back up, which checked whether subagents were still running and, if so, issued another backgrounded sleep. The subagents finished their work and the final report was ready after about 28 minutes, but the polling loop kept running for another 5 minutes anyway, 42 backgrounded sleep calls and 19 wake-ups in total, with the agent giving the same reply eight times: "Background timer only. Review complete; deliverable unchanged." Only a manual stop command ended the session.
Case Replay
A reconstruction, not a simulation. This sequence is reconstructed from the public incident record and summarised in our own words. It is a static record of what was reported, and nothing here can be run or replayed live.
4 steps
- Eleven subagents. A review skill fans out work to eleven subagents.
- Polling workaround. With no wait primitive, the agent polls using background sleeps.
- Work finishes. The report is ready after about 28 minutes. This is where the agent derailed.
- Loop continues. 42 sleeps and 19 wake-ups run for five more minutes until a manual stop.
Differential Diagnosis
Apraxia, considered, since the underlying problem was a missing wait primitive that forced a workaround. Ruled out because the agent used the sleep-based workaround correctly and consistently; the failure wasn't in how it used the tool but in never recognizing that the condition it was polling for had already been satisfied.
Delusional Disorder, worth a look, since the agent kept acting as though subagents were still running well after they'd finished. Ruled out because this wasn't a belief the agent formed and held onto independently; it was a positive feedback loop structurally built into the polling mechanism itself, each timer's expiry regenerated the exact condition (a pending timer) that had created it, with no terminal state reachable from inside the loop.
Perseveration, most consistent: the agent kept repeating the same wait-and-check cycle well past the point it stopped being useful, unable to recognize that the completed report made the polling itself pointless, and had no way to stop on its own.
Working Diagnosis
Perseveration: a self-reinforcing polling loop, built to work around a missing wait primitive, kept the agent checking and re-issuing timers for five minutes after its actual work was already finished, with no built-in way to notice the loop no longer served any purpose.
Discussion
This one cost five minutes of noise rather than any real damage, but the mechanism is the same one behind more expensive runaway loops: a workaround built to solve one problem (no wait primitive) quietly created a new one (no exit condition). When an agent's tools don't give it a clean way to do something, the gap tends to get papered over with an improvised loop, and improvised loops are exactly the parts of a system least likely to have a stop condition baked in.
Mitigation Strategy
Provide proper wait primitives and an exit condition for any polling loop.
Governance Guardrails
Polling limits; completion detection; stop conditions in improvised loops.
Typical Presentation in Human Patients
General clinical background, included for context. Not medical advice, and not a diagnosis of any individual.
Perseveration is the inappropriate repetition of a word, gesture, or action well past the point where it's still relevant or useful. It's a well-documented sign of frontal lobe dysfunction, and also appears in some forms of dementia and obsessive-compulsive disorder.
Source Note
GitHub, anthropics/claude-code issue #90930
https://github.com/anthropics/claude-code/issues/90930