Claude Code sends full agent transcripts to itself every 30 seconds
Each check-in was meant to write a one-line status update, but it was burning as much as a fifth of all requests before anyone noticed.
Claude Code, Anthropic's coding tool, has been quietly checking in on itself. This matters because you run background agents constantly, so it touches your own costs and privacy. Every roughly 30 seconds, for each agent working in the background, Claude Code sends that agent's entire conversation back to its own model. That model is usually Opus, Anthropic's most capable and most expensive one. It asks the model to describe its last action in 3 to 5 words. The answer only updates one line of text in the agent status panel. It never reaches your conversation or the model actually doing the work.
A developer named DRIM caught it. He read Claude Code's OpenTelemetry export, a detailed log of every request it makes and why. Before anyone noticed, these check-in requests made up 16.4 percent of Claude Code's own estimated spend. The main conversation itself was only 15.7 percent. The check-ins also made up 19.7 percent of all requests, about one in five. Ninety-six percent of that spend ran on Opus. Each request sent roughly 9,000 tokens (chunks of text, about three quarters of a word each) in, just to get one token of answer back out. A separate GitHub thread, issue 86879, collected four independent measurements putting the waste at 18 to 26 percent. This was not a one-off bug report. The feature has run by default since version 2.1.232, released in August 2026, and there is no setting to turn it off. On a pay-per-use plan this shows up as real dollars. On a flat subscription like yours, what you lose instead is rate-limit headroom, the room you have before you hit your usage cap.
The fix is a free script called no-agent-summary.js, about 80 lines long, written by a developer going by Flamerix AI under the MIT license. It is a preload script: a small file loaded into the program before it starts. It is built for Bun, the JavaScript runtime Claude Code runs on. The script wraps the timer functions the status check uses. When a timer's code contains a specific marker left over from the summary feature, the script swaps in a dummy timer that never fires. Every other timer keeps working normally. The trick works even though Claude Code ships its code pre-compiled, because a quirk of JavaScript still lets the script read a timer's original source text to check for that marker. After installing it, the same share of requests dropped from 16 to 19 percent down to zero within two days.
Installing it takes three steps. Download the script, set an environment variable called BUN_OPTIONS to preload it, and restart Claude Code's background daemon, the helper process that keeps your sessions and background agents running. Scripted or scheduled runs need the same fix, not just the interactive app. The author tested it only on Linux, on Claude Code versions 2.1.257 to 2.1.312, and says macOS and Windows are untested. On your Mac mini and MacBook, that means checking it works before you trust it. The fix is also fragile by design: it matches one specific string inside Claude Code's code. A future update that renames that string would silently bring the check-ins back with no warning.
The post hit Hacker News's front page with 415 points and 153 comments, a sign plenty of other people ran into the same cost surprise. The script includes its own way to verify it is working: point it at a log file, run a background agent for a minute, and the log should show the summary timer being suppressed while the agent's status panel stops updating.
Every ~30 seconds, for every background agent, Claude Code sends that agent's entire transcript to the agent's own model (usually Opus) and asks it to "describe your most recent action in 3-5 words".via Gist →