• Subagents
  • Parallel Agents
  • Claude Code
  • Codex

What does fanning out 100 AI subagents cost? A calculation from measured runs

Calculation from separate CLI calls and Crewshal worker attempts. List-price cost scenarios for 100 units; no parallel run was measured.

100 small Sonnet calls cost $0.36 at the observed median. 100 full Crewshal attempts cost $280.72 at the observed mean. Both are calculations at list price. We did not start parallel subagents.

The small-call estimate uses 15 calls across five tasks. Sonnet passed 12/15 strictly (Wilson 95% interval 54.8% to 93.0%). Per-call cost ranged from $0.0034 to $0.0102. This is cost per call, not cost per correct answer.

The worker estimate uses all 33 attempts, including failures. Per-attempt cost ranged from $0.89 to $4.83. Neither calculation predicts the bill for a new task set.

What we priced

A unit here is a separate CLI process or a full Crewshal worker attempt. We did not measure Claude Code's built-in subagents within one session.

We used three workloads:

  1. Minimal replies through each CLI, one at a time.
  2. Five short tasks with strict validators, through selected CLI configurations.
  3. Full Crewshal attempts on SWE-bench Verified, with onboarding, planning, editing, verification and review.

The calls used subscriptions. Every dollar figure is a list-price calculation, not an invoice. Counts of 10, 100 and 500 are assumed scenario sizes, not measured fan-outs.

Minimal replies: input and cache scenarios

Claude Code used Haiku 4.5 for five minimal replies. Its median input count was 6,761 tokens, including cache reads and writes. The public aggregate has no token range. No empty-prompt control isolates the CLI prefix or establishes tokens sent before work.

Codex also made five minimal replies, using its default model. The corrected public aggregate reports 17,051 inclusive input tokens, including 13,184 cache-read tokens. Cached tokens are a subset and must not be added again. We retain no Codex input or cost projection: different models and a minimal reply do not isolate a common startup prefix.

Assumed unitsClaude input tokens: N × median (calculation)
1067,610
100676,100
5003,380,500

We repriced the Claude input at Sonnet 5.5 rates per million tokens: $2 input, $0.20 cache read and $4 one-hour cache write. This assumes the same input size. It excludes output and orchestration costs.

Calculation

Plain input, no cache surcharge

10 subagents
100 subagents
500 subagents

First writes; all later calls read the whole prefix

10 subagents
100 subagents
500 subagents

Every call writes the whole prefix (1-hour price)

10 subagents
100 subagents
500 subagents

One panel per series, all on the same axis.

List-price calculation, not a run. 3 rows, 3 series: Plain input, no cache surcharge, First writes; all later calls read the whole prefix, Every call writes the whole prefix (1-hour price). Plain input, no cache surcharge: highest 500 subagents $6.76 (n 5). Lowest 10 subagents $0.14 (n 5). First writes; all later calls read the whole prefix: highest 500 subagents $0.7 (n 5). Lowest 10 subagents $0.039 (n 5).

Notesn = 5 per row

N × 6,761 median input tokens, repriced at Sonnet 5.5 rates

Calculation, not a bill. n = 5 minimal replies on Haiku 4.5, one at a time. Sonnet 5.5 prices: $2.00 input, $0.20 cache read and $4.00 1-hour write per million tokens (2026-09-21). These scenarios use assumptions, not measured bounds. These scenarios exclude output and orchestration costs. No empty-prompt control isolates the CLI prefix. The corrected Codex aggregate reports 17,051 inclusive input tokens, including 13,184 cache-read tokens. Cached input is a subset, not an additional count. We omit its input and cost projections; different models and a minimal reply do not isolate a common startup prefix.

Sources: Fan-out cost and serial time scenarios (calculation), Routing overhead runs: policy microbenchmark and CLI start-up, Anthropic list prices (Claude models)

Assumed unitsFirst writes; all later calls readPlain inputEvery call writes
10$0.0392$0.14$0.27
100$0.16$1.35$2.70
500$0.70$6.76$13.52

Each cell is a calculation. These are cache assumptions, not measured bounds. The first scenario assumes a write finishes before later calls start and every prefix matches.

As a calculation from reported first-turn counters, Claude first-turn read shares averaged 18.7% (n = 6; range 18.680% to 18.689%). Codex averaged 55.5% (n = 3; range 47.7% to 59.3%). These are means of process shares, not pooled token shares. Claude used a shortened ledger; Codex used the earlier longer ledger. The routes are not matched.

In later Claude processes, first-turn cache reads exceeded writes in 0/4 cases (Wilson 95% rate interval 0% to 49.0%). This is a counter proxy. It cannot show which ledger tokens a process read.

Small calls: cost and strict passes

Each selected configuration made 15 calls across five tasks. Costs include all calls, including strict validator misses. Every dollar value below is a calculation from reported tokens at list price.

