"Fresh Mac Mini M4 install, OpenClaw 2026.5.7, Anthropic API key (sk-ant-api03 format), $45 credit. Getting stopReason=stop payloads=0 on every model — Opus 4.7 and Sonnet 4.6. Tried TUI, web UI and Telegram. All fail identically. openclaw models status shows key loaded correctly. Just no responce at all and its also using tokens. Any help?
#New install Issue
1 messages · Page 1 of 1 (latest)
That symptom is useful: stopReason=stop payloads=0 means the model run is completing but OpenClaw ended up with an empty assistant message. Since TUI/web/Telegram all do the same thing, this is almost certainly not a channel delivery issue.
Please don’t keep retrying a ton — empty turns can still burn input tokens.
Quick split test:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-6","max_tokens":64,"messages":[{"role":"user","content":"Reply with exactly: hello"}]}'
If that returns normal content, Anthropic/key/credits are fine and we need OpenClaw logs/config around the run. Please paste:
openclaw status --all
openclaw logs --follow
Then send one tiny test message and copy the log lines around empty response detected, incomplete turn detected, provider=anthropic, or the runId. Tokens should be redacted by the status report, but still don’t paste the API key.
Also try one brand-new session/thread once after that; if an old session transcript got into a weird empty-assistant state, fresh session helps separate that from provider/runtime behavior.
Docs for the diagnostics path: https://docs.openclaw.ai/help/faq and https://docs.openclaw.ai/gateway/troubleshooting 🦞
where do i enter the split test. newbie here so could let me know step by step?
Yep — no worries. Do this on the Mac Mini in Terminal.
-
Open Terminal
- Press
Cmd + Space - type
Terminal - press Enter
- Press
-
Paste this first, then press Enter:
read -s ANTHROPIC_API_KEY
-
It will look like nothing is happening. Paste your Anthropic API key, then press Enter.
- The key will not show on screen. That’s normal.
-
Now paste this whole command and press Enter:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-6","max_tokens":64,"messages":[{"role":"user","content":"Reply with exactly: hello"}]}'
- You should get a JSON response. If you see something like:
"text":"hello"
then Anthropic itself is working, and the problem is inside OpenClaw’s runtime/config/session path.
If you get an error instead, paste the error here — but do not paste your API key. 🦞
{"model":"claude-sonnet-4-6","id":"msg_01VQGwEk9N7bZg4MJJim2HKk","type":"message","role":"assistant","content":[{"type":"text","text":"hello"}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":12,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard","inference_geo":"global"}}%
Perfect — that proves your Anthropic key, credits, and network path are OK. So the bug is on the OpenClaw side: it’s calling the model, spending tokens, but OpenClaw is receiving/recording an empty assistant turn.
Next step: grab the OpenClaw logs around one failed message.
In Terminal, run:
openclaw logs --follow
Leave that window open.
Then send one short message to OpenClaw from wherever you normally use it, like:
say hello
After it fails, go back to Terminal and copy the lines around the failure. Look especially for lines containing any of these:
empty response detected
incomplete turn detected
stopReason=stop payloads=0
provider=anthropic
runId=
Paste those log lines here. Don’t worry if there’s a lot — just avoid pasting secrets/API keys. The logs/status tools usually redact them, but better safe than sorry. 🦞
warn agent/embedded {"subsystem":"agent/embedded"} empty response retries exhausted: runId=c7a75102-5104-4303-a68b-a3936972664b sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa provider=anthropic/claude-sonnet-4-6 attempts=1/1 — surfacing incomplete-turn error
20:08:49+00:00 warn agent/embedded {"subsystem":"agent/embedded"} incomplete turn detected: runId=c7a75102-5104-4303-a68b-a3936972664b sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa stopReason=stop payloads=0 — surfacing error to user
20:08:49+00:00 warn model-fallback/decision {"subsystem":"model-fallback/decision"} {"event":"model_fallback_decision","tags":["error_handling","model_fallback","candidate_failed"],"runId":"c7a75102-5104-4303-a68b-a3936972664b","sessionId":"ce6c03bf-b1b7-4b99-85f3-95ea141545fa","lane":"main","decision":"candidate_failed","requestedProvider":"anthropic","requestedModel":"claude-sonnet-4-6","candidateProvider":"anthropic","candidateModel":"claude-sonnet-4-6","attempt":1,"total":1,"reason":"format","code":"incomplete_result","errorPreview":"anthropic/claude-sonnet-4-6 ended with an incomplete terminal response","errorHash":"sha256:f7accb6d21ef","fallbackStepType":"fallback_step","fallbackStepFromModel":"anthropic/claude-sonnet-4-6","fallbackStepFromFailureReason":"format","fallbackStepFromFailureDetail":"anthropic/claude-sonnet-4-6 ended with an incomplete terminal response","fallbackStepChainPosition":1,"fallbackStepFinalOutcome":"chain_exhausted","isPrimary":true,"requestedModelMatched":true,"fallbackConfigured":false} model fallback decision
Good, that log confirms it exactly: Anthropic is reachable, but OpenClaw is classifying the model result as an incomplete/empty terminal response.
Let’s isolate whether it’s the OpenClaw Anthropic transport or the higher-level agent/session harness.
In Terminal, run this:
openclaw infer model run --local --model anthropic/claude-sonnet-4-6 --prompt "Reply with exactly: hello" --json
Two outcomes:
- If this prints
hello→ the provider transport works, and the bug is likely in the agent/session layer or session state. - If this also returns empty/fails → the Anthropic provider handling in your OpenClaw install/config is the failing piece.
After that, also run:
openclaw status --all
Paste the output here. It should redact secrets automatically. This is enough evidence that if it still fails on 2026.5.7, it’s probably GitHub-issue-worthy rather than user error.
the amount of text is too much for the chat
Totally fair — don’t paste the whole thing.
Do this instead:
openclaw infer model run --local --model anthropic/claude-sonnet-4-6 --prompt "Reply with exactly: hello" --json > ~/openclaw-infer-test.txt
openclaw status --all > ~/openclaw-status.txt
Then either upload those two .txt files here, or paste just the short infer result first:
cat ~/openclaw-infer-test.txt
If even that is long, paste only whether you see hello anywhere in it:
grep -i "hello\|error\|stopReason\|payloads" ~/openclaw-infer-test.txt
The infer test result is the most important one right now.
alfred@Batcave ~ % openclaw infer model run --local --model anthropic/claude-sonnet-4-6 --prompt "Reply with exactly: hello" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "anthropic",
"model": "claude-sonnet-4-6",
"attempts": [],
"outputs": [
{
"text": "hello",
"mediaUrl": null
}
]
}
alfred@Batcave ~ %
Great, that narrows it down a lot:
- Anthropic direct
curlworks âś… - OpenClaw low-level
infer model runworks âś… - The failing part is the normal agent/session harness, not your key or Anthropic.
Try this quick reset path first:
- In Telegram/web/TUI, send this as its own message:
/new
- Then send this as its own message:
/think off
- Then test:
say exactly hello
If it still gives no response, run these in Terminal:
openclaw doctor
openclaw gateway restart
Then try /new + say exactly hello again.
If it still fails after that, this looks like a real OpenClaw bug in the agent harness for 2026.5.7. The useful evidence is already strong: direct Anthropic works, openclaw infer model run works, but agent runs end with stopReason=stop payloads=0 / incomplete_result.
For a small paste instead of huge logs, run:
openclaw status --all > ~/openclaw-status.txt
grep -Ei "version|agent|model|anthropic|error|warn|session|provider" ~/openclaw-status.txt | head -120
Paste that filtered output. If we can’t spot config weirdness there, I’d take those exact details to GitHub issues: https://github.com/openclaw/openclaw/issues
Embedded agent failed before reply: anthropic/claude-opus-4-7 ended with an incomplete terminal response
2026-05-10T20:46:00.274+01:00 [agent/embedded] empty response detected: runId=857f185e-ef45-4c8a-8ea9-6ef8ee741d96 sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa provider=anthropic/claude-opus-4-7 — retrying 1/1 with visible-answer continuation
2026-05-10T20:46:06.086+01:00 [agent/embedded] empty response retries exhausted: runId=857f185e-ef45-4c8a-8ea9-6ef8ee741d96 sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa provider=anthropic/claude-opus-4-7 attempts=1/1 — surfacing incomplete-turn error
2026-05-10T20:46:06.088+01:00 [agent/embedded] incomplete turn detected: runId=857f185e-ef45-4c8a-8ea9-6ef8ee741d96 sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa stopReason=stop payloads=0 — surfacing error to user
2026-05-10T20:46:06.105+01:00 [model-fallback/decision] model fallback decision: decision=candidate_failed requested=anthropic/claude-opus-4-7 candidate=anthropic/claude-opus-4-7 reason=format next=none detail=anthropic/claude-opus-4-7 ended with an incomplete terminal response
Embedded agent failed before reply: anthropic/claude-opus-4-7 ended with an incomplete terminal response
2026-05-10T20:46:48.628+01:00 [agent/embedded] empty response detected: runId=5c7c92b4-ccbc-4739-b301-72db092c21d0 sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa provider=anthropic/claude-sonnet-4-6 — retrying 1/1 with visible-answer continuation
2026-05-10T21:20:52.880+01:00 [agent/embedded] empty response detected: runId=a7e1db31-99e3-4578-8bc6-603cd50a3ae9 sessionId=7214667e-6ec7-4cfa-9c8f-963bdf40324d provider=anthropic/claude-sonnet-4-6 — retrying 1/1 with visible-answer continuation
2026-05-10T21:20:55.780+01:00 [agent/embedded] empty response retries exhausted: runId=a7e1db31-99e3-4578-8bc6-603cd50a3ae9 sessionId=7214667e-6ec7-4cfa-9c8f-963bdf40324d provider=anthropic/claude-sonnet-4-6 attempts=1/1 — surfacing incomplete-turn error
2026-05-10T21:20:55.782+01:00 [agent/embedded] incomplete turn detected: runId=a7e1db31-99e3-4578-8bc6-603cd50a3ae9 sessionId=7214667e-6ec7-4cfa-9c8f-963bdf40324d stopReason=stop payloads=0 — surfacing error to user
2026-05-10T21:20:55.788+01:00 [model-fallback/decision] model fallback decision: decision=candidate_failed requested=anthropic/claude-sonnet-4-6 candidate=anthropic/claude-sonnet-4-6 reason=format next=anthropic/claude-opus-4-7 detail=anthropic/claude-sonnet-4-6 ended with an incomplete terminal response
2026-05-10T21:20:57.395+01:00 [agent/embedded] empty response detected: runId=a7e1db31-99e3-4578-8bc6-603cd50a3ae9 sessionId=7214667e-6ec7-4cfa-9c8f-963bdf40324d provider=anthropic/claude-opus-4-7 — retrying 1/1 with visible-answer continuation
This is now very likely the agent harness + Claude “thinking” path, not Anthropic auth. OpenClaw docs say Claude 4.6 defaults to adaptive thinking when no explicit thinking level is set, and your low-level non-agent test works.
Let’s force thinking off globally and test the actual agent path:
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
Then run this Terminal test:
openclaw agent --agent main --local --model anthropic/claude-sonnet-4-6 --thinking off --message "Reply with exactly: hello" --json
If that prints hello, try your TUI/Telegram again after sending:
/new
then:
say exactly hello
If the openclaw agent --local ... --thinking off command still fails with payloads=0, I’d stop burning tokens and file this as a bug with exactly this evidence:
- direct Anthropic curl returns
hello openclaw infer model run --local ...returnshelloopenclaw agent --local ... --thinking offfails withstopReason=stop payloads=0- version:
2026.5.7
Issue link: https://github.com/openclaw/openclaw/issues
2026-05-10T21:21:00.139+01:00 [agent/embedded] empty response retries exhausted: runId=a7e1db31-99e3-4578-8bc6-603cd50a3ae9 sessionId=7214667e-6ec7-4cfa-9c8f-963bdf40324d provider=anthropic/claude-opus-4-7 attempts=1/1 — surfacing incomplete-turn error
2026-05-10T21:21:00.141+01:00 [agent/embedded] incomplete turn detected: runId=a7e1db31-99e3-4578-8bc6-603cd50a3ae9 sessionId=7214667e-6ec7-4cfa-9c8f-963bdf40324d stopReason=stop payloads=0 — surfacing error to user
2026-05-10T21:21:00.155+01:00 [model-fallback/decision] model fallback decision: decision=candidate_failed requested=anthropic/claude-sonnet-4-6 candidate=anthropic/claude-opus-4-7 reason=format next=none detail=anthropic/claude-opus-4-7 ended with an incomplete terminal response
Embedded agent failed before reply: All models failed (2): anthropic/claude-sonnet-4-6: anthropic/claude-sonnet-4-6 ended with an incomplete terminal response (format) | anthropic/claude-opus-4-7: anthropic/claude-opus-4-7 ended with an incomplete terminal response (format) | anthropic/claude-opus-4-7 ended with an incomplete terminal response
2026-05-10T21:21:34.469+01:00 [gateway] security warning: dangerous config flags enabled: gateway.controlUi.allowInsecureAuth=true. Run openclaw security audit.
2026-05-10T21:22:18.570+01:00 [agent/embedded] empty response detected: runId=424420e1-b85d-40a9-b5f8-3246f206a9e3 sessionId=dfdb7925-943b-4d20-b938-90cb341eb846 provider=anthropic/claude-opus-4-7 — retrying 1/1 with visible-answer continuation
2026-05-10T21:22:20.177+01:00 [agent/embedded] empty response retries exhausted: runId=424420e1-b85d-40a9-b5f8-3246f206a9e3 sessionId=dfdb7925-943b-4d20-b938-90cb341eb846 provider=anthropic/claude-opus-4-7 attempts=1/1 — surfacing incomplete-turn error
2026-05-10T21:22:20.179+01:00 [agent/embedded] incomplete turn detected: runId=424420e1-b85d-40a9-b5f8-3246f206a9e3 sessionId=dfdb7925-943b-4d20-b938-90cb341eb846 stopReason=stop payloads=0 — surfacing error to user
2026-05-10T21:22:20.195+01:00 [model-fallback/decision] model fallback decision: decision=candidate_failed requested=anthropic/claude-opus-4-7 candidate=anthropic/claude-opus-4-7 reason=format next=none detail=anthropic/claude-opus-4-7 ended with an incomplete terminal response
Embedded agent failed before reply: anthropic/claude-opus-4-7 ended with an incomplete terminal response
2026-05-10T21:20:36.129+01:00 [ws] ⇄ res ✓ models.list 66ms conn=96a4f503…0e6c id=0c630e62…5446
2026-05-10T21:20:36.132+01:00 [ws] ⇄ res ✓ sessions.list 67ms conn=96a4f503…0e6c id=20996481…a8d0
2026-05-10T21:21:35.430+01:00 [telegram] [default] starting provider (@Alfredpennyworth26bot)
2026-05-10T21:21:35.839+01:00 [ws] ⇄ res ✓ sessions.subscribe 95ms conn=a8616489…401d id=02a82775…3a15
2026-05-10T21:21:35.930+01:00 [ws] ⇄ res ✓ models.list 90ms conn=a8616489…401d id=59b89a47…370d
2026-05-10T21:21:35.932+01:00 [ws] ⇄ res ✓ sessions.list 92ms conn=a8616489…401d id=950b452a…c50e
2026-05-10T21:21:55.342+01:00 [ws] ⇄ res ✓ sessions.list 72ms conn=a8616489…401d id=08163e10…4325
alfred@Batcave ~ %
Yep, that confirms the fallback is just burning another model too. I’d temporarily remove the Opus fallback while testing so each failed prompt doesn’t double-spend.
Run:
openclaw models set anthropic/claude-sonnet-4-6
openclaw gateway restart
Then one more very specific test:
openclaw agent --agent main --local --model anthropic/claude-sonnet-4-6 --thinking off --message "Reply with exactly: hello" --json
If that command still fails, you’ve got a clean minimal repro. At that point I’d stop retrying and file it as a bug, because we’ve proven:
- Anthropic API works directly
openclaw infer model runworks- normal OpenClaw agent turns fail with
stopReason=stop payloads=0 - fresh session + thinking off still fails
Please include the command above and the failing log lines in the issue: https://github.com/openclaw/openclaw/issues
One last thing that would help maintainers: run this and include the output too:
openclaw --version
openclaw config get agents.defaults.model --json
openclaw config get agents.defaults.thinkingDefault --json
That last security warning is separate from the model failure. It means your Control UI auth is in an insecure mode; fix it later, but it’s not why Anthropic replies are empty.
For the model issue: please stop normal retrying for now — the fallback is making each test spend Sonnet + Opus.
Run these exactly to remove the fallback and make the next test cheap/clean:
openclaw config set agents.defaults.model '{"primary":"anthropic/claude-sonnet-4-6","fallbacks":[]}' --strict-json
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
Then run this and paste only its output:
openclaw agent --agent main --local --model anthropic/claude-sonnet-4-6 --thinking off --message "Reply with exactly: hello" --json
If that command fails the same way, this is a clean OpenClaw 2026.5.7 bug repro. The important bit is that infer model run works but agent --local fails; that points at the agent harness, not your API key.
I think we’re looking at a stale/previous run or the config change didn’t land — that log is still using Opus 4.7, not the Sonnet-only test command.
Let’s verify the config instead of guessing. In Terminal, run:
openclaw config get agents.defaults.model --json
openclaw config get agents.defaults.thinkingDefault --json
If the first one still shows Opus or fallbacks, run this again:
openclaw config set agents.defaults.model '{"primary":"anthropic/claude-sonnet-4-6","fallbacks":[]}' --strict-json --replace
openclaw config set agents.defaults.thinkingDefault off
openclaw gateway restart
Then test with this exact command — not Telegram/TUI yet:
openclaw agent --agent main --local --model anthropic/claude-sonnet-4-6 --thinking off --message "Reply with exactly: hello" --json
Paste just that command’s output. If it still fails, we’re done testing and it’s a clean bug report; no need to burn more Opus tokens.
21:28:52 [agent/embedded] empty response detected: runId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa provider=anthropic/claude-sonnet-4-6 — retrying 1/1 with visible-answer continuation
21:28:54 [agent/embedded] empty response retries exhausted: runId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa provider=anthropic/claude-sonnet-4-6 attempts=1/1 — surfacing incomplete-turn error
21:28:54 [agent/embedded] incomplete turn detected: runId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa sessionId=ce6c03bf-b1b7-4b99-85f3-95ea141545fa stopReason=stop payloads=0 — surfacing error to user
21:28:54 [model-fallback/decision] model fallback decision: decision=candidate_failed requested=anthropic/claude-sonnet-4-6 candidate=anthropic/claude-sonnet-4-6 reason=format next=none detail=anthropic/claude-sonnet-4-6 ended with an incomplete terminal response
FailoverError: anthropic/claude-sonnet-4-6 ended with an incomplete terminal response
Yep — that’s the minimal repro. I’d stop testing now so you don’t burn more tokens.
This is not your Anthropic key/credits/network. We proved:
- direct Anthropic
curlreturnshello openclaw infer model run --local ...returnshelloopenclaw agent --local ...fails withstopReason=stop payloads=0- fresh session + thinking off + no fallback still fails
That points to an OpenClaw agent harness/runtime bug in 2026.5.7.
Please file a GitHub issue here: https://github.com/openclaw/openclaw/issues
Suggested title:
Anthropic agent turns return stopReason=stop payloads=0 on fresh 2026.5.7 install, while infer model run works
Include this summary:
Fresh Mac Mini M4 install, OpenClaw 2026.5.7, Anthropic API key with credits.
Direct Anthropic curl works and returns content.
openclaw infer model run --local --model anthropic/claude-sonnet-4-6 --prompt "Reply with exactly: hello" --json returns hello.
But openclaw agent --agent main --local --model anthropic/claude-sonnet-4-6 --thinking off --message "Reply with exactly: hello" --json fails.
Logs show: empty response detected → empty response retries exhausted → incomplete turn detected: stopReason=stop payloads=0 → FailoverError incomplete terminal response.
TUI, web UI, and Telegram all fail identically.
Temporary workaround: remove expensive fallbacks and avoid repeated prompts until there’s a fix, because the failed agent path still spends input tokens.
why is a clean install doing this and is more people having this problem? im thought this would be ahuge problem
You’re not crazy — I found an existing GitHub issue that matches your symptoms very closely: https://github.com/openclaw/openclaw/issues/79492
Same pattern:
- macOS / Apple Silicon
- OpenClaw 2026.5.7
- Anthropic key works with direct
curl openclaw infer model runworksopenclaw agentfails withpayloads=0 stopReason=stop
So yes, at least one other person has hit this. I agree with your instinct: if it affected every fresh install, the server would be on fire. My read is narrower: it’s probably a regression in the Anthropic agent runtime path under a specific combo, likely around the newer Claude 4.6/4.7 thinking/adaptive request shape. The simple infer path doesn’t send the same full agent harness payload, which is why it works.
For now, I’d avoid more Anthropic agent retries. Please add your details to that existing issue instead of opening a duplicate — your repro is valuable because it confirms it on a clean Mac Mini M4 install too.
Temporary options:
- use
openclaw infer model runonly for raw model tests, not normal assistant use - switch the main agent to a non-Anthropic provider if you have one configured