AI agents have transformed how we design applications around large language models. Instead of generating a single text completion and stopping, an agentic system can decompose a goal, reason over intermediate states, invoke external tools [1, 2], and iterate across multiple steps. Yet while building and testing multi-agent workflows, I have repeatedly encountered a fundamental engineering truth: autonomy without reliability quickly becomes a liability. In this essay, I examine why unconstrained agent loops suffer from compounding error rates, why adding more agents can amplify hallucinations rather than correct them [4], and what engineering principles actually make agentic systems dependable.
The Promise of Reasoning and Acting (ReAct)
The shift from static prompt-response pipelines to agentic workflows—popularized by paradigms like ReAct (Reasoning + Acting) [1] and tool-augmented language models [2]—opened up genuinely exciting capabilities. By interleaving internal reasoning traces (Thought) with external environment interactions (Action) and feedback (Observation), an LLM can query a SQL database, run a Python calculation, search technical documentation, and synthesize a multi-step report.
Multi-agent architectures [3] take this modularity a step further: instead of stuffing twenty tools and conflicting instructions into a single monolithic prompt, we divide responsibilities across specialized personas—a planner, a retriever, a coder, and a critic.
In a controlled demo video, watching three autonomous agents converse and solve a task feels magical. In a real software system operating with limited supervision, however, the failure dynamics look very different [4].
The Mathematics of Compounding Step Errors
Why do autonomous multi-step loops break down so frequently? Consider a simple probabilistic model of a sequential workflow.
Suppose an agent must complete a chain of \(k\) dependent steps—such as parsing an ambiguous user intent, formulating a database query, filtering the returned records, running a calculation, and updating a state record. Even if the model achieves an impressive \(p = 0.92\) (\(92\%\)) reliability on each individual step, and assuming step errors are roughly independent, the probability that the entire \(k\)-step trajectory succeeds without a single corrupting error decays exponentially:
Look at what happens as workflow length \(k\) grows:
| Workflow Steps (\(k\)) | Per-Step Reliability (\(p = 0.95\)) | Per-Step Reliability (\(p = 0.90\)) | Per-Step Reliability (\(p = 0.85\)) | Typical Failure Consequence |
|---|---|---|---|---|
| \(k = 1\) (Single Call) | \(95.0\%\) | \(90.0\%\) | \(85.0\%\) | Easy for user to spot and retry |
| \(k = 3\) (Short Tool Loop) | \(85.7\%\) | \(72.9\%\) | \(61.4\%\) | Occasional wrong tool parameter |
| \(k = 6\) (Multi-Step Agent) | \(73.5\%\) | \(53.1\%\) | \(37.7\%\) | Early assumption cascades through chain |
| \(k = 10\) (Autonomous Loop) | \(59.9\%\) | \(34.9\%\) | \(19.7\%\) | High risk of infinite loop or silent corruption |
In reality, step errors in LLM agents are not independent—they are positively correlated. When an agent makes an incorrect assumption at Step 2 (for instance, retrieving the wrong table schema or misinterpreting an empty API response), that erroneous observation is appended directly into its context window. Because autoregressive models condition on their own prior context, Steps 3 through 6 frequently rationalize and compound the initial mistake rather than recovering from it [4].
Why "Adding More Agents" Is Not a Silver Bullet
A common temptation when a single agent struggles is to add more agents—creating a committee of three or four LLM instances that debate or review each other's outputs [3].
While a dedicated verification step can be very effective when backed by deterministic checks (like a compiler, unit test runner, or schema validator), simply having multiple unconstrained LLMs talk to each other often introduces new failure modes documented in recent multi-agent failure studies [4]:
- 1Sycophantic Consensus (Echo Chambers): When Agent A proposes a plausible-sounding but factually flawed plan, Agent B frequently agrees with it unless grounded by an external, non-LLM oracle.
- 2Specification Drift: As messages pass from Planner \(\to\) Researcher \(\to\) Summarizer, subtle constraints from the user's original prompt get dropped like a game of telephone.
- 3Unbounded Token & Latency Explosion: A 4-agent conversational loop can easily consume \(25,000\) tokens and \(40\) seconds of wall-clock latency to answer a question that a deterministic state machine could solve in two calls.
flowchart TD
U["User Request"] --> S["1. Deterministic Schema & Intent Validator"]
S --> P["2. Bounded Step Planner (Max Steps = K)"]
P --> T["3. Sandboxed Tool Execution"]
T --> V{"4. Deterministic / Uncertainty Check"}
V -- "Verified & Confident" --> Out["Return Grounded Result"]
V -- "High Uncertainty / Tool Error" --> H["Escalate to Human-in-the-Loop"]Engineering Principles for Dependable Agentic Systems
I believe practical agent development should treat autonomy not as an all-or-nothing slider, but as a carefully engineered control loop:
- Prefer Explicit State Graphs Over Open-Ended Loops: Constrain workflows to explicit directed graphs with strict maximum iteration budgets (
max_steps) and explicit fallback states. - Deterministic Tool Boundaries: Never let an LLM execute raw, unvalidated SQL or shell strings. Enforce strict Pydantic/JSON schemas and read-only permission sandboxes at the tool boundary.
- Ground Verification in External Oracles: An effective critic agent should not just "re-read" code or data; it should run a deterministic parser, schema check, or retrieval citation verifier.
- Uncertainty-Triggered Human Escalation: Just as a classifier should abstain when epistemic uncertainty is high, an agent should know when a tool output is ambiguous or when an action carries high irreversible risk—and pause to ask for human confirmation.
The Goal of Agent Engineering: For me, the future of agentic AI is not simply about maximizing autonomy for its own sake. It is about making autonomy predictable, observable, measurable, and dependable.
References
- [1]S. Yao et al., “ReAct: Synergizing Reasoning and Acting in Language Models,” in International Conference on Learning Representations (ICLR), 2023.
- [2]T. Schick et al., “Toolformer: Language Models Can Teach Themselves to Use Tools,” in Advances in Neural Information Processing Systems (NeurIPS), vol. 36, 2023.
- [3]Q. Wu et al., “AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation,” arXiv:2308.08155, 2023.
- [4]M. Cemri et al., “Why Do Multi-Agent LLM Systems Fail?” arXiv:2503.13657, 2025.