Patterns · Anti-patterns
How multi‑agent systems
fail in production.
9 failure modes an experienced team has watched reach production. Each is read as a ledger — the failure on the left, its countermeasure on the right — grouped by the rung where the failure is born, because naming it early is most of the fix.
The map
Where each failure bites.
Every failure is born on one rung of the ladder — but a few don't stay put. The cluster sits low, where a single agent reasons alone; the rarer, costlier ones surface only under production load. Select any node to jump to its entry.
Cross-rung propagation — three failures don't stay put
Hidden State in Prompts
Behaviour drifts over long conversations. Bugs reproduce only intermittently.
Pydantic v2 state at every node boundary. Forbid extra attributes. State belongs in code.
Tool Explosion
Tool selection accuracy collapses. The model hallucinates calls and parameter names.
Least privilege per role. Gate large catalogues behind a Tool Registry plus capability routing.
Unbounded Loop
An L1 agent stuck in unproductive infinite cycles due to flawed reasoning, with no programmed recursion limit or step budget.
Originated on L1 with ReAct; recurs here whenever a primitive Loop has no termination.
Set a hard recursion_limit and a step budget at the harness level. Add a Reflexion gate or a tool-call counter to break runaway loops.
Self-Graded Hallucination
A model that critiques its own answer can agree with its own mistake — a reflection loop converges, confidently, on something wrong.
The failure the reflection layer of the Decision Heuristic steers around — self-critique is only as trustworthy as the check it is anchored to. Knowledge-base counterpart: Part IX §8.
Anchor judgement to an external check: an executable test, an oracle, or a human — not another sample of the same model.
Hallucinated Routing
Reflection loops never converge. Recursion limits trip at runtime instead of design time.
Schema-validate router decisions. Hard recursion_limit, hard max_handoffs.
Over-Agentification
High latency, expensive token bills, debugging that requires reconstructing emergent behaviour from logs.
Mirrors the L3 anti-pattern: reaching for multi-agent when an L2 workflow would have sufficed.
Walk the decision heuristic. Sketch the simpler alternative side-by-side before you commit.
God Orchestrator
Single point of coordination, single point of failure, single point of privacy exposure.
A thin hub with strong specialists. Keep the orchestrator's prompt and tools small; push work into specialists.
Cascading Security Failures
A poisoned doc in a shared index contaminates every downstream consumer. Prompt injection propagates via handoffs.
Treat every agent-to-agent message as a trust boundary. Partition knowledge bases by trust level.
SQLite Under Concurrency
Write locks serialize everything. Timeouts under load. Session bleeding.
An L4 anti-pattern that bites L2 hardest — every checkpointed workflow eventually outgrows SQLite.
AsyncPostgresSaver. Compose thread IDs as user×session.