How an Idle Agent Burned 50M Tokens a Day – and How to Fix It

An OpenClaw user on Reddit reported their LLM API usage spiking from 11M to 51M tokens per day over six days, totaling 196M tokens — most of it wasted by an idle agent. The cause: a forgotten agent called "main" was being poked by OpenClaw's heartbeat every 30 minutes, loading a 225k-token session history just to reply "HEARTBEAT_OK".
The Leak: cacheRead Dominance
Two numbers stood out from the transcript analysis:
- 95% of tokens were cacheRead — the model re-reading old conversation history instead of doing new work.
- 56% of all tokens came from a single agent named "main" that wasn't even in use anymore.
The heartbeat ran 48 times daily, each time loading a months-old session. Even an empty HEARTBEAT.md — intended to disable the heartbeat — failed to stop it in that build.
The Fix: Two Steps
- Clear the bloated session. Wipe the session file for the idle agent. The next heartbeat starts from a blank slate. Only remove junk sessions, keep real DM/chat sessions.
- Prevent refilling. A one-time clear won't stick because the heartbeat keeps adding to the session. Use config changes:
- Set
heartbeat every: "0m"to turn off heartbeat entirely if the agent does nothing, or - Set
isolatedSession: trueandlightContext: trueso each heartbeat runs on a fresh, tiny context (~2-5k tokens) instead of the full history (~100k+).
- Set
Bonus: other agents were reusing one ever-growing session because a session ID was not actually starting fresh in that build. Reset session between jobs to keep each run clean.
Takeaways
- Idle agents are not free — a heartbeat on a fat session can cost more than real work.
- If most tokens are
cacheRead, you're paying to re-read history, not for new work. - Verify that "off" is actually off — empty
HEARTBEAT.mddidn't stop the heartbeat in the reported build. - Read the per-turn transcripts; token usage is recorded there per input/output/cacheRead.
The user cut their token usage by more than half with these config changes.
📖 Read the full source: r/openclaw
👀 See Also

OpenClaw's Gateway and Skills: Moving Beyond Chat to Automated Execution
OpenClaw's Gateway connects channels like Telegram and WhatsApp to skills that execute real-world actions such as running tests, calling APIs, and managing files, with cron jobs enabling scheduled background automation.

Accessing USB Webcams in WSL2 for Local Motion Detection
A developer shares how to use usbipd-win to pass USB webcams from Windows to WSL2, enabling local motion detection with OpenCV without cloud dependencies.

Automating OAuth Token Refresh for Bots Using Claude Code
A Reddit user shares a method to prevent OAuth token expiration by configuring Claude Code to automatically refresh tokens every 8 hours, keeping bots running continuously without manual intervention.

Trellis 2 Successfully Running on ROCm 7.11 with AMD RX 9070 XT
A developer got Trellis 2 working on Linux Mint 22.3 with an AMD RX 9070 XT using ROCm 7.11, fixing two key issues: ROCm instability with high N tensors and a broken hipMemcpy2D in CuMesh.