I found a small but very real r/openclaw thread recently: 14 upvotes, 29 comments, and a painfully familiar question.
Why did an OpenClaw agent that looked basically idle overnight still torch the budget?
The best answer from the thread was not exotic.
It was heartbeats.
More specifically: heartbeats that keep resending a fat conversation history back through the model.
That means your agent can look asleep while still paying for context replay over and over.
If you run OpenClaw with a long-lived thread, this is probably the first thing to inspect.
The actual failure mode
A lot of people assume token burn comes from obvious work:
generating lots of code
browser automation
long reasoning chains
multi-step planning
Sometimes yes.
But the thread kept converging on a more boring answer: long sessions plus frequent heartbeats.
A simplified loop looks like this:
heartbeat -> send current state + prior conversation -> model responds -> wait -> repeat
Enter fullscreen mode
Exit fullscreen mode
If…