Claude Code · AI costs ·
Claude Code Background Agents Token Usage: Summary Calls
Disclosure: we made the Usage Limit Saver linked near the end of this guide, and it is our own paid product. It does not stop the calls described here.
If you want the next step, read Claude Code usage limits: how to reduce token usage so they last (Pro and Max).
If you run background agents in Claude Code and your plan usage drains faster than your visible work explains, one possible cause is a request you never see. As of November 2026, users have reported that each actively working background agent gets a summary request about every 30 seconds, and that each one sends the agent's whole transcript so a model can write a 3 to 5 word label for the agents panel. This guide covers what the reports say, how to count the calls on your own machine, and which workarounds have evidence behind them. We checked every source on 3 Nov 2026.
What we did and didn't test. We did not run Claude Code against a live account for this guide, so we have no measurement of our own. Everything below comes from public GitHub issues, Anthropic's docs and changelog, and a reply from a commenter who says they work on Claude Code. The counting script was tested only against log lines copied from a GitHub comment. Claude Code changes often, so check claude --version against the versions named here. The newest release in the changelog on 3 Nov 2026 was 2.1.317.
What the hidden summary call is
A feature request, anthropics/claude-code#86879, opened on 15 Aug 2026 and still open on 3 Nov, describes a request tagged agent_summary. Its author read the version 2.1.233 bundle and reports that it forks the subagent's conversation, denies all tools, runs one turn and skips the session transcript. That is a reporter's reading of minified code, not an official description.
A newer issue, #105981, measured it on 2.1.312 on Linux. One background Haiku subagent ran for about three minutes (eight sleep 20 calls) in an interactive session with --debug-file. The log showed five [AgentSummary] Forking lines about 32 seconds apart, while the context grew from 22 to 46 messages. A -p run showed none.
As of 3 Nov 2026, the Background token usage section of Anthropic's cost docs lists session recap, idle compaction and prompt suggestions, and doesn't mention agent summaries. On Hacker News, a commenter who says they work on Claude Code confirmed the basic mechanism. They said it applies only to background agents that are actively working, that idle ones get no calls, and that the summaries let you and Claude Code track each agent without reading transcripts. They also said a fix for summaries that miss the prompt cache had rolled out in 2.1.311 and later, and that a cheaper mode sending short notes to a smaller model was in progress.
Two details matter for cost:
- The call tracks activity, not the clock. The changelog for 2.1.128 says a fix stopped summaries firing repeatedly while a subagent's transcript is static. A log excerpt in #86879 from 2.1.314 shows ticks skipped with "transcript unchanged" during one long Bash call. An agent making many short tool calls gets a summary on almost every tick.
- Transcript-based tools can't see it. The calls skip the transcript (see #104358). We haven't checked whether Claude Code's own
/usagebreakdown includes them.
What users have measured
The numbers differ because the workloads differ. None is ours.
| Source | What was measured | Result |
|---|---|---|
| #86879 | One 4-hour session, 27 subagents, 1,496 requests, 2.1.233 | agent_summary was 22.7% of requests and about 18% of weighted tokens (Opus list rates, per the reporter) |
| #86879, a commenter | 30 days, 129 sessions with background agents | About 14% of requests and about 10% of estimated spend, up to 24% in a 40-agent session |
| Hacker News reply from the Claude Code commenter | Telemetry from users who send it | About 2% of cost and just under 4% of requests overall, about 6% of cost in the terminal |
| #106863 | 30 minutes, two background subagents, 2.1.316, macOS, requests logged at a local proxy | 53 requests missing from the subagent transcript made up 85% of cache writes (about 8.06M of roughly 9.5M tokens) |
Read the last row with care. The reporter inferred the extra requests were summaries from their timing, size and strings in the binary, and says they did not capture a request body. It is also a report of cache misses on 2.1.316, after the fix described for 2.1.311 and later, and Anthropic hasn't confirmed or answered it as of 3 Nov 2026.
The figures can all be right: the 2% is an average across everyone, and the larger shares come from people running mostly background agents. Your share depends on how many agents you run, for how long, and how large their contexts get.
How to measure it on your own machine
This is the method from #105981 plus the usage lines a commenter found in the same debug log. It needs an interactive session, not claude -p, and spends a small amount of usage. Use a throwaway repo.
- Start Claude Code with a debug file:
claude --debug-file /tmp/cc-default.log - Ask for one background subagent on a small model, for example: "Start one background subagent on the haiku model. It should run
sleep 20eight times, one Bash call each, and report when done." That takes about three minutes. - Exit the session, then save this as
count-summaries.sh, make it executable and run it on the log:
#!/usr/bin/env bash
# Usage: ./count-summaries.sh /tmp/cc-default.log
LOG="${1:?path to a --debug-file log}"
[ -f "$LOG" ] && [ -r "$LOG" ] || { echo "cannot read log file: $LOG" >&2; exit 1; }
echo "summary calls started : $(grep -c '\[AgentSummary\] Forking' "$LOG")"
echo "ticks skipped : $(grep -c '\[AgentSummary\] Skipping' "$LOG")"
grep 'Forked agent \[agent_summary\] finished' "$LOG" \
| sed -nE 's/.*input=([0-9]+) output=([0-9]+) cacheRead=([0-9]+) cacheCreate=([0-9]+).*/\1 \2 \3 \4/p' \
| awk '{n++; i+=$1; o+=$2; r+=$3; c+=$4}
END {printf "calls with usage lines : %d\n uncached input : %d\n output : %d\n cache read : %d\n cache create : %d\n", n, i, o, r, c}'
The first line is the count from #105981. The usage lines come from a comment on #86879 that quotes lines like Forked agent [agent_summary] finished: ... totalUsage: input=13006 output=526 cacheRead=18875 cacheCreate=0 from 2.1.314. We ran the script on those quoted lines and it summed them correctly, but not on a real log, and the format may change between releases. If the usage lines print zeros, look at the raw log with grep AgentSummary /tmp/cc-default.log.
Keep three things in mind. The script counts only the label calls, not the agents' own requests, so it isn't your whole bill. The test context is tiny, and each call's cost grows with the transcript, which is probably why reporters with 100k to 400k token agents see larger shares. And if you're testing a workaround, first run ! env | grep -E 'CLAUDE_CODE_(FORK_SUBAGENT|COORDINATOR_MODE)' inside the session, as a commenter on #105981 suggests, and search your settings files for the variable (~/.claude.json, ~/.claude/settings*.json, .claude/settings*.json and the managed settings paths).
For a second method, Anthropic's monitoring docs describe api_request events with a query_source attribute, but list only main, subagent and auxiliary. Reporters in #86879 and an X post by Arpit Bhayani say these requests appear as agent_summary, so you can compare it with repl_main_thread. We haven't verified that. OTEL_LOG_RAW_API_BODIES logs full conversations, so use it only with data you're happy to log.
What may help
There is no documented setting that turns the summaries off. These are ordered by how much evidence supports them.
1. Set CLAUDE_CODE_FORK_SUBAGENT to 0, then verify it
This is the workaround that comes up most. Anthropic's subagent docs describe it only as the switch for fork mode, which is on by default and lets Claude start forks of your conversation on its own. That it also stops summaries is a side effect users found, not a documented feature, and it could change in any release.
The reports conflict:
- On 2.1.312, a commenter on #105981 (Linux, tmux) counted 3 calls with the variable unset and 0 with it exported. A commenter on #86879 (macOS) saw 2 calls with defaults and 0 with the variable set, exported or in a settings
envblock. - The author of #105981 counted 5 calls with and without the variable on 2.1.312, and the same result was posted as a correction on #86879.
- One commenter who read the 2.1.309 to 2.1.312 bundles suggests why: at startup, Claude Code writes each settings
enventry over the shell environment, so a"1"in any settings scope can replace an exported0. Their test on 2.1.310 showed 3 calls in that setup. That is a reading of the code plus one test, and the author of #105981 hasn't confirmed it was their cause.
If you try it, put it in your user settings.json:
{
"env": {
"CLAUDE_CODE_FORK_SUBAGENT": "0"
}
}
Then run the test twice, once without the setting and once with it, and compare the first line of the script's output. If the count doesn't drop on your version, don't rely on it. Also test a real task before leaving it on, since it changes how Claude launches subagents.
2. Run fewer, shorter background agents
This follows from how the call works rather than from a tested fix. A commenter on #86879 measured one call about every 31 seconds while an agent worked, each call's cost grows with the agent's transcript, and idle agents are skipped. So fewer concurrent agents, shorter runs and fresh agents for long jobs should all cut the number and size of calls. No source measured by how much.
3. Don’t leave agents unattended
Two reports show what unattended agents can cost. Neither involves the summary call. In #106385, a desktop app froze overnight while six Workflow background agents kept calling the API about every 10 minutes: about 14% of a weekly Max allowance, 97% of it from the agents. The reporter's usage data shows the agents writing to a 5-minute cache, and a commenter reports the same split in their own transcripts, so any pause over five minutes pays for the whole context again. In #106556, two background subagents reportedly looped to 19,099 Read calls for 93 images and used up the reporter's plan limit twice. A commenter's suggested guard, a completed-image set plus a retry cap, is an idea, not a verified fix. Before you step away, check the agents panel, stop what you don't need and run /usage.
What doesn’t work, and what we couldn’t verify
CLAUDE_CODE_AGENT_PROGRESS_SUMMARIESis not an off switch. Commenters who read the bundle say it can only turn summaries on, so0counts as on.CLAUDE_CODE_ENABLE_NARRATION=0reportedly worked on 2.1.241 only and is now gone.- Timer-patching scripts were posted in #86879. A commenter warned that the install command runs the latest version inside every Claude Code process. We don't recommend them.
-pruns showed 0 calls in #105981, but that is a different way of working, not a fix.CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1is documented in the environment variable docs as removing the background option from subagent tools, so Claude waits. No source measured whether summaries stop, and it also turns off background shell commands. Test it with the script first.- Workflow agents may avoid the calls (one commenter on #86879 saw 1,802 requests with no summary timers), but that is one report.
- The 2.1.311 cache fix. #106863 reports summary requests still missing the cache on 2.1.316. The reporter doesn't mention the fix, and Anthropic hasn't responded.
- Savings figures. No source measured them, so we give none.
Where our own tool fits
Disclosure: this is our own paid product. Usage Limit Saver is a Claude Code pack of hooks, model routing and rules, designed to cut common sources of wasted usage. Its hooks are designed to warn when your 5-hour or weekly plan usage passes a threshold you choose, using Claude Code's own status-line data, and to stop a loop of the same failing shell command. It also has tool-call caps and a guard that skips reads of lockfiles and build folders. It doesn't stop or count the summary calls, and we haven't tested it with background agents. It costs $12 (plus VAT where applicable), is tested only on Linux so far and hasn't been tested against a live Anthropic account.
We are considering a separate Background Agent Cost Guard, aimed at counting and limiting these calls. It isn't available, has no release date and may not be released.
For the wider picture, see our guides on reducing Claude Code token usage and on a 5-hour limit that drains fast in T3 Code or the Agent SDK.
Sources
As of November 2026 (all sources checked 3 Nov 2026):
- GitHub issue anthropics/claude-code#86879, feature request to disable the agent_summary spinner: https://github.com/anthropics/claude-code/issues/86879
- GitHub issue anthropics/claude-code#105981, summary request re-sends each background agent's full transcript about every 30 seconds: https://github.com/anthropics/claude-code/issues/105981
- GitHub issue anthropics/claude-code#106863, background subagent progress summary misses the prompt cache: https://github.com/anthropics/claude-code/issues/106863
- GitHub issue anthropics/claude-code#104358, persist per-request usage for every billed request: https://github.com/anthropics/claude-code/issues/104358
- GitHub issue anthropics/claude-code#106385, desktop app freeze and overnight background agent usage: https://github.com/anthropics/claude-code/issues/106385
- GitHub issue anthropics/claude-code#106556, background subagents looping on Read calls: https://github.com/anthropics/claude-code/issues/106556
- Hacker News, comment from a user who says they work on Claude Code, on the thread about background agent transcripts: https://news.ycombinator.com/item?id=50284699
- Arpit Bhayani on X, background agent status-line calls: https://x.com/arpit_bhayani/status/2116372735211565107
- Claude Code docs, manage costs (Background token usage): https://code.claude.com/docs/en/costs
- Claude Code docs, subagents (fork mode): https://code.claude.com/docs/en/sub-agents
- Claude Code docs, environment variables: https://code.claude.com/docs/en/env-vars
- Claude Code docs, monitoring usage (OpenTelemetry): https://code.claude.com/docs/en/monitoring-usage
- Claude Code docs, CLI reference (--debug-file): https://code.claude.com/docs/en/cli-reference
- Claude Code changelog (2.1.128 and 2.1.317 entries): https://code.claude.com/docs/en/changelog
Claude, Claude Code, Claude Agent SDK, Anthropic, Haiku, Opus, Max, T3 Code, GitHub, Hacker News, X, OpenTelemetry, Linux, macOS, tmux and other names belong to their owners. Names are used only to identify products and compatibility. Stack & Ship is not affiliated with or endorsed by any of them.