AI · Opinion

Claude Code's status line can cost more than your actual conversation

Claude Code re-sends each background agent's transcript to Opus every 30 seconds for a 3-word label. Anthropic should publish that cost in tokens instead of leaving it to a gist.

In one measured week, Flamerix AI found that Claude Code spent 16.4% of its estimated budget on agent_summary requests and 15.7% on the main conversation. The work you actually asked for came second to a side-panel label of three to five words.

Here is how it works. Every 30 seconds, for each background agent at work, Claude Code takes that agent’s whole transcript and sends it back to the agent’s own model, usually Opus. It asks the model to describe its latest action in a handful of words. The reply goes to the agents panel and nowhere else. This has been on by default for interactive sessions since 2.1.232 in August 2026. Flamerix’s fix is a Bun preload of about 70 lines. It wraps setTimeout and hands back a timer set to 2³¹−1 milliseconds, the largest delay Bun will honour without firing at once. I enjoyed reading it, and I think nobody should have had to write it.

When I opened the gist I expected a complaint about a chatty feature. What I found was a feature that Anthropic’s own client hides from the tools people use to count cost. The summary requests are not written to session logs on disk, which is the subject of issue #104358. A developer tested Firekeeper, a transcript-based tracker, on 2.1.308. About 119k tokens, 31% of a three-minute Haiku run, were missing from its count, and all of them were summaries. Another tracker’s maintainers now warn users that a row absent from a transcript is no proof nothing was spent. These calls show up only in the OpenTelemetry export, grouped by query_source on claude_code.api_request events. That is how DRIM spotted them, and I suspect most subscribers have never switched that export on.

The numbers do not rest on one person’s machine. Issue #86879 logs a four-hour session on 2.1.233 with 27 subagents and 1,496 requests. agent_summary made 339 of those requests, 22.7% of the total. They moved 62,757,361 raw tokens to produce 21,966 output tokens, roughly 65 per call. The same issue gathers four independent measurements between 18% and 26%. In Flamerix’s own telemetry, the weekly share climbed from 3.5% to 7% in July to about 16% by mid-October.

Anthropic has an answer. Edwin Arbus of the Claude Code team, identified by AI Weekly as the person posting as edwinarbus, says only actively working background agents get the call. He says the summaries let both the user and Claude Code itself follow each agent “without reading transcripts”. The cache helps his case: 61.6M of those 62.8M tokens were cache reads, which is why #86879’s weighted share is 18.0% against a raw 22.2%. The monitoring docs also expose query_source, and they even tell users to filter to main when attributing commits.

I accept all of that, and I still think the disclosure falls short, using numbers from the people defending it. Actively working background agents are the case people pay for. Cache reads are cheaper, but Flamerix reports that the roughly 2% of calls hitting a cold cache carry over a third of agent_summary’s cost. yoDEV found 96% of that spend went to Opus. Mentioning query_source in a section on attribution tells nobody how much of their week a status line eats. The docs section on background token usage does not list this feature at all. It does document Agent View’s row summaries as a Haiku-class model refreshing every few minutes. A reasonable user would read that and assume the cheap version is what they are running.

Anthropic knows a cheaper version is possible, because it shipped one. 2.1.310 contains a short mode that sends about 2k tokens of notes, optionally to a smaller model. It is off by default, and only server flags can turn it on. The interval also lives on the server, clamped to 30 to 240 seconds, with the default at 30. The SDK’s agentProgressSummaries option defaults to false. According to Flamerix, every code path that writes it sets it to true, so setting it to false changes nothing. On 2.1.312, issue #105981 reports that CLAUDE_CODE_FORK_SUBAGENT=0 no longer stops the calls either.

On a subscription, this cost comes out of your rate-limit headroom, and that headroom is what people already fight with Anthropic about. What I want is dull. One paragraph in the docs should give the interval, the model, the input size per call in tokens and the expected share for a typical session. And there should be a setting that turns it off without patching the runtime. Today users choose between a status line they never asked for and a client hack. Firekeeper’s maintainers declined to ship the hook because altering the client may conflict with Anthropic’s terms.

If you run background agents, turn on the OpenTelemetry export for a week. Group requests by query_source and put agent_summary next to main. If the first number beats the second, as it did for Flamerix, post your figures and version number on #86879, where a fifth independent measurement will be harder to dismiss than four.

Prompted by Claude Code burns ~15-20% of your tokens on a 3-word status line: a Bun preload that turns agent_summary off · by Flamerix AI, flamerix.ai · MIT, Gist.