OpenClaw only chats and won't use tools after update
Fix OpenClaw when it suddenly stops reading files, patching code, or running commands after a recent update. The most common cause is `tools.profile: messaging` or a narrower tool policy.
Symptoms
- OpenClaw still responds in chat, but it will not:
- read local files
- write or patch files
- run shell commands
- You may see replies like:
I don't have the read tool availableagent has no exec/read/write tools, only message and sessionsCreate this file manually
- This often appears right after updating or reinstalling OpenClaw in early March 2026.
Cause
There are two common root causes that feel similar in practice:
- Tool policy change: your tool allowlist no longer includes filesystem/runtime tools.
- Tool-calling regression / non-tool-capable model: the model canât (or wonât) call tools reliably, so the agent âonly chatsâ even though tools are enabled.
Recent OpenClaw onboarding/default flows moved some installs to:
{
tools: {
profile: "messaging"
}
}
The messaging profile is safer, but it does not include the classic filesystem/runtime tools people expect for coding workflows.
That means the agent can still chat and manage sessions, but it may lose read, write, apply_patch, and exec by default.
This exact symptom cluster appears in recent GitHub reports such as:
#34810â agent reduced to âmessage and sessionsâ and no longer able to useexec/read/write#36968â user cannot read a file in the workspace because thereadtool is unavailable
Fix
0) Quick check: is this actually a tool-calling regression?
If you see the model printing tool calls as literal text (for example exec({...})) instead of actually running them, you are not debugging tools.profile.
Do this first:
- Switch to a known tool-capable model (and restart), or
- Pin/rollback to the last version that worked in your environment.
Related reading:
- /troubleshooting/solutions/model-outputs-historical-context-tool-call-text
- /guides/updating-and-migration
1) Check your current tools profile
Run:
openclaw config get tools
If you see something like:
{
"profile": "messaging"
}
that is very likely the reason.
2) Restore coding tools for local development
If this is your own machine and you want the classic coding-agent behavior, set:
{
tools: {
profile: "coding"
}
}
Edit ~/.openclaw/openclaw.json, save, then restart OpenClaw.
3) Or keep messaging and add only what you need
If you want a narrower policy, use:
{
tools: {
profile: "messaging",
allow: ["group:fs", "group:runtime"]
}
}
This restores most file and command workflows without fully broadening tool access.
4) Restart and test
openclaw doctor
openclaw gateway restart
openclaw health
Then test a simple task:
- read a known file in your workspace
- run
pwd - apply a small patch to a harmless file
Verify
The fix is working if OpenClaw can once again:
- read a file without asking you to paste it manually
- run a simple command instead of describing it
- patch a file directly instead of printing code for you to copy
If changing the profile did not fix it
Check these next:
tools.denymay still blockexecorread- an individual agent may override the global profile with
agents.list[].tools.profile - your gateway may be running from a different state dir or config path than the one you edited
Use:
openclaw config get tools.deny
openclaw gateway status
openclaw status --deep
If tools look enabled but tool runs still donât happen, check the model/runtime layer:
- Confirm the resolved model/provider is reachable:
openclaw models status --probe
- Try switching to a model you already have working (a model ref that passes probe):
openclaw config set agents.defaults.model.primary <provider/model>
openclaw gateway restart
- If this started immediately after an update, pin a known-good version (replace
<version>with the last working one):
npm i -g openclaw@<version>
openclaw gateway restart
Recommended next steps
- Full guide: /guides/openclaw-not-using-tools-after-update
- Config basics: /guides/openclaw-configuration
- Update safety: /guides/updating-and-migration