OpenClaw Token Bill: Find the Leak and Cut Costs
OpenClaw resends its instructions on every turn, so small habits add up. How to measure token use, move routine jobs to cheaper models or plain scripts, handle email, voice and photos locally, and set a hard spending stop, step by step.
On the 23rd of October 2026, a post by Fl1xyBaby on r/openclaw explained how a 12-year-old office PC now handles email checks, OCR and voice messages for a small Telegram bot without spending a single token. By the 1st of November it was the second most upvoted post of the month on the subreddit, according to Reddit's top-of-the-month list. The idea behind it is simple: if ordinary software solved a job years ago, run that software and hand the AI model only the result.
OpenClaw is a free, open source personal AI agent: it runs on a computer or server, talks to you through apps such as Telegram, and uses an AI model of your choice to do jobs for you. Every time it thinks, it pays that model in tokens, the small chunks of text (roughly four characters each) that providers bill by. This guide shows how to see where your tokens go and how to cut the bill, step by step. It follows the OpenClaw documentation as read on the 1st of November 2026. If you want to estimate a monthly bill first, our OpenClaw cost guide and what an AI agent costs per month cover the sums. This page is the hands-on part.
What you need
- An OpenClaw agent on a recent 2026.10 release. Older releases may show different menus.
- Access to its Control UI, the web dashboard where you chat with the agent and change settings.
- For the self-hosted steps, a terminal on the machine that runs OpenClaw.
On OneClick, every plan is bring your own key (BYOK): you connect your own model account, and the provider bills you directly. We add no margin on model usage, so every saving below lands in your own pocket.
Step 1: See where the tokens go
Measure before you change anything. OpenClaw has three built-in views.
- In any chat, type
/status. It shows the current model, how full the context is, and the tokens and estimated cost of the last reply. The context is everything the model reads on a turn. - Type
/usage fullto add a small usage footer to every reply, or/usage costfor a local cost summary./usage offremoves the footer. - Type
/context detailto see how big each part of the prompt is: your agent's files, the tool list, the skills list and the history.
On OneClick: open the Control UI and go to Usage. It breaks tokens and estimated cost down by model, agent, channel and day.
Self-hosted: run openclaw gateway usage-cost --days 7 for the same summary in a terminal, or openclaw status --usage to see how much of each provider's quota is left.
Two things to keep in mind. These figures are estimates from OpenClaw's own logs, so your provider's invoice is the final word. And if you sign in with a subscription, such as ChatGPT Plus, OpenClaw shows tokens only, because the plan has no per-message price.
Step 2: Why one short message can cost thousands of tokens
OpenClaw rebuilds its instructions on every turn and sends them again. According to the token use page, each turn can include:
- The list of tools and skills the agent may use. A skill is a packaged ability, such as reading a calendar, and each one adds its description to every prompt.
- The agent's workspace files: AGENTS.md, SOUL.md, IDENTITY.md, USER.md and MEMORY.md. OpenClaw caps them, but together they can reach 60,000 characters.
- The conversation so far, plus the output of every tool it ran, such as a web page it read.
- Any images, shrunk to 1,200 pixels on the longest side by default.
That is why a short "hi" in a long chat can be expensive. At the end of October, a user on r/openclaw ran OpenClaw's browser on 100 live web tasks. OpenClaw finished the most tasks of the five setups and also cost the most. According to the poster, each OpenClaw call re-read about 72,000 tokens, against 43,000 for Claude Code and 4,500 for pi.
The cheapest fix comes first: start a new chat for a new topic. Typing /new or /reset gets an answer from OpenClaw itself without calling the model, so it costs nothing. Use /compact when you want to keep a long chat going: it replaces the old messages with a short summary.
Step 3: Put a cheaper model on the routine jobs
Most messages do not need the strongest model. OpenClaw lets you pick a model per job. Our best models guide compares prices, so this step covers only where to set them.
On OneClick: open Model Setup. Signing in with a subscription you already pay for (ChatGPT Plus or higher, or SuperGrok through xAI) draws on that plan's limits instead of a per-token bill. Or choose a lower-priced default model with an API key.
Self-hosted: set the defaults in openclaw.json, OpenClaw's settings file.
{
agents: {
defaults: {
model: { primary: "provider/cheap-model", fallbacks: ["provider/fallback-model"] },
utilityModel: "provider/cheap-model", // titles, recaps
subagents: { model: "provider/cheap-model" },
compaction: { model: "provider/cheap-model" },
thinkingDefault: "low",
},
},
}
A few terms. Fallbacks are the models OpenClaw tries if the first one fails, so keep an expensive model there only if you accept its price. Sub-agents are helper agents the main agent starts for side tasks; without a setting they use the main model. Compaction is the summary step from Step 2. Thinking is extra hidden reasoning the model does before answering, and it is billed too. For one chat only, type /model <name> -s. The model names above are placeholders; use the exact names from openclaw models list.
Step 4: Stop paying the model to check if anything happened
The most common leak is a scheduled check that wakes the model every few minutes to find nothing. A comment under the r/openclaw post put it plainly: asking the model "is anything due?" every few minutes is the same mistake as having it poll the inbox.
Old heartbeat settings. The old heartbeat, a timed check-in, is retired in current releases. Running openclaw doctor --fix turns any heartbeat you had into an ordinary automation (a scheduled job). Then run openclaw automations list --all to see every job, including ones you forgot.
Give each job a light setup. For each automation, set a cheaper model, low thinking and a light context, which skips the workspace files:
openclaw automations edit <job-id> --model provider/cheap-model --thinking low --light-context
The automation payloads page says routine jobs such as summaries, triage and status checks run well on a lighter model.
Let a script do the checking. OpenClaw can run a script on a schedule with no model call at all. This is called a command payload.
openclaw automations create "*/15 * * * *" \
--name "Inbox check" \
--command "scripts/check-inbox.sh" \
--announce --channel telegram --to "<your chat id>"
Whatever the script prints is sent to your chat. If it prints only NO_REPLY, nothing is sent. If it fails, you get a failure alert. The documentation's own advice: anything the model works out from scratch costs the same time and tokens on every run, so keep the model for judgement and move the repeatable parts into code. You do not need to write the script yourself. As another commenter on the post noted, you can ask your OpenClaw agent to write it.
On OneClick: ask your agent in chat to write the check as a script and schedule it as a command automation, then ask it to list your automations so you can check the schedule, model and thinking level of each one.
Self-hosted: use the commands above. Creating command jobs needs admin rights on the Gateway, the background service that runs OpenClaw.
Step 5: Email that wakes the agent only when it matters
The original poster's first fix was email: a small Python script checks the inbox over IMAP (the standard way mail apps read a mailbox), filters spam, strips the formatting, and passes plain text to the model only when something needs doing.
OpenClaw now ships its own IMAP email trigger. It watches a mailbox and starts a separate session for each new email from senders you allow. That session can run on a restricted reader agent with its own low-cost model and no access to your files. Waiting costs no tokens; only real mail does.
On OneClick: ask your agent to set up the IMAP trigger with a separate reader agent and a cheap model, and list the senders it should accept.
Self-hosted: enable the bundled imap plugin and add a mail_reader agent in openclaw.json, following the example on the documentation page. Keep allowedSenders short, because every allowed email is a model run.
Step 6: Voice notes, photos and spoken replies without a paid model
Voice notes. OpenClaw can turn voice messages into text with whisper.cpp or sherpa-onnx, free speech recognition programs that run on your own machine. One catch from the audio documentation: if an audio-capable provider key, for example OpenAI, is configured, it always wins over the local program. To force local, set the local program as an explicit audio model, as shown on that page. Self-hosted: check which one is used with openclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min info; after a voice note, /status shows the backend.
Photos and scans. OCR (optical character recognition) reads the text in an image. Sending a photo to a vision model costs image tokens. The original poster installed Tesseract, a free OCR program, and reported about three seconds per image on the old PC. OpenClaw's media understanding settings accept a command-line entry, so a setup like this should pass only the text to the model (check on your version):
{
tools: {
media: {
image: { enabled: true },
models: [
{ type: "cli", capabilities: ["image"], command: "tesseract", args: ["{{AttachmentPath}}", "-"] },
],
},
},
}
Commenters noted that Tesseract struggles with messy phone scans and large daily batches of PDFs, so test it on your own documents. A simpler saving is to lower agents.defaults.imageMaxDimensionPx for screenshot-heavy work.
Spoken replies. Text-to-speech (TTS) turns replies into audio. OpenClaw's TTS settings include microsoft, which uses Microsoft's online neural voices with no API key, and tts-local-cli, which runs any speech program on your machine. The poster used Piper and found its German voices more natural than the paid option. A Piper entry may need a small wrapper script, so check on your version.
On OneClick: ask your agent to switch TTS to the microsoft provider. Local programs such as whisper.cpp, Tesseract or Piper need to be installed on the server first.
Step 7: Caching and pruning, the free settings
Prompt caching means the provider stores the unchanged start of your prompt and charges less to read it again. Pruning trims old tool output from long chats. The prompt caching page gives a cost-first baseline:
{
agents: {
defaults: {
models: { "anthropic/your-model": { params: { cacheRetention: "short" } } },
contextPruning: { mode: "cache-ttl" },
},
},
}
Also worth doing:
- Keep SOUL.md, AGENTS.md and MEMORY.md short. They are read on every turn.
- Switch off skills and connected tool servers you never use, since each adds to the prompt.
- Keep skill descriptions to one line.
Step 8: Set a hard stop
- Spending cap. Every major model provider lets you set a monthly limit in its billing dashboard. Set one before anything else.
- Check fallbacks. A cheap primary model with an expensive fallback can quietly move your traffic to the expensive one when the cheap one is busy.
- Recheck after updates. After an update, run
/context detailagain and compare. If an update goes wrong, see OpenClaw update failed. - Background memory. Dreaming, OpenClaw's background memory tidy-up, also uses the model. Our dreaming guide shows how to switch it off.
Optional: the same ideas on Hermes Agent
Hermes Agent, Nous Research's open source agent, has the same cost pattern, and its users found similar fixes in October:
- Routing through LiteLLM, a proxy that sends each request to a chosen model. The poster reported about 50% fewer tokens.
- A wiki-style memory in place of one large memory file. The poster reported up to three times faster replies on four times fewer tokens.
- A plugin that compacts context with no model call, in 0.05 seconds, according to its author.
Frequently asked questions
Why does OpenClaw use so many tokens? Every turn resends its instructions, tool list, workspace files and the chat so far. Long chats and many skills make each turn bigger.
Does /new cost tokens? No. OpenClaw answers /new and /reset itself, without calling the model.
Can I run OpenClaw for free with a local model? Yes, with a model on your own hardware, but it needs enough memory and a model that handles tool calls well. The local models page and our best models guide explain the options.
Does OneClickClaw charge for tokens? No. Every plan is BYOK, so your provider bills you directly at its own rates.
Why did OpenClaw not use my local Whisper? A configured audio-capable provider key wins over local programs. Set the local program as an explicit audio model to force it.
Related guides
Related guides
- OpenClaw dreaming: what it does and how to switch it offOpenClaw dreaming tidies your agent's memory every night at 3 in the morning. A beginner guide with a screenshot for every step: what it does, what it costs and where the switch is.
- OpenClaw update failed: what to check and how to roll backWhen an OpenClaw update stops halfway, the program has usually put the old version back on its own before you even read the message. Your job is to read what it wrote down, fix the one thing it named and run the update again. This guide walks through that in order, using the official OpenClaw documentation and the project's public issue tracker, both read on the 6th of October 2026.
- Best AI Models for OpenClaw and Hermes Agent in 2026OpenClaw and Hermes Agent both need an AI model to think with. This guide lists twelve ways to connect one, by API key, by subscription sign-in or on your own machine with Ollama, with what each costs in a month.
- Talk to Hermes and OpenClaw by Voice, Free, with FU FlowTalk to Hermes Agent and OpenClaw by voice with FU Flow, a free open source dictation app for your PC. Eleven steps, each with a screenshot.
