Analyzes the user's OpenClaw config and rewrites it to minimize Anthropic API
spend. Works on YAML and JSON configs. Reads pricing tables from
references/pricing.md before starting.
Read references/pricing.md now. It contains current model rates and the
savings formulas used for estimates. Do this before any analysis.
Check these locations in order, stop at the first match:
./openclaw.yaml or ./openclaw.json in the current working directory~/.openclaw/config.yaml~/.openclaw/openclaw.yaml~/openclaw.yamlIf none found, ask the user to paste their config directly.
Work through every lever. Flag each issue with severity HIGH / MEDIUM / LOW.
Flag HIGH if any of these are missing for Anthropic models:
cacheRetention not set, or set to "none"Fix: Add cacheRetention: "long" for the primary model. Use "short" (5 min)
for agents that handle fast-changing context, "long" (1 hr) for everything else.
yaml
agents:
defaults:
models:
anthropic/claude-opus-4-6:
params:
cacheRetention: "long"
Note: caching is API-key only. Subscription setup-tokens do not honor it.
Flag HIGH if: a single model (especially Opus) is used for ALL agents with no per-agent overrides.
Fix: Route by task complexity:
Agent typeRecommended modelMain reasoning / planninganthropic/claude-opus-4-6Coding, editing, reviewanthropic/claude-sonnet-4-6Linting, search, triage, classifyanthropic/claude-haiku-4-5yaml
agents:
list:
- id: planner
params:
model: anthropic/claude-opus-4-6
- id: coder
params:
model: anthropic/claude-sonnet-4-6
- id: reviewer
params:
model: anthropic/claude-sonnet-4-6
- id: triage
params:
model: anthropic/claude-haiku-4-5
Flag MEDIUM if: thinking: "adaptive" or thinking: "high" is set as the
default for ALL agents, including simple ones.
Fix: Scope thinking: "adaptive" only to the primary reasoning agent.
Set thinking: "low" or omit for utility agents.
yaml
agents:
defaults:
models:
anthropic/claude-opus-4-6:
params:
thinking: "low" # default: low
list:
- id: planner
params:
thinking: "adaptive" # override only where needed
Flag MEDIUM if: context1m: true is set globally or for agents that
don't need it.
The 1M context beta header triggers surcharge pricing for Anthropic API calls. Most agents don't need it.
Fix: Remove context1m: true from the global defaults. Re-add only to
agents that demonstrably require >200K tokens of context.
Flag LOW if: fastMode is not enabled for Sonnet agents doing quick tasks.
Fix: Add fastMode: true to Sonnet model params for agents doing rapid
back-and-forth tasks (search, triage, review). This reduces latency and can
lower costs on high-frequency agents.
yaml
models:
anthropic/claude-sonnet-4-6:
params:
fastMode: true
cacheRetention: "long"
Rewrite the full config applying all fixes. Preserve every key the user had that is not being changed. Add comments above each changed block explaining what changed and why.
Format:
yaml
# COST OPTIMIZER — changed blocks annotated below
# Original: <what it was> → Optimized: <what it is now>
Before writing anything, show the user:
references/pricing.md
with assumed 500K tokens/day baselineExample output format:
text
Issues found (3):
[HIGH] No prompt caching — estimated +$340/mo at current usage
[HIGH] All agents using Opus — Haiku suitable for triage/review agents
[MEDIUM] thinking: adaptive set globally — limits to reasoning agent only
Estimated savings: ~$290/mo (68% reduction)
Before: ~$430/mo → After: ~$140/mo
Changed blocks:
+ agents.defaults.models.anthropic/claude-opus-4-6.params.cacheRetention: "long"
+ agents.list[triage].params.model: anthropic/claude-haiku-4-5
~ agents.list[planner].params.thinking: adaptive → low (default); kept adaptive on planner only
Ask the user: "Apply these changes to your config?"
openclaw gateway restart (or it will auto-restart if config
watch is enabled).cacheRetention has no effect
with subscription tokens — it's API-key only. Tell the user if their auth
config uses sk-ant-oat-* tokens.