ConfigurationMedian cost per call; observed rangeStrict passes; Wilson 95% interval100 × median cost
Claude Code, Sonnet 5.5$0.0036; $0.0034 to $0.010212/15; 54.8% to 93.0%$0.36
Claude Code, Opus 5.5$0.0069; $0.0059 to $0.022315/15; 79.6% to 100%$0.69
Claude Code, Haiku 4.5$0.0057; $0.0051 to $0.018015/15; 79.6% to 100%$0.57
Claude Code, Fable 5.1$0.0099; $0.0049 to $0.058415/15; 79.6% to 100%$0.99
Codex CLI, GPT-6.1 Sol (medium)$0.0102; $0.0054 to $0.026915/15; 79.6% to 100%$1.02

The cost ranges and pass intervals overlap. This sample does not rank these configurations. The task set is easy and selected. Configurations with no misses hit a ceiling. Sonnet's three misses gave the correct final number but added working lines that the exact-text validator rejects.

Each small call includes its own CLI prompt at that run's size. Do not add the minimal-reply scenario to it. Models, flags and prompts differ across runs. We did not test the cause of cost differences.

Full worker attempts

Crewshal made 33 attempts across two campaigns and two platform builds. It resolved 25; failures stay in cost totals. Mean notional cost was $2.81 per attempt, with an observed range of $0.89 to $4.83. These totals include compaction calls.

Assumed attemptsN × mean cost (calculation)N × observed cost range (calculation)
10$28.07$8.90 to $48.27
100$280.72$88.98 to $482.74
500$1,403.60$444.91 to $2,413.72

Scaled ranges are scenario spreads, not confidence intervals. The campaigns include replacement instances. New tasks can require different tokens and have different outcomes.

Calculation

Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price)

10 subagents
100 subagents
500 subagents

Claude Code · Claude Sonnet 5.5

10 subagents
100 subagents
500 subagents

Codex CLI · GPT-6.1 Sol (medium)

10 subagents
100 subagents
500 subagents

Full worker attempt · Crewshal · Sonnet 5.5

10 subagents
100 subagents
500 subagents

One panel per series, all on the same axis; whiskers are the lowest–highest run (not an interval).

List-price calculation, not a run. 3 rows, 4 series: Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price), Claude Code · Claude Sonnet 5.5, Codex CLI · GPT-6.1 Sol (medium), Full worker attempt · Crewshal · Sonnet 5.5. Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price): highest 500 subagents $6.76 (n 5). Lowest 10 subagents $0.14 (n 5). Not all run ranges overlap. Claude Code · Claude Sonnet 5.5: highest 500 subagents $1.80 (range $1.71–$5.11, n 15). Lowest 10 subagents $0.036 (range $0.034–$0.1, n 15). Not all run ranges overlap.

NotesLines: lowest–highest run (not an interval)n 5–33 per row

Small calls use medians; worker attempts use the mean. Each workload comes from a different run.

We ran no parallel workload. Whiskers multiply observed per-unit cost ranges by N; they are scenario spreads, not confidence intervals. Small-call costs include non-passes: Sonnet 12/15, Sol 15/15. These are per-call costs, not costs per correct answer. Each call includes its own CLI prompt, at the size used in that run. Models, flags and prompts differ across these runs. We did not test the cause of the cost difference. Do not add these bars together. Worker costs include all 33 attempts, including failures.

Sources: Fan-out cost and serial time scenarios (calculation), Routing overhead runs: policy microbenchmark and CLI start-up, Caching sessions and repeated prompts (Claude Code and Codex CLI), Provider head-to-head: Claude Code models vs Codex efforts, Crewshal on SWE-bench Verified, campaign 1 (25 instances), Crewshal on SWE-bench Verified, campaign 2 (8 compiled-extension instances), Anthropic list prices (Claude models), OpenAI list prices

Duration: serial scenarios, no parallel bound

N × median duration is a serial scenario. It is not the measured sum or expected total. A one-unit median is a reference time, not a parallel lower bound.

WorkloadSample nMedian time; observed range100 × median (calculation)
Claude Code minimal reply52.53 s; 2.27 to 3.38 s4.2 min
Codex CLI minimal reply56.00 s; 5.37 to 6.51 s10.0 min
Sonnet small call152.31 s; 2.17 to 7.72 s3.8 min
Sol medium small call155.65 s; 4.09 to 25.46 s9.4 min
Full Crewshal attempt339.6 min; 1.6 to 54.1 min16.0 h

Ranges are not confidence intervals. The minimal-reply routes used different models. All timings include the answer and process exit or worker completion.

Calculation

Serial scenario, 10 units

Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price)
Claude Code · Claude Sonnet 5.5
Claude Code · Claude Opus 5.5
Claude Code · Claude Haiku 4.5
Claude Code · Claude Fable 5.1
Codex CLI · GPT-6.1 Sol (medium)
Full worker attempt · Crewshal · Sonnet 5.5
Codex CLI minimal reply (default model)

