Why do small per-step error rates cause large multi-step agent failures?

Your agent is 95% reliable per step. That sounds great. Over a 20-step task it succeeds about a third of the time. Here is the math that quietly kills long-horizon agents, and how to beat it.

B

Balagei G Nagarajan

4 MIN READ


A chain of agent steps where small cracks in each link compound until the chain breaks
Step one at 95%, step two at 95%, gives you 90% for both, not 95%.
— from “Why do small per-step error rates cause large multi-step agent failures?”
 <p><b>Key facts.</b></p>
 <ul>
   <li>The math is unforgiving: at 95% per-step reliability, a 20-step task succeeds about 36% of the time; even at an unusually high 99% per step, it is only about 82%.</li>
   <li>Success collapses with task length in practice: frontier models hit near-100% on tasks a human finishes in under 4 minutes, but under 10% on tasks taking over about 4 hours (METR, <a href="https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/" target="_blank" rel="noopener">Measuring AI Ability to Complete Long Tasks</a>, 2025).</li>
   <li>A per-step error as small as 0.22% drives near-certain failure after a few hundred steps; decomposition plus per-step voting drove errors to zero across a million steps (<a href="https://arxiv.org/abs/2511.09030" target="_blank" rel="noopener">MAKER</a>, 2025).</li>
   <li>The math is unforgiving: a model that is 99% accurate per step is mathematically guaranteed to fail across a 1,000-step task, which is why the MAKER system had to decompose work into atomic, separately-checked microsteps to reach a million steps with zero errors (<a href="https://arxiv.org/abs/2511.09030" target="_blank" rel="noopener">MAKER, arXiv:2511.09030</a>, 2025). Error propagation is the dominant agent failure pattern (<a href="https://openreview.net/forum?id=PFR4E8583W" target="_blank" rel="noopener">AgentErrorBench</a>).</li>
 </ul>
 <h2>Why does reliability multiply instead of average?</h2>
 <p>The task needs every step to succeed. Not most of them. Every one. So you multiply, not average. Step one at 95%, step two at 95%, gives you 90% for both, not 95%. Each new step multiplies in another fraction below one. At 20 steps you land at 36%. Chains do not average their links. They are only as good as all of them together. You can quote a per-step number that looks excellent while the end-to-end number is a coin flip or worse.</p>
 <h2>Why does a 95% step rate feel safe but fail in practice?</h2>
 <p>Demos are three steps on the happy path. The math is forgiving at three steps. Production is 20 steps with real tasks, ambiguity, and retries. The math is not forgiving at 20 steps. Same per-step rate, completely different outcome. The teams that ship 95% confidence thinking they bought an A grade are right at three steps. Wrong at twenty. The longer the workflow, the wider the gap between the per-step number and the end-to-end one. This is exactly why agents demo beautifully and fall apart in production: the demo never touched the part of the curve that matters.</p>
 <div class="fig"><img src="/blog/article4-diagram.png" alt="A curve showing end-to-end success collapsing as the number of steps grows, for 95% and 99% per-step reliability"/></div>
 <h2>Why does this hit agents specifically?</h2>
 <p>Agents string more probabilistic decisions together than almost anything else in software. Every tool call is a step. Every plan branch. Every handoff. And errors do not just drop a step. They chain. Step 5 produces a wrong value. Step 6 uses it as fact. Steps 7 through 20 build on that. One bad output early becomes the foundation for everything after it. The <a href="https://openreview.net/forum?id=PFR4E8583W" target="_blank" rel="noopener">AgentErrorBench</a> analysis names error propagation the single biggest barrier to dependable agents. Architecture matters too: decentralized agent setups amplified errors roughly 17 times versus about 4 times for orchestrated ones in one scaling study.</p>
 <h2>How do you beat the math?</h2>
 <table style="width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:0.97rem;"><tr><th style="text-align:left;padding:10px 12px;border-bottom:2px solid #e5e7eb;color:#5E6AD2;font-weight:600;">Lever</th><th style="text-align:left;padding:10px 12px;border-bottom:2px solid #e5e7eb;color:#5E6AD2;font-weight:600;">Why it works</th><th style="text-align:left;padding:10px 12px;border-bottom:2px solid #e5e7eb;color:#5E6AD2;font-weight:600;">How</th></tr>
   <tr><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Fewer steps</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Less to multiply through</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Decompose less; collapse steps; constrain scope</td></tr>
   <tr><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Higher per-step reliability</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Each gate leaks less</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Better tools, typed contracts, retries with backoff</td></tr>
   <tr><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Verification gates</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Catch a failure before it compounds</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Read-back and checks at each critical step</td></tr>
   <tr><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Error recovery</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">A failed step does not end the task</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Detect, correct, and re-attempt instead of propagating</td></tr>
   <tr><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Checkpoints</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Resume instead of restart</td><td style="padding:10px 12px;border-bottom:1px solid #eee;vertical-align:top;">Persist state so one failure is local, not total</td></tr>
 </table>
 <p>Stop accepting the chain length as fixed. Cutting steps improves success geometrically. Deleting a step is usually higher impact than perfecting it. Add verification where failures tend to compound, not everywhere. Build recovery so one bad step is a local event rather than a restart. Knowing which steps are the weak links and which are reliable enough to leave alone is the pattern-level reliability VibeModel builds as the Pattern Intelligence Layer.</p>
 <aside class="jaside v-key"><span class="col"><svg class="hook" width="28.5" height="34.5" viewBox="0 0 57 69" fill="none" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path fill="var(--pageBg)" d="M54 0V0.716804C54 25.9434 35.0653 47.1517 10 50L0 57V0H54Z"/><path fill="var(--acc)" d="M56.9961 4.15364C57.0809 2.49896 55.8083 1.08879 54.1536 1.00394C52.499 0.919082 51.0888 2.19168 51.0039 3.84636L56.9961 4.15364ZM9.09704 51.7557L8.49716 48.8163L9.09704 51.7557ZM6 69V59.2227H0V69H6ZM9.69692 54.6951L14.3373 53.7481L13.1375 47.8693L8.49716 48.8163L9.69692 54.6951ZM14.3373 53.7481C38.202 48.8777 55.7486 28.4783 56.9961 4.15364L51.0039 3.84636C49.8967 25.4384 34.3213 43.5461 13.1375 47.8693L14.3373 53.7481ZM6 59.2227C6 57.0268 7.54537 55.1342 9.69692 54.6951L8.49716 48.8163C3.55195 49.8255 0 54.1756 0 59.2227H6Z"/></svg><span class="rail"></span></span><span class="glyph"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 20V10"/><path d="M10 20V4"/><path d="M16 20v-7"/><path d="M2 20h20"/></svg></span><h4>Key fact</h4><p>Agents string more probabilistic decisions together than almost anything else in software. Every tool call is a step. Every plan branch. Every handoff. And errors do not just drop a step. They chain. Step <span class="stat">5 </span>produces a wrong value. Step <span class="stat">6 </span>uses it as fact. Steps <span class="stat">7 </span>through <span class="stat">20 </span>build on that. One bad output early becomes the foundation for everything after it. The <a href="https://openreview.net/forum?id=PFR<span class="stat">4</span>E<span class="stat">8583</span>W" target="_blank" rel="noopener">AgentErrorBench</a> analysis names error propagation the single biggest barrier to dependable agents. Architecture matters too: decentralized agent setups amplified errors roughly <span class="stat">17 times</span> versus about <span class="stat">4 times</span> for orchestrated ones in one scaling study.</p></aside>

Frequently asked questions

Does a stronger model survive a 20-step chain?
0.95 across 20 is 36%; a better model shifts a digit. (arXiv:2511.09030)

If each step is 95% reliable, why isn't the whole task 95%?
Because the task needs every step to work, and the probabilities multiply. 0.95 across 20 steps is about 36%, not 95%. Reliability in series multiplies; it does not average.

Does a smarter model fix this?
Only partially. A better model raises the per-step rate, which helps, but the multiplication still bites on long tasks. The bigger wins usually come from fewer steps, verification, and error recovery, not just a stronger model.

Why do agents demo well but fail in production?
Demos are short, so the compounding has few steps to act on. Production tasks are long, so the same per-step reliability produces a far lower end-to-end success rate. The math turns against you as the chain grows.

What is the highest-impact fix?
Cut steps. Because reliability multiplies, removing a step improves success geometrically. Then add verification at the critical steps so a failure is caught before it compounds through the rest.


Share this post

Join the discussion

Have a take, a war story, or a question? Sign in with GitHub to comment and react. Comments are powered by GitHub Discussions, ad-free and yours to moderate.

Continue Reading

Find where your agent breaks, before you build it

Faultmap maps where your agent will fail from the goal and your data, then hands you the first test suite it has to pass.