Claude Code Token Cost: a Fifth of Requests Write a Three-Word Status Line
Four independent measurements put a background summary request at roughly a fifth of a subagent-heavy session's requests and tokens. We read the 2.1.312 binary to see what controls it. Not you.
A gist published on 26 October by Flamerix AI claims that Claude Code spends roughly 15 to 20 percent of its tokens on a background request whose only output is the three-to-five-word status line under each running subagent. That is a Claude Code token cost claim, so we opened the thing measured: the binary, version 2.1.312, published to npm on 27 October and tagged latest.
The claim, as measured
Flamerix grouped Claude Code's OpenTelemetry api_request events by their query_source attribute over one week. Requests tagged agent_summary were 16.4 percent of estimated spend, slightly more than the main conversation at 15.7 percent, and 19.7 percent of all API requests, at roughly 9,000 input tokens per output token. Spend here means Claude Code's own cost_usd estimate rather than an invoice.
The measurement is not alone. Issue 86879 in the Claude Code repository, open since 15 August, holds three more from three other accounts: 22.7 percent of requests and 18 percent of price-weighted tokens over a four-hour session with 27 subagents on 2.1.233; 26 percent of a session's cache-read tokens on 2.1.276, one call every 31 seconds per running agent; and on 2.1.300, hidden cache reads on Fable subagents roughly equal to the visible ones, 133 million against 142 million across a 36-hour session.
Every one of these is an interactive session with several subagents running at once.
What the binary says
We did not run the gist's hook. We downloaded the 2.1.312 macOS binary from npm and read its strings, then 2.1.231, 2.1.232 and 2.1.236.
The prompt is in there. It asks the model to describe its most recent action in three to five words, present tense, naming the file or function, with no tools. The fork is tagged agent_summary and marked to skip the transcript, which is why cost tools that read session logs never see it. Issue 104358, filed 22 October, finds transcript-based sums 1.35 to 2.13 times below Claude Code's own cost-state file.
The configuration is readable too. The default mode is full, which sends the agent's transcript. The refresh interval defaults to 30 seconds and is clamped to between 30 and 240, so the default is already the minimum. A second mode, short, exists in the same schema, with an input cap defaulting to 2,000 tokens and a separate writer model per model family. No user-facing setting selects it; the config carries a flag and a source field, which Flamerix reads as a server-side switch.
An environment variable named CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES is present in the binary and absent from all eight docs pages we read. The one the gist says some packagers set, DISABLE_NON_ESSENTIAL_MODEL_CALLS, does not occur in the binary at all.
The changelog entry for 2.1.232, published 13 August, flipped the default. It says subagent forking is now on and agent spawns in interactive sessions run in the background by default. It does not mention summaries. The prompt is already present in 2.1.231; what changed is that every spawn became a background agent, and background agents get summarised. The costs page has a section on background token usage. It lists resume summaries and prompt suggestions, puts the total at typically under $0.04 a session, and does not list this request. The changelog does know the feature: 2.1.128 fixed the summaries missing the prompt cache, and 2.1.274 fixed a runaway reply.
Where the Claude Code token cost flips
The overhead is not a percentage of work. It is agent steps times each agent's current context, re-read at the cache-read rate. A session with no subagents pays nothing. The 2.1.312 binary skips a tick when the agent's transcript has not changed since the last one, so an agent blocked on a ten-minute command pays nothing while it waits, and an agent taking a tool step every 30 seconds pays a full-context read per step. The reader of the 2.1.276 bundle found an agent at about 380,000 tokens of context paying roughly 45 million cache-read tokens an hour for its line.
Cache reads are the cheap line, which keeps each call small. Anthropic's pricing page puts an Opus 5.5 cache read at $0.20 per million tokens, so that status line costs about $9 an hour. The cache-write post made the mirror-image point: cheap per token stops mattering when the token count is the whole transcript on a timer.
Headless runs are the open edge. The 2.1.276 reader reports the summariser gated to interactive sessions unless an SDK option enables it. Flamerix's tests enabled it explicitly for claude -p runs and still advise hooking those. Both hold only if a plain -p run without that option pays nothing. Strings cannot settle that.
What to do before you believe it applies to you
Measure it. With OTEL_LOG_RAW_API_BODIES set to file mode, the monitoring docs say Claude Code writes one line per response to index.jsonl carrying query_source, so a count by source needs no telemetry backend:
jq -r .query_source index.jsonl | sort | uniq -c | sort -rn
Or export api_request events and sum cost_usd by query_source. One caveat from issue 98193: on 2.1.284 most text-bearing requests logged no api_request event at all, so read the share as a floor.
If agent_summary is above 10 percent of requests in a session you pay for, the two documented levers are both blunt. Setting CLAUDE_CODE_FORK_SUBAGENT to 0 turns off fork mode and, per the issue thread, the summaries with it; you lose forks that inherit the conversation and its cache. Setting CLAUDE_CODE_DISABLE_BACKGROUND_TASKS to 1 also stops it, per the gist, by making Claude wait for every subagent; the docs add that background commands go with it. The Flamerix preload is a third route: undocumented, fail-open, and patching timers inside the runtime, so read it before you trust it. This is the observability half of LLM consulting: the bill a tool reports and the bill it generates are two numbers until every request is logged, which is the last-mile gap in why enterprise AI does not ship.
What would show this is wrong
The claim this post stands on: in an interactive Claude Code session running several subagents at once, the status-line fork is roughly a fifth of API requests and a comparable share of tokens, and no documented setting removes it without also removing fork mode or background agents. A documented switch that zeroes agent_summary on its own falsifies the second half. A telemetry export from such a session showing it under 5 percent of requests falsifies the first. So would the short mode becoming the default; its schema is already shipping.
Sources
- Flamerix AI — Claude Code burns ~15–20% of your tokens on a 3-word status line (gist, 26 October 2026)
- anthropics/claude-code issue 86879 — Feature request: a supported way to disable the agent_summary spinner (15 August 2026)
- anthropics/claude-code issue 104358 — Persist per-request usage for every billed request (22 October 2026)
- anthropics/claude-code issue 98193 — OTel: api_request event missing for most requests (29 September 2026)
- npm — @anthropic-ai/claude-code-darwin-arm64 2.1.312 (the binary read for this post)
- anthropics/claude-code — CHANGELOG.md
- Claude Code docs — Manage costs effectively
- Claude Code docs — Subagents
- Claude Code docs — Monitoring
- Claude Platform docs — Pricing
Related reading
- AI News
Open Weight Models: Mistral Large 4 Has No Revenue Cap, but Its License Turns on Undefined Words
By Petru Popa · Read - AI News
The Cheapest LLM API for Agents Is Decided by Cache Writes, Not the Price Cuts
By Petru Popa · Read - AI News
Self-Hosting Beam 501B: The Weights Are Open. The Release Channels Are Not There Yet.
By Petru Popa · Read
Turn this into a plan for your team.
One week, fixed fee: a working session with your team, a prioritized use-case backlog, and an ROI model for the opportunities worth chasing.