In the deep suite's long runs, 89% to 96% of the prompt came from the cache.

An agent sends its instructions and the conversation again with every request, and a provider can read text it has already seen from its cache, at a lower price. These are the deep suite's runs, up to 20 minutes each, in Claude Code and Codex CLI on my subscriptions. No new runs.

From the cache#

In the deep suite's long runs, 89% to 96% of the prompt came from the cache.

Each bar is a model's median run on the deep suite's six tasks. One panel per tool, on the same scale.

Claude Codeshare of prompt tokens read from the cache, median run0%50%100%Claude Opus 5.595%Claude Haiku 5.596%
Codex CLIshare of prompt tokens read from the cache, median run0%50%100%GPT-6.1 Sol95%GPT-6 Luna89%

The table scrolls sideways on a small screen.

ModelToolValid runsAt the time limitFrom the cache, medianLowest to highest
GPT-6.1 SolCodex CLI12095%91% to 98%
Claude Opus 5.5Claude Code11895%94% to 99%
Claude Haiku 5.5Claude Code9196%92% to 97%
GPT-6 LunaCodex CLI10089%80% to 98%

Source: WorkloadBench at workloadbench.brenhq.com, updated 16 October 2026. Deep suite v3, 42 valid runs, 15 October to 16 October 2026, Claude Code 2.1.284 and Codex CLI 0.159.0, medium effort. 9 of them hit the time limit.

The share is the tokens a run read from the cache over every prompt token it sent: for Claude Code its input, cache reads and cache writes; for Codex CLI its input, which already holds the cache reads, plus its hidden first request. Eight of Claude Opus 5.5's eleven valid runs and one of Claude Haiku 5.5's nine valid runs hit the time limit, when Claude Code logs no totals, so their tokens were counted from the run's own requests.

The table scrolls sideways on a small screen.

TaskGPT-6.1 SolClaude Opus 5.5Claude Haiku 5.5GPT-6 Luna
Speed-up (C++)95%96%97%90%
Production schedule (Java)95%94%93%83%
Demand forecast (Python)96%94%97%88%
File reader from a spec (Rust)94%95%96%91%
Web app feature (TypeScript)98%99%no valid run98%
Job service (Go)92%96%96%92%

Each cell is the mean of that model's valid runs on the task, two at most.

Cost#

With nothing cached, the same runs would cost 3.7 to 7.5 times as much at list prices.

Each run's estimate at list prices, beside the same tokens priced as if nothing were cached: every prompt token at the input rate, plus output. A calculation, not a bill.

All runs added uptimes as much, nothing cached0.0x4.0x8.0xGPT-6.1 Sol7.1xClaude Opus 5.56.5xClaude Haiku 5.53.7xGPT-6 Luna6.5xOne run, medianeach run's own multiple0.0x4.0x8.0x6.0x4.2x3.4x3.9x

The table scrolls sideways on a small screen.

ModelValid runsCost, all runsWith nothing cachedTimes as muchOne run, medianOne run, lowest to highest
GPT-6.1 Sol12$8.45 to $9.04$63.817.1 to 7.56.0 to 6.44.3 to 10.8
Claude Opus 5.511$33.45$217.066.54.23.3 to 10.2
Claude Haiku 5.59$0.82 to $4.08$3.05 to $15.233.73.42.8 to 4.4
GPT-6 Luna10$0.35 to $0.37$2.416.5 to 6.83.9 to 4.32.7 to 8.0

Source: WorkloadBench at workloadbench.brenhq.com, updated 16 October 2026. Deep suite v3, 42 valid runs, 15 October to 16 October 2026. Codex CLI's bars show the low end of its range. Prices checked 29 September 2026, OpenAI's cache-write rates 14 October 2026. I paid through subscriptions, not these amounts.

The multiple over all runs leans on the longest ones, so the table also gives each run's own multiple. For Codex CLI, a run's lowest to highest also spans both ends of its unknown cache-write rate. Claude Haiku 5.5's cost is a range because Anthropic charges five times every price for a request whose prompt passes 100k tokens, and prompt sizes weren't logged; both sides use the same rate, so its multiple is the same at both ends. Codex CLI's cost is a range because it logs no cache writes, which OpenAI bills at 1.25 times the input price for its default 30-minute cache.

How I counted#

Definitions, runs and limits

The share from the cache is the tokens a run read from the cache over every prompt token it sent. For Claude Code that is input, cache reads and cache writes, as Claude Code logs them; every Claude cache write was a one-hour write. For Codex CLI it is input, which already holds what it read from the cache, plus its hidden first request, which its own count leaves out; I measured that once for each model and Codex CLI release, not on every run. Codex CLI logs 0 cache writes, so its cache writes here are what it read that did not come from the cache.

Runs of a task ran one after another, each in its own container from the same image and path, so a run's first request could read text an earlier run had cached. In Claude Code's runs the first request read 9,977 to 29,809 tokens from the cache, at most 3.9% of a run's prompt, over 11 to 109 requests a run. That is the part I can see; a later request could reuse an earlier run's cache only where its text matched exactly. Codex CLI logs one total per run, so its first request can't be separated.

Valid runs only, as the Deep suite page counts them; a run stopped at the time limit counts. Cursor CLI has no deep-suite runs, so it isn't here. Short runs read much less of their prompt from the cache, and it moves from run to run; the Quick suite shows them for its explain task.

Every run's tokens are in results.json, under deep_v3_runs; field_notes there says which token fields are derived.