Claude Code regularly sends each background agent’s transcript to its model
TL;DR Highlight
Disabling Claude Code's 30-second agent status summaries removed 19.7% of API requests in one team's telemetry
Who Should Read
A developer running background subagents in Claude Code whose subscription limits drain faster than expected
Core Mechanics
- It resends the full transcript every 30 seconds
- For each background agent, Claude Code sends the entire transcript to the agent's own model (usually Opus) about every 30 seconds.
- The only purpose is a 3-5 word status line in the agents panel.
- The answer never goes back to the model or your conversation.
- No off switch, and on by default since 2.1.232
- Since 2.1.232 (August 2026) it is on by default for interactive background agents.
- The SDK option agentProgressSummaries has no effect when set to false.
- The interval comes from a server flag, is clamped to 30-240 s, and the default is already the minimum.
- 16.4% of spend in the author's telemetry
- query_source=agent_summary was 16.4% of all Claude Code spend, versus 15.7% for the main conversation.
- It was 19.7% of all API requests, about 1 in 5.
- 96% of that spend was on Opus, with about 9,000 input tokens per output token.
- A setTimeout wrapper kills only the summary timer
- A Bun --preload script (about 70 lines) wraps the global setTimeout.
- If a callback's source contains a summarizer anchor like "[AgentSummary] Timer fired", it returns an inert handle.
- The binary is not modified, and all other timers pass through.
- With the hook: zero summary requests, frozen status line
- On the author's machine (2.1.301) agent_summary requests dropped to 0 and no other side query grew.
- Subagents and background agents run normally; only the panel status stops updating.
- An update can change the anchors and silently re-enable summaries, so verify after every update.
- Prompt cache makes it cheaper, not cheap
- About 98% of these calls re-read the transcript from cache.
- The roughly 2% hitting a cold cache carry over a third of the cost.
- These requests are not written to on-disk session logs, so only the OpenTelemetry export shows them.
Community Reactions
- Estimated 16% of spend from own transcripts
- A 20x Max user had Opus analyze the gist and estimate from the 30-second timer.
- They report $1,970 API-equivalent weekly spend and about $380 in hidden status calls, 16%.
- Reproduced at about 8% or less
- One commenter says it affects only subagents, not workflows.
- They say it is mostly cache reads, so short-context subagents cost little and long ones cost much more.
- Another commenter measured about 3% across everything and everyone.
- Debate over whether cache hits make it cheap
- Someone asked if cache hits make it cheap anyway.
- The reply was that 16.4% comes from Claude Code's own cost_usd estimate, and 1 in 5 requests adds up.
- Another commenter called the "15-20% of your tokens" claim unclear on its denominator.
- Opinion that model makers shouldn't own the harness
- Several commenters argued inference providers have no incentive to optimize token use.
- One says they decompile the binary to edit hardcoded system prompt instructions.
- Another shared a Windows runner for measuring the traffic.
How to Apply
- Measure agent_summary share in OTel today
- Enable OpenTelemetry export and group claude_code.api_request events by query_source.
- Compare agent_summary request share and cost_usd against the main conversation.
- If the share is small, skip the hook.
- Try the preload on a single session first
- Download the file with the gist's curl command and run claude daemon stop --any.
- Put --preload=<absolute path> in BUN_OPTIONS and launch claude.
- Use the = form, because the space form breaks bun subcommands like bun install.
- Verify with CC_AGENT_SUMMARY_LOG
- Set the log path and run a background subagent for a minute or two.
- Check for the line 'summary timer #1 suppressed'.
- A/B with CC_AGENT_SUMMARY_MODE=pass to confirm summaries return without the hook.
- Add a re-check after every update
- After each Claude Code upgrade, re-check the log and confirm agent_summary stays at 0 in OTel.
- Put BUN_OPTIONS in headless runs (-p), cron and CI too, and restart the daemon.
Try It
# Paste into a Linux terminal - install and verify commands from the original gist
curl -fsSL https://gist.githubusercontent.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce/raw/no-agent-summary.js -o ~/.local/share/no-agent-summary.js
claude daemon stop --any
# Check it loads: expect a 'preload active mode=off' line
BUN_OPTIONS="--preload=$HOME/.local/share/no-agent-summary.js" CC_AGENT_SUMMARY_LOG=/tmp/nas.log claude --version && cat /tmp/nas.log
# Run with the hook applied
BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload=$HOME/.local/share/no-agent-summary.js" claude
# Next: run a background subagent for 1-2 minutes and look for 'summary timer #1 suppressed' in /tmp/nas.logTerminology
Related Papers
Cross-request KV cache exposure in the GLM-5.3 Workers AI model (155 responses)
A KV pool smaller than the context window leaked other customers' data into 155 long-prompt responses.
Microsoft Decision-1: 9B Qwen Model Launch Explained
Microsoft's 9B Qwen-based model returns only per-option probabilities for routing and classification.
Cerebras Deploys Trillion-Parameter AI Models
Cerebras fits Kimi K3 (3T) across 59 wafers in a pipeline, serving 1000-2000+ tokens per second
A practical guide to AI image generation, from diffusion to agents
Testing image APIs showed you pay per canvas, and camera-style prompts beat describing the view
DeepInfer: High-performance inference framework for DeepSeek models
DeepSeek open-sourced DeepInfer, its production inference engine, under Apache-2.0.
Mercury 3: Diffusion at scale
Scaling diffusion LLM 40x gives Mercury 3: 4–8x faster than speed-tier models, similar quality
DeepSeek banned from U.S. federal civilian agencies under new DHS order
DHS order bans DeepSeek from U.S. federal civilian agency IT systems
Timestral: Mistral's time-series foundation models
A 209M time-series model ranks first on three benchmarks and runs on CPU.