Serial scenario, 100 units

Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price)
Claude Code · Claude Sonnet 5.5
Claude Code · Claude Opus 5.5
Claude Code · Claude Haiku 4.5
Claude Code · Claude Fable 5.1
Codex CLI · GPT-6.1 Sol (medium)
Full worker attempt · Crewshal · Sonnet 5.5
Codex CLI minimal reply (default model)

Serial scenario, 500 units

Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price)
Claude Code · Claude Sonnet 5.5
Claude Code · Claude Opus 5.5
Claude Code · Claude Haiku 4.5
Claude Code · Claude Fable 5.1
Codex CLI · GPT-6.1 Sol (medium)
Full worker attempt · Crewshal · Sonnet 5.5
Codex CLI minimal reply (default model)

One-unit median reference (not a parallel bound)

Claude Code minimal reply (Haiku 4.5; Sonnet 5.5 price)
Claude Code · Claude Sonnet 5.5
Claude Code · Claude Opus 5.5
Claude Code · Claude Haiku 4.5
Claude Code · Claude Fable 5.1
Codex CLI · GPT-6.1 Sol (medium)
Full worker attempt · Crewshal · Sonnet 5.5
Codex CLI minimal reply (default model)

One panel per series, all on the same axis; whiskers are the fastest–slowest run (not an interval).

List-price calculation, not a run. 8 rows, 4 series: Serial scenario, 10 units, Serial scenario, 100 units, Serial scenario, 500 units, One-unit median reference (not a parallel bound). Serial scenario, 10 units: slowest Full worker attempt · Crewshal · Sonnet 5.5 5,754 s (range 978 s–32,454 s, n 33). Fastest Claude Code · Claude Fable 5.1 19.4 s (range 14.1 s–98.3 s, n 15). Not all run ranges overlap. Serial scenario, 100 units: slowest Full worker attempt · Crewshal · Sonnet 5.5 57,540 s (range 9,780 s–324,540 s, n 33). Fastest Claude Code · Claude Fable 5.1 194 s (range 141 s–983 s, n 15). Not all run ranges overlap.

NotesLines: fastest–slowest run (not an interval)n 5–33 per row

Serial = N × median. We did not measure parallel completion time.

A serial total is a sum of durations. N × the median is a scenario, not its measured total or expected value. Whiskers show observed per-unit ranges, scaled by N for serial scenarios. They are not confidence intervals. Simultaneous completion depends on the maximum duration, not the median. The slowest recorded worker attempt took 54.1 min. We did not measure rate limits, machine limits or contention.

Sources: Fan-out cost and serial time scenarios (calculation), Routing overhead runs: policy microbenchmark and CLI start-up, Provider head-to-head: Claude Code models vs Codex efforts, Crewshal on SWE-bench Verified, campaign 1 (25 instances), Crewshal on SWE-bench Verified, campaign 2 (8 compiled-extension instances)

Simultaneous completion depends on the maximum duration, not the median. We did not measure parallel completion, rate limits, machine limits or contention. Other work shared the Mac and subscription accounts.

Evidence limits

Pre-call protocol declaration is unverified from the selected public extracts. File times and final protocol text do not establish what was declared before the calls. This calculation adds no new experiment or advance-declaration proof.

The linked minimal-reply, head-to-head and cache extracts retain final protocol text with advance-declaration headings. No preserved pre-call protocol versions were supplied for these extracts. Those headings do not prove what existed before the calls. Historical raw records and review verdicts stay unchanged.

The public-copy note describes a retained final summary and states that pre-call versions are not preserved in that summary. This corrects the label; it does not verify advance declaration. The corrected labels need a fresh source and text recheck before publication.

Use these calculations as scenarios. Measure your own tasks before using them as a budget.

Disclosure: I build Crewshal. The full-attempt numbers come from Crewshal's own runs.

The data behind this post

  • Routing
  • Latency

Routing overhead: deterministic policy vs LLM routers vs Jev

How much delay and cost a router adds per decision: an in-process policy, Claude routers through a CLI, and Jev. Plus CLI start-up tax and per-task totals.

1.42 µsp95 2.33 µs, p99 3.04 µs · Deterministic routing policy: median decision time · n = 20,000

9 chartsUpdated October 6, 2026

  • SWE-bench
  • Coding Agents

Crewshal on SWE-bench Verified vs 11 public models

Crewshal resolved 25 of 33 SWE-bench Verified instances (76%), inside the public panel's range on the same instances. Cost, time and calls.

76% (25/33)Crewshal resolved, all 33 attempted instances · n = 33

6 chartsUpdated October 5, 2026

Turn the numbers into shipped work.

Crewshal runs these choices for you: a persistent AI worker with memory and rules, on your Claude and Codex subscriptions.