A Failure Taxonomy for Production Agents, With Recovery

Pull-quote: “A service that is down tells you. An agent that has diverged keeps working, confidently, on a world that no longer exists.”
Name the failure before you fix it
Manufacturing quality got serious the day it stopped saying “the line is acting up” and started naming failure modes with causes and countermeasures. Agent operations is at that transition now. “The agent went off the rails” is not an incident category; it is a shrug. After enough production incidents, the failures sort into four families, each with early signals you can watch for and recovery moves you can rehearse. None of them announce themselves with a stack trace, which is exactly why the taxonomy has to do the announcing.
PRODUCTION AGENT FAILURES
│
├─ 1. LOOPS ── repetition ─ oscillation ─ livelock
│ (same action, A/B flapping, real motion, no progress)
│
├─ 2. TOOL HALLUCINATION ── phantom tools ─ invented args
│ ─ claimed success that never happened
│
├─ 3. STATE DIVERGENCE ── belief vs world drift
│ ─ stale reads ─ two agents, two truths
│
└─ 4. GOAL DRIFT ── proxy chasing ─ scope creep
─ constraint forgotten after compaction
The four families
| Family | Early signal | Recovery move |
|---|---|---|
| Loops | Trace self-similarity: repeated action signatures, no state delta | Loop breaker halts, then restart from checkpoint with fresh context and the loop noted |
| Tool hallucination | Calls that fail schema validation, or success claims without a matching tool record | Strict validation at the boundary; treat unverified success claims as failures; re-verify at source |
| State divergence | Verification mismatches between agent belief and a fresh read | Invalidate the plan, re-perceive, replan from the world as it is |
| Goal drift | Output diverging from charter, acceptance checks failing late | Pin the charter through compaction; check work against it at phase boundaries, not just at the end |
Two of these deserve a closer look because they masquerade as health. A livelock produces motion: the agent keeps calling tools, the dashboard shows activity, and no metric says that nothing is being accomplished, unless you measure progress as state change rather than action count. And the most dangerous tool hallucination is not the phantom tool call, which validation catches cheaply. It is the claimed success: the transcript says the record was updated, no update happened, and every downstream step now reasons from fiction. The countermeasure is the verify stage of the loop taken literally: an action is done when a fresh read of the target system says so, never when the narrative does.
Run the fleet like a process, not a pet
Individual recovery moves are necessary and insufficient. The operational shift is treating failure rates as a process to control. Every failure family becomes a counted event in the traces, counted per agent, per tool, per task type, and watched as a time series with control limits. A tool whose hallucination rate steps up after a model upgrade, a task type whose loop rate creeps as inputs drift: these are signals a control chart catches while each individual incident still looks like noise. The discipline comes straight from statistical process control on manufacturing lines, and it transfers to agent fleets almost without translation: an agent fleet is a production line whose product is decisions, and it deserves the same charts. The cheapest place to start is verification: log every mismatch between agent belief and a fresh read as a first-class event, and state divergence turns from a mystery into a metric.
Recovery earns one more requirement: rehearsal. A checkpoint you have never restored is a hope, not a mechanism. Fail agents on purpose in staging, mid-plan and mid-tool-call, because the recovery path that has never run is the one that will not.
Closing
Loops, tool hallucination, state divergence, goal drift: four families, each with signals that fire before the incident report and moves that work when rehearsed. Name the failures, count them, chart the counts, and practice the recoveries. Agents will keep failing; that is not the problem. Failing in ways you did not classify is.
