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 Integration with WhatsApp Cloud API
A developer has configured OpenClaw to communicate directly with WhatsApp using Meta's official Cloud API and documented the setup process to help others avoid scattered documentation.

Building a Fully Local Multi-Agent Assistant with OpenClaw and Ollama
A developer shares their stack for a fully local personal AI assistant using OpenClaw and Ollama, including models qwen3.5:35b-a3b, gemma3:4b, mistral:7b, MCP servers for Home Assistant and Gmail, and a Telegram Bot interface.

Practical techniques to reduce state drift in multi-step AI agents
A developer shares concrete methods to fix state drift in multi-agent workflows, including snapshot-based reads, append-only writes, and separating state from context. These approaches made runs reproducible and debugging traceable.

Guide: Deploying OpenClaw with llama.cpp on GEEKOM IT15 Mini PC
A technical walkthrough details switching OpenClaw from Ollama to llama.cpp to run a local Qwen3-8B model with Intel Arc GPU acceleration, covering configuration changes, manual server management, and troubleshooting common pitfalls.