The Agent Waste Index

What 341,054 public AI coding-agent runs across 29 dataset/model/scaffold groups say about where the money goes — and which of the patterns actually generalise.

edition 1runs 341,054model labels 16scaffold families 4groups 29published September 2026by metermaid

The one-page version executives, finance, operators

We took every public dataset of AI coding-agent runs we could find — 341,054 runs from 11 datasets, spanning 2024 Llama SWE-agent runs, GPT-4o, Claude 3.5 and 3.7 Sonnet, Qwen3-Coder-480B and gpt-5-nano, on four scaffold families — and asked one question: where does the money go, and does it buy anything?

40%

of estimated agent spend goes to the longest fifth of runs (36% under cached pricing). Range across the 29 groups: 21–72%, median 50%.

Those runs succeed at about a third the rate of the shortest fifth at the median: 19% vs 59% for Claude 3.7 Sonnet, 30% vs 57% for Open-SWE v1.0, 3% vs 22% for Llama 70B. Resolve falls from shortest to longest in 14 of the 15 groups with resolve labels, but the size of the fall ranges from 0.16× to 0.91×.

8–285×

fewer resolved tasks per dollar in the longest fifth than the shortest. It is the worst bucket per task solved in 13 of those 15 groups.

Three things follow, in plain language:

  1. The classic failure, an agent stuck repeating itself, is mostly a weak-model artifact. Claude 3.7 Sonnet loops in 0.4–0.5% of runs and blindly retries in under 1%; Qwen3-Coder-480B stays under 1.5% on both. The 2024 Llama SWE-agent runs: 9–18% loops, 22–31% blind retries. The exception is gpt-5-nano on terminus-2 (6% and 5%), where a median run is five steps and one repeat is a large share of it. Mechanical waste totals 4% of estimated spend across the whole set.
  2. The scaffold the agent runs in leaks more money than the model does. One Open-SWE trace version, same tasks, three scaffolds: two dragged oversized tool output through 50% and 55% of runs; the bash-only one, 0.1%. That's an engineering choice, and it's on the invoice.
  3. Nobody is measuring the value of the next step. Success rates fall steadily as runs get longer while each step costs more than the last. By the last fifth of a run, a dollar buys between an eighth and a 285th of what the first dollar bought. Teams set a hard cap or no cap; almost none measures the trade-off.
What to do this quarter: ask for one number — spend on the longest fifth of your agent runs against their success rate. If nobody can produce it, that's the finding.

What it means for the budget finance

You don't need to understand agents to understand this: a growing line item where two-fifths of the money buys the fewest results is a procurement problem, not a technology problem.

Three questions for your AI or engineering lead:

  1. What share of our agent spend last month went to runs that produced nothing? The data to answer it exists in every trace; most teams have never computed it.
  2. What is our step or cost budget per task type, and how was it set?
  3. Which agent framework are we on, and did anyone compare its cost profile to an alternative?

What it means for whoever owns the agents heads of AI, operators

6%10%15%24%45% 59%47%37%28%19%shortest fifthQ2Q3Q4longest fifth share of spend (cached pricing) resolve rate

Claude 3.7 Sonnet, 14,374 runs, tool-call format. Runs split into five equal groups by length. Bars: share of estimated spend with cached input pricing. Line: share of runs that resolved the task. Resolve falls from the shortest to the longest fifth in 14 of the 15 groups that carry resolve labels; the exception is GPT-4o under a 30-step cap, whose shortest runs resolve nothing at all.

Findings, in full engineers, researchers

Headline table

Loops: identical action three or more times with no state-changing action between. Blind retries: identical action immediately after an error observation. Big output: any single observation over 20,000 characters. Ended without result: context exhausted, iteration or cost limit, or cut off mid-call. Mechanical waste: cost of loop and retry steps plus the cost of dragging oversized output through remaining steps. Resolve: task passed hidden tests where the dataset records it. Cost basis: characters/4, full context re-sent each step, Sonnet-class rates; quote the percentages. Groups under 1,000 runs omitted; everything is in index.json. Ingest is capped at the first 20,000 rows of each dataset/config/split in the publisher's own streaming order, so the larger sources are a head sample, not the whole dataset. Edit thrash (the same file edited six or more times) is reported in the repo tables but is not counted as mechanical waste and not counted as a finding: it fires on over 30% of runs in 20 of the 29 groups and peaks at 78%, which makes it a description of how a scaffold edits files rather than a detection of waste. The agentic-coding-trajectories rows are that dataset's own provenance labels and resample populations already in the set — read them as replication, not as extra independent evidence, and do not pool them with their sources.

