Skip to content

Build1 publisher2 min readPublished

Running every AppWorld task five times drops a ReAct agent from 77% to 53%

IBM Research calls the 24-point drop between passing once and passing five times the consistency gap. Independence would have predicted a 27% five-run rate, so the failures are clustering on particular tasks.

The Engineer · Build desk

What happened

  • An IBM Research paper by Evelyn Duesterwald and colleagues ran a ReAct agent on the AppWorld benchmark with GPT-4.1, executing every task five times and recording both the per-run pass rate and the all-five pass rate.
  • The per-run rate was 77% and only 53% of tasks passed all five attempts, a 24 point gap the authors name the consistency gap and measured with no environmental noise to blame.
  • Their fix writes a short instruction about the step where the five runs diverge, stores it as episodic memory, and injects it when the agent next meets a similar task.
  • On AppWorld that lifted the all-five rate by 16 points on the same tasks and 13 points on similar-but-unseen tasks, and the authors say they narrow the gap without closing it.
  • The dev.to writer who flagged the paper had shipped an invoice-triage agent with 22 green cases three days running, then watched one PDF uploaded twice ten minutes apart get filed under two vendors.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • contradiction The measured 53% sits nearly twice as high as independence predicts, so compounding noise is the wrong diagnosis and per-task clustering is the right one; the first calls for a steadier harness, the second for work on specific tasks.
  • decision N becomes a parameter you set from daily request volume, because at a 2% flip rate a five-run check has about a one-in-ten chance of noticing.
  • cost Eval spend scales linearly with N, so the honest repeat count for a high-volume pipeline will not sit inside a per-commit CI budget and has to run somewhere else.
  • constraint A known failure band can be routed to a human queue; per-run flips on identical input remove the signal a router would key on, so the usual containment pattern stops working.

Independent per-run failures would have looked worse than this. A 77% per-run rate compounded across five runs is 0.77^5, about 27% [14]. The reported all-five figure is 53% [3]. Failures are therefore correlated across runs of the same task.

The mixture is worth writing out. If 53% of tasks pass all five runs, those tasks pass every run by definition, and the remaining 47% have to supply the rest of the 77% average: (0.77 - 0.53) / 0.47 = 0.51 [15]. Tasks that miss consistency still pass about half their runs, near 2.6 out of 5. The write-up does not split that 47% into tasks that never pass and tasks that flip, and the two groups want different fixes.

The dev.to post argues temperature is the wrong suspect. Set it to zero and provider-side variation remains, from batching, hardware, and model updates shipped behind a stable name, and the agent loop then amplifies whatever difference survives: a different tool call at step three changes the observation at step four, and by step eight the trajectory is somewhere else [10].

So the remedy targets a step. The analyzer needs five recorded trajectories per task to diff before it can locate the divergence [4], and the guideline it produces is narrow: "when the search returns multiple contacts, filter on the email domain before picking one" is the post's example of the genre [6]. Sixteen points on top of 53 is 69, still 8 points below the 77% per-run rate measured before any guidelines existed [18]. For that gain to transfer, a workload needs the shape AppWorld has, with tasks similar enough that a guideline stored on one is retrieved on the next. The post's author finds the 13-point unseen-task result more convincing, on the grounds that guidelines can be overfitted to a fixed task list [8].

"Pick your N from your volume, not from the paper," the post's author wrote [12]. The numbers support him. On a case that flips 2% of the time, a five-run harness sees at least one failure with probability 1 - 0.98^5, about 10% [16]. For a 90% chance of catching that case, you need roughly 114 runs of it [17]. His example pipeline runs 400 times a day, where a 2% flip rate is eight wrong vendor assignments [12].

Five runs per case already multiplies model and tool calls per eval pass by five [19]. One hundred and fourteen does not fit in CI. What does fit is the third field in his harness, a Counter over tool-call sequences, which records that a case passed twice by two different routes [13].

What to watch

  • Whether the same five-run measurement on other scaffolds and other providers reproduces a gap this wide, since the published figure covers one ReAct agent on one benchmark with GPT-4.1.
  • Whether eval harnesses start reporting an all-N consistency number next to the pass rate by default, rather than only on request.
  • Whether guideline injection holds up as episodic memory grows and retrieval starts firing the wrong guideline on a superficially similar task.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories