It appears thay my openclaw has turned more into a chatbot than an actual work partner. I give it instructions, and then it responds like it's understood my request, but then doens't actually do anything. It used to sit it "typing" while it worked and wouldn't respond until it was done. Now it responds right away, and doens't do much work
#Openclaw not working like it used to
1 messages · Page 1 of 1 (latest)
Yeah, that usually means the run is ending at the “plan/commentary” stage instead of actually taking tool steps.
First, what does this show?
openclaw --version
openclaw status --all
openclaw models status
Paste those 3 outputs.
Most common causes I’ve seen for this are:
- the model/provider changed to something with weak tool calling, especially Ollama, LM Studio, or generic OpenAI-compatible
/v1backends - GPT-5/Codex is running without strict-agentic mode, so “I’ll do X” can get treated as success
- typing behavior changed, so it no longer shows progress as early
If you’re on GPT-5 or Codex, this is worth trying:
{
agents: {
defaults: {
embeddedPi: { executionContract: "strict-agentic" },
typingMode: "instant"
}
}
}
strict-agentic is specifically meant to stop plan-only turns and force act-or-block behavior.
https://docs.openclaw.ai/help/troubleshooting
https://docs.openclaw.ai/providers/openai#strict-agentic-gpt-mode
https://docs.openclaw.ai/concepts/typing-indicators
If you’re using Ollama, also tell me whether your baseUrl ends with /v1, because that one is a very common “became a chatbot” cause.
🦞 OpenClaw 2026.4.15 (041266a) — Your terminal just grew claws—type something and let the bot pinch the busywork.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : openai-codex/gpt-5.3-codex
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (1): openai-codex/gpt-5.3-codex
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (1): openai-codex (1)
- openai-codex effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=1, token=0, api_key=0) | openai-codex:default=OAuth
OAuth/token status
- openai-codex usage: 5h 100% left ⏱3h 59m · Week 100% left ⏱6d 7h
- openai-codex:default ok expires in 9d
Nice, this narrows it down a lot.
A couple things jump out:
- your Codex auth looks healthy, so this probably is not an auth/login issue
- you’re hard-pinned to
openai-codex/gpt-5.3-codex(Configured models (1)means your allowlist only contains that one model) 2026.4.15already has the strict-agentic feature, but it’s opt-in
So the most likely issue is: OpenClaw is accepting plan-y / commentary turns instead of forcing the next real action.
Can you paste these too:
openclaw status --all
openclaw config get agents.defaults.embeddedPi.executionContract
openclaw config get agents.defaults.typingMode
If executionContract is unset, I’d try this in your config, then restart the gateway:
{
agents: {
defaults: {
embeddedPi: { executionContract: "strict-agentic" },
typingMode: "instant"
}
}
}
Why these two:
strict-agentic= stops “I understand, here’s my plan” from counting as successtypingMode: "instant"= restores the early “working…” feel
Also, since you’re pinned to only gpt-5.3-codex, I’d strongly consider moving off that hard pin if /model list shows a newer Codex option.
Docs:
https://docs.openclaw.ai/providers/openai#strict-agentic-gpt-mode
https://docs.openclaw.ai/concepts/typing-indicators
https://docs.openclaw.ai/help/faq
https://docs.openclaw.ai/concepts/models
If you want, paste openclaw status --all next and I’ll help read it.
🦞 OpenClaw 2026.4.15 (041266a) — I've read more man pages than any human should—so you don't have to.
Config path not found: agents.defaults.embeddedPi.executionContract
🦞 OpenClaw 2026.4.15 (041266a) — Somewhere between 'hello world' and 'oh god what have I built.'
Config path not found: agents.defaults.typingMode
Yep, that confirms both settings are just unset.
I’d do this first:
openclaw config set agents.defaults.embeddedPi.executionContract strict-agentic
openclaw config set agents.defaults.typingMode instant
openclaw gateway restart
Then retry one of the same prompts that used to work.
Important bit: typingMode is mostly the visual fix, strict-agentic is the behavior fix.
If it still feels chatty after that, paste these next:
openclaw status --all
openclaw config get agents.defaults.models
I’m asking for agents.defaults.models because you also look hard-pinned to a single Codex model, and that can absolutely make the agent feel worse if that one model/runtime is having an off day.
Docs:
https://docs.openclaw.ai/providers/openai#strict-agentic-gpt-mode
https://docs.openclaw.ai/concepts/typing-indicators
https://docs.openclaw.ai/help/troubleshooting
If you want, send the before/after behavior once you try those 3 commands and I’ll help from there.
Gateway connection details:
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /Users/clawdbot/.openclaw/openclaw.json
Bind: loopback
âś“ Config: /Users/clawdbot/.openclaw/openclaw.json
âś“ Secret diagnostics (0)
âś“ Restart sentinel: none
Gateway last log line:
2026-04-21T09:41:12.142-06:00 [agent/embedded] empty response detected: runId=02c5f76f-6ddc-4c13-a580-6f3da9608d91 sessionId=5eb5511a-0746-48f9-8322-a320daf61f6d provider=openai-codex/gpt-5.3-codex — retrying 1/1 with visible-answer continuation
! Port 18789
Port 18789 is already in use.
- pid 89532 clawdbot: openclaw-gateway (127.0.0.1:18789)
- Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
! Tailscale: off · unknown
✓ Skills: 13 eligible · 0 missing · /Users/clawdbot/.openclaw/workspace
âś“ Plugin compatibility (none)
That log line is the smoking gun:
[agent/embedded] empty response detected ... provider=openai-codex/gpt-5.3-codex
So OpenClaw is trying to work, but that model/runtime is giving it an empty turn, and OpenClaw is going into its recovery path.
A few quick notes:
- the
Port 18789 is already in usebit is not the problem here, it just means your gateway is already running - the real clue is the empty response from
openai-codex/gpt-5.3-codex - since you’re pinned to that one model with no fallbacks, it has nowhere better to go
I’d do these next:
openclaw config get agents.defaults.embeddedPi.executionContract
openclaw config get agents.defaults.typingMode
openclaw models list --provider openai-codex
You want the first two to come back as:
strict-agenticinstant
If they don’t, set them again and restart:
openclaw config set agents.defaults.embeddedPi.executionContract strict-agentic
openclaw config set agents.defaults.typingMode instant
openclaw gateway restart
My honest bet: the bigger issue now is the hard pin to gpt-5.3-codex. If models list shows a newer Codex model on your account, I’d try that next.
If you want the fastest proof, do this:
openclaw logs --follow
Then send one prompt that usually fails and paste the lines around it. If it keeps showing empty response detected or similar, we’ve basically confirmed it’s the model/runtime path, not your channel or gateway.
Docs:
https://docs.openclaw.ai/help/troubleshooting
https://docs.openclaw.ai/concepts/models
What's a better set up than hardpinning to one model?
A better setup is usually:
- one primary
- one same-provider fallback
- one cross-provider fallback if you have another provider configured
So, not “allow exactly one model”, but “allow a small trusted set and order them.”
Shape-wise, that looks like:
{
agents: {
defaults: {
model: {
primary: "provider-a/model-main",
fallbacks: [
"provider-a/model-backup",
"provider-b/model-backup"
]
},
models: {
"provider-a/model-main": {},
"provider-a/model-backup": {},
"provider-b/model-backup": {}
}
}
}
}
My recommendation for your case:
- if you only have Codex auth right now, allow 2 Codex models, not 1
- if you also have another provider available, add 1 cross-provider fallback
- keep the allowlist small, like 2 to 4 models total
What I would avoid:
- exactly 1 allowed model
- 0 fallbacks
- a giant model catalog with no clear primary
Use /model list or:
openclaw models list
to see what your current install/account actually exposes, then wire the best 2 to 4 into primary + fallbacks + models.
Docs:
https://docs.openclaw.ai/concepts/models
https://docs.openclaw.ai/concepts/model-failover
If you paste your current agents.defaults.model and agents.defaults.models, I can help turn it into a better failover setup.
This is what I added
openai-codex/gpt-5.4 text+image 1025k no yes default,configured
openai-codex/gpt-5.3-codex text+image 266k no yes fallback#1,configured
openai/o4-mini text+image 195k no no fallback#2,configured
Yep, this is way better.
I like this shape:
openai-codex/gpt-5.4as primary, goodopenai-codex/gpt-5.3-codexas fallback #1, reasonableopenai/o4-minias fallback #2, fine as a last-resort backup
My only caveat: I would treat o4-mini as an emergency fallback, not the model I’d expect to feel most agentic for real work.
So if it were me, I’d stop tweaking the model stack for a minute and test again with:
strict-agenticenabledtypingMode: instant- this new fallback chain
If it still feels chatbot-y after that, the next move is logs, not more model shuffling:
openclaw logs --follow
Then trigger one of the prompts that usually fails.
So, short version: yes, this setup is much healthier than a one-model hard pin.
Docs:
https://docs.openclaw.ai/concepts/models
https://docs.openclaw.ai/concepts/model-failover
If you test it once more and paste the new log snippet, I can help tell whether the fallback chain is actually kicking in.
Here are logs from the last try
09:58:55-06:00 error [tools] message failed: guildId required raw_params={"action":"channel-list","channel":"discord","includeArchived":true,"limit":200}
09:58:55-06:00 error [tools] message failed: guildId required raw_params={"action":"channel-list","channel":"discord","includeArchived":true,"limit":200}
10:00:09-06:00 error [tools] read failed: ENOENT: no such file or directory, access '/Users/clawdbot/.openclaw/workspace/memory/2026-04-21.md' raw_params={"path":"/Users/clawdbot/.openclaw/workspace/memory/2026-04-21.md"}
10:00:09-06:00 error [tools] read failed: ENOENT: no such file or directory, access '/Users/clawdbot/.openclaw/workspace/memory/2026-04-21.md' raw_params={"path":"/Users/clawdbot/.openclaw/workspace/memory/2026-04-21.md"}
10:00:09-06:00 error [tools] read failed: ENOENT: no such file or directory, access '/Users/clawdbot/.openclaw/workspace/memory/2026-04-20.md' raw_params={"path":"/Users/clawdbot/.openclaw/workspace/memory/2026-04-20.md"}
10:00:09-06:00 error [tools] read failed: ENOENT: no such file or directory, access '/Users/clawdbot/.openclaw/workspace/memory/2026-04-20.md' raw_params={"path":"/Users/clawdbot/.openclaw/workspace/memory/2026-04-20.md"}
It definitely wasn't chatty. Actually hasn't responsded yet.
These logs are actually pretty telling.
What looks harmless:
- the missing
memory/2026-04-21.mdandmemory/2026-04-20.mdreads
That usually just means it probed for daily memory files and they don’t exist.
What looks not harmless:
message failed: guildId requiredonaction:"channel-list"
That means the agent is trying to use the Discord message tool for channel listing, and it’s doing it wrong. If your task had nothing to do with Discord channel admin/listing, that’s a bad sign. It can absolutely derail a run.
So my next guess is: this is now less “bad model” and more “tool wandering / bad tool choice”.
I’d do this next:
openclaw config get tools.profile
openclaw config get tools.allow
openclaw config get tools.deny
If message is effectively allowed and you don’t actually need proactive Discord actions, I’d do a quick test with the normal coding profile:
openclaw config set tools.profile coding
openclaw gateway restart
Also, after changing model/tool config, start a fresh session (/new or a new chat) before retesting. Old session state can keep weird behavior around.
Then run: