#Reasoning/thinking leaking even with thinking=off

1 messages · Page 1 of 1 (latest)

half orchid
#

My openclaw instance seems to be behaving weirdly for the last days. It's exposing reasoning and going on tangents instead of silently replying with the final answer. Happening both on gpt-5.4 and gemma-4-31b-it. It's also mixing sometimes entries from HEARTBEAT.md with the current session in Telegram.

An example of exposed reasoning and getting stuck:
"
Wait, I'll just do it.

Actually, I'll just do it.

Actually, I'll read first.

Actually, I'll just do it.

Wait, I'll just do it.

Actually, I'll read first.

Wait, I'll just do it.

Actually, I'll just do it.

Actually, I'll read first.
"

"'ll use write or edit? No, I should append. edit is for exact text replacement. I'll read the file first to see where to append. Actually, I'll just use exec with cat >> or use the edit tool if I can target the end. Better: read first.

Wait, the edit tool is for replacements. For appending, I should probably read and then write the whole thing or use a shell command. I'll read the file first.

Wait, the tool write overwrites. I'll use exec to append to the file to be safe and efficient."

"Wait, I'll check if there's a specific style in DREAMS.md first.

Actually, I'll just read the last few lines.

Actually, I'll just do it. The user wants it noted.

One more thing: the prompt was "Sigue el protocolo HEARTBEAT" in previous turns, but this is a direct request for a journal entry. I'll act on it.

Wait, should I check AgentMail, Calendar, Weather since this is around the time of a heartbeat? No, the user explicitly asked for the dream journal."

brittle meteorBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

wary gullBOT
#

First: can you paste openclaw --version? Version matters here — this sounds very likely tied to recent streaming/heartbeat behavior, not just the model.

I’d separate this into two issues:

1. “Reasoning” / internal chatter leaking

In the affected chat, try:

/verbose off
/trace off
/reasoning off
/think off

Also check your config for these being enabled globally/per-agent:

#
agents: {
  defaults: {
    verboseDefault: "off",
    reasoningDefault: "off",
    thinkingDefault: "off",
  },
}

Important nuance: thinking=off controls provider reasoning budget, but /reasoning off controls whether OpenClaw shows reasoning/debug output.

Docs: https://docs.openclaw.ai/tools/thinking

2. Telegram showing “I’ll read/write/check…” while working

If this is appearing in the live edited preview bubble, disable tool-progress previews:

#
channels: {
  telegram: {
    streaming: {
      mode: "partial",
      preview: {
        toolProgress: false,
      },
    },
  },
}

Or go fully final-answer-only:

#
channels: {
  telegram: {
    streaming: {
      mode: "off",
    },
  },
}

Then run:

openclaw doctor --fix
openclaw gateway restart
#

isolatedSession: true is the big one if heartbeat turns are polluting the same session history.

Docs: https://docs.openclaw.ai/gateway/heartbeat#heartbeatmd-optional

If it still leaks after that, please paste openclaw --version plus openclaw status --all — redacted output is safe — and this may be worth filing as a GitHub issue.

half orchid
#

shadark@Ubuntu:~$ openclaw --version
OpenClaw 2026.4.24 (cbcfdf6)

wary gullBOT
#

Yep — 2026.4.24 is a strong clue. I’d update first; current npm stable is 2026.4.26, and there are multiple relevant fixes after cbcfdf6 around Telegram streaming, session thinking defaults, Gemma reasoning stripping, and heartbeat/session bleed.

Try:

openclaw update --channel stable
openclaw doctor --fix
openclaw gateway restart
openclaw --version

Then in the affected Telegram chat, start clean:

/reasoning off
/verbose off
#
/trace off
/think off
/new

If Telegram still shows “I’ll read/write/check…” while generating, also set:

channels: {
  telegram: {
    streaming: {
      mode: "off"
    }
  }
}
#

or keep previews but hide progress chatter:

channels: {
  telegram: {
    streaming: {
      mode: "partial",
      preview: { toolProgress: false }
    }
  }
}

If it still reproduces on 2026.4.26, please paste openclaw status --all and a small config excerpt for agents.defaults, the affected agent, and channels.telegram. That would be GitHub-issue-worthy.

half orchid
#

I did update and openclaw doctor --fix but now:

[29/04/2026 10:53] Shadark: /reasoning off
[29/04/2026 10:53] Kairos: ⚙️ Reasoning visibility disabled.
[29/04/2026 10:53] Shadark: /verbose off
[29/04/2026 10:53] Kairos: ⚙️ Verbose logging disabled.
[29/04/2026 10:53] Shadark: /trace off
[29/04/2026 10:53] Kairos: ❌ /trace is restricted to owners and gateway clients with operator.admin scope.
[29/04/2026 10:53] Shadark: /think off
[29/04/2026 10:53] Kairos: Thinking disabled.
[29/04/2026 10:53] Shadark: /new
[29/04/2026 10:55] Kairos: One of "input" or "previous_response_id"or 'prompt'or 'conversation_id' must be provided.

wary gullBOT
#

Ah, okay — that new error is a separate bug, and it matches fixes that landed after 2026.4.26 on main.

The /trace off error is expected if you’re not owner/admin; ignore that unless trace was enabled globally in config.

For the /new failure, workaround for now: don’t send bare /new. Send it with a tiny first prompt so the model call isn’t empty:

/new Reply with exactly: OK

Then continue normally after the OK.

If you’re comfortable running dev bits, this should be fixed there:

openclaw update --channel dev
#
openclaw gateway restart

Otherwise wait for the next stable release. The relevant behavior is basically “bare /new / /reset should acknowledge/reset without sending an empty model request.”

half orchid
#

I did all that but the model leaked temporarily tool calls in its message (deleted afterwards):

Working…
• command run python3 inline script (heredoc) (in ~/.openclaw/workspace), 'python3 - <<'PY' import os, json, glob, datetime session_dir=os.path.expanduser('~/.openclaw/agents/main/sessions') for…'
• tool: exec
• exec run python3 inline script (heredoc) (in ~/.openclaw/workspace), 'python3 - <<'PY' import os, json, glob, datetime session_dir=os.path.expanduser('~/.openclaw/agents/main/sessions') for…'
• 06e9574e-f960-453e-a68e-4760a0ebcc55.jsonl 2026-04-29T06:03:17.108Z 1ac8641a-4415-4e06-9e93-f310fa9d888c.jsonl 2026-04-29T00:03:19.244Z b6a20927-d225-4283-99eb-a4c0ae3146b2.jsonl 2026-04-29T06:03:19.154Z c836fb2a-5c88-4a7b-afd2-ab7ad289ab12.jsonl 2026-04-29T06:03:19.695Z c8ade8b3-d22b-4d91-b3d0-6d8…
• tool: exec
• exec run python3 inline script (heredoc) (in ~/.openclaw/workspace), 'python3 - <<'PY' import os, json, glob, datetime session_dir=os.path.expanduser('~/.openclaw/agents/main/sessions') for…'
• 06e9574e-f960-453e-a68e-4760a0ebcc55.jsonl 2026-04-29T06:03:17.108Z 1ac8641a-4415-4e06-9e93-f310fa9d888c.jsonl 2026-04-29T00:03:19.244Z b6a20927-d225-4283-99eb-a4c0ae3146b2.jsonl 2026-04-29T06:03:19.154Z c836fb2a-5c88-4a7b-afd2-ab7ad289ab12.jsonl 2026-04-29T06:03:19.695Z c8ade8b3-d22b-4d91-b3d0-6d8…
• exec ✓

wary gullBOT
#

Yeah, that screenshot is Telegram preview tool-progress, not the final answer. The “deleted afterwards” part confirms it’s the live draft bubble being edited/cleaned up.

But it should not show commands/output if you asked for final-only. That means the Telegram streaming config probably didn’t apply to the active Telegram account.

Please check:

openclaw config get channels.telegram.streaming --json
openclaw config get channels.telegram.accounts --json

Then force final-only delivery:

openclaw config set channels.telegram.streaming.mode off
openclaw gateway restart
#

If you use named Telegram accounts, set it on that account too:

openclaw config set channels.telegram.accounts.<accountId>.streaming.mode off
openclaw gateway restart

Alternative if you still want answer previews but no tool chatter:

openclaw config set channels.telegram.streaming.preview.toolProgress false --strict-json
openclaw gateway restart

If streaming.mode is definitely off for the active account and it still briefly shows Working… • exec..., that’s a bug. Please file it with:

#
openclaw --version
openclaw config get channels.telegram.streaming --json
openclaw config get channels.telegram.accounts --json

and the example you pasted.