modelscaffolddatasetrunsmed stepsloopsblind retriesbig outputended w/o resultmech wastefailed-run spendresolve
claude-3-5-sonnet-20241022swe-agent/ticksSWE-smith-trajectories4,033170%1%10%0%3%0%41%
claude-3-5-sonnet-20241022swe-agent/toolSWE-smith-trajectories5,098140%4%16%0%4%0%41%
claude-3-5-sonnet-20241022swe-agent/xmlSWE-smith-trajectories5,198150%2%16%0%4%0%42%
claude-3-7-sonnet-20250219swe-agent/ticksSWE-smith-trajectories15,914290%1%22%0%9%0%45%
claude-3-7-sonnet-20250219swe-agent/toolSWE-smith-trajectories14,374300%1%20%0%6%0%38%
claude-3-7-sonnet-20250219swe-agent/xmlSWE-smith-trajectories14,485290%1%21%0%8%0%43%
kwai-klear-swe-smith-minimini-swe-agentagentic-coding-trajectories5,000240%0%0%11%0%8%
nebius-swe-rebench-openhandsopenhandsagentic-coding-trajectories5,000611%1%72%9%5%17%49%
swe-smith-claude-3-7-sonnetswe-agentagentic-coding-trajectories5,000271%1%18%0%7%0%44%
gpt-4o-2024-08-06openhandsOpenHands-Sampled-Trajectories5,826152%9%18%53%5%55%7%
Open-SWE v1.0 (see card)openhandsOpen-SWE-Traces20,000541%1%35%0%1%0%44%
Open-SWE v1.0 (see card)sweagentOpen-SWE-Traces20,000674%1%54%0%10%0%48%
Open-SWE v1.1 (see card)minisweagentOpen-SWE-Traces20,000510%0%0%0%0%0%
Open-SWE v1.1 (see card)openhandsOpen-SWE-Traces20,000770%0%50%0%2%0%
Open-SWE v1.1 (see card)sweagentOpen-SWE-Traces20,000760%2%55%0%2%0%
Open-SWE v1.2 (see card)minisweagentOpen-SWE-Traces20,000470%0%0%0%0%0%
Qwen3-Coder-480BopenhandsSWE-rebench-openhands-trajectories20,000611%1%72%9%5%17%48%
Qwen3-Coder-480BopenhandsSWE-Hero-openhands-trajectories20,000600%0%58%0%4%0%
Qwen3-Coder-480BopenhandsSWE-Zero-openhands-trajectories20,000310%0%7%0%1%0%
swe-agent-llama-70bswe-agentSWE-agent-trajectories18,5821714%22%1%32%23%77%16%
swe-agent-llama-8bswe-agentSWE-agent-trajectories1,0922518%31%1%50%35%91%21%
qwen3-coder-30bmini-swe-agentmini-coder-trajs-400k20,000301%1%0%2%0%2%19%
gpt-5-nano-2025-08-07terminus-2AgentTrove20,00056%5%0%33%3%65%
mini-coder-1.7Bmini-swe-agent-1SWE-ZERO-12M-trajectories20,000151%1%0%97%0%98%

Same trace version, same tasks, three scaffolds

nvidia/Open-SWE-Traces. The dataset card does not attribute a generating model per config and the traces carry no model field, so rows are labelled by trace version and compare scaffolds within a version, never models. Every run in this dataset is a completed submission (SFT curation), so failed-run cost is zero by construction. v1.0 was filtered after release to remove runs with "git hacking" behavior.

versiongenerating modelscaffoldrunsmed stepsbig outputmech wastelongest fifth's spend (cached)resolve
v1.0not attributed on the cardopenhands20,0005435%1%39%44%
v1.0not attributed on the cardsweagent20,0006754%10%40%48%
v1.1not attributed on the cardminisweagent20,000510%0%37%
v1.1not attributed on the cardopenhands20,0007750%2%28%
v1.1not attributed on the cardsweagent20,0007655%2%30%
v1.2not attributed on the cardminisweagent20,000470%0%53%

Bash-only runs are a third shorter with zero oversized output; the scaffold eliminates a waste class by construction. Its long tail is wider, so its spend is more concentrated in the longest fifth, not less. Which scaffold is cheapest per resolved task needs resolve labels v1.1 doesn't carry.

Cost and resolve by run-length quintile

Within each group, runs are split into five equal-count buckets by step count. Two cost bases: full context re-sent every step, and cached input (re-read tokens at 10%). Resolved per $ is relative within a group. Groups with resolve labels and at least 500 runs per bucket.

model, splitquintilestepsspend share, no cachespend share, cachedresolveresolved / $
gpt-4o-2024-08-06 train.raw13–40%0%0%0.00
24–101%1%5%2.40
310–198%12%18%0.66
419–3124%26%10%0.13
531–9967%60%4%0.02
claude-3-5-sonnet-20241022 ticks15–112%4%40%3.12
211–144%7%45%1.81
314–208%10%41%0.96
420–3016%17%44%0.51
530–13870%61%37%0.09
claude-3-7-sonnet-20250219 ticks17–205%6%66%1.65
220–268%10%55%0.74
326–3414%15%46%0.39
434–4823%24%36%0.17
548–15150%44%23%0.05
claude-3-5-sonnet-20241022 tool14–102%5%50%4.36
210–124%7%47%2.41
312–177%10%40%1.27
417–2614%17%37%0.55
526–12772%62%31%0.09
claude-3-7-sonnet-20250219 tool18–204%6%59%1.55
220–268%10%47%0.65
326–3413%15%37%0.31
434–4824%24%28%0.13
548–15151%45%19%0.04
claude-3-5-sonnet-20241022 xml14–102%5%48%4.12
210–134%7%50%2.41
313–187%10%42%1.23
418–2715%17%40%0.55
527–12772%61%31%0.09
claude-3-7-sonnet-20250219 xml16–194%6%65%1.70
219–268%10%53%0.71
326–3414%15%44%0.36
434–4824%24%33%0.16
548–15150%44%21%0.05
swe-agent-llama-70b train11–101%3%22%5.20
210–143%6%27%2.80
314–217%11%19%0.87
421–3723%26%8%0.12
537–39864%55%3%0.02
Qwen3-Coder-480B SWE-rebench121–4810%11%65%0.26
248–5614%15%57%0.16
356–6618%18%49%0.11
466–8124%23%41%0.07
581–11435%32%27%0.03
Open-SWE v1.0 openhands111–397%9%57%0.31
239–4912%13%49%0.15
349–6016%17%43%0.10
460–7523%23%37%0.05
575–20042%39%30%0.02
Open-SWE v1.0 sweagent18–476%7%64%0.27
247–6011%12%53%0.12
360–7516%17%46%0.06
475–9524%23%41%0.04
595–20043%40%33%0.02
qwen3-coder-30b train13–194%6%30%2.06
219–268%11%25%0.86
326–3414%16%18%0.37
434–4823%24%14%0.16
548–25651%44%9%0.05

What we retracted along the way

Four claims from earlier versions of this work did not survive the full run. They're recorded so nobody re-derives them from an old version of the tools, or from an old version of this page.

Method, data, caveats

Sources

datasetmodelsscaffoldruns usedoutcome label
SWE-bench/SWE-smith-trajectories (tool, xml, ticks)Claude 3.5 / 3.7 Sonnet, GPT-4oSWE-agent60,000resolved
nvidia/Open-SWE-Traces v1.0, v1.1, v1.2not attributed per config on the dataset card; labelled by trace versionOpenHands, SWE-agent, mini-SWE-agent120,000v1.0 only
nebius/SWE-agent-trajectoriesLlama 3.1 8B / 70B / 405BSWE-agent20,000target
nebius/SWE-rebench-openhands-trajectoriesQwen3-Coder-480BOpenHands20,000resolved
nvidia/SWE-Hero, nvidia/SWE-ZeroQwen3-Coder-480BOpenHands40,000none
SWE-Gym/OpenHands-Sampled-TrajectoriesGPT-4o, Claude 3.5 SonnetOpenHands, maxiter 306,055resolved
thoughtworks/agentic-coding-trajectoriesClaude 3.7 (SWE-smith), Qwen (rebench), Klear minimixed15,000resolved
open-thoughts/AgentTrovegpt-5-nanoterminus-220,000none
ricdomolm/mini-coder-trajs-400kqwen3-coder-30bmini-SWE-agent20,000verified
AlienKevin/SWE-ZERO-12M-trajectories1.7B modelmini-SWE-agent20,000none

Caveats, stated plainly

Reproduce

git clone https://github.com/metermaidai/audit && cd audit
python -m pip install datasets pyarrow duckdb
python pipeline.py sweep --limit 20000     # streams every registered dataset into data/runs/*.parquet
python pipeline.py report                  # DuckDB over Parquet -> report/index.md, index.json

Run it on your own agents

Everything above came from public runs. The same detectors, plus the spend-side audit (over-tier models, missing prompt caching, batch-eligible jobs, unowned keys), run locally against your own traces and your Anthropic or OpenAI admin API. Nothing leaves your machine.

python metermaid_audit.py --anon           # spend audit, ids hashed
python trajectory_audit.py ./your-traces   # loops, retries, big output, ended without result

Send the anonymized output and get your resolve-by-length curve and your position against the Index. The next edition adds contributed production data, which is the only way current frontier models get into it.

The Agent Waste Index, edition 1. metermaid, September 2026. Data, code, and every retraction are in the repo.