Problem
When using a model with reasoning: true in the catalog (e.g., claude-opus-4-6 which inherits from the claude-opus-4-5 template), resolveReasoningDefault() auto-enables reasoning ("on") for new sessions. This causes the model's thinking/reasoning block to be included in outbound messages on channels like Discord, prefixed with Reasoning:\n.
There is no config-level way to override this. The agents.defaults schema validates with .strict() and only recognizes thinkingDefault, verboseDefault, and elevatedDefault β but not reasoningDefault.
Current behavior
// dispatch line ~100301
if (no explicit directive && no session reasoning level && resolvedReasoningLevel === "off" && thinking is off)
resolvedReasoningLevel = await modelState.resolveDefaultReasoningLevel();
// β returns "on" for models with reasoning: true in catalog
The isReasoning block-reply filter works correctly for streaming block replies, but when reasoning is "on" and there's no onBlockReply callback, the reasoning text gets inlined into the assistant message text (line ~51797).
Affected channels
Discord (confirmed), likely any channel where reasoning text leaks into the final message.
Expected behavior
Allow agents.defaults.reasoningDefault: "off" (or per-agent reasoningDefault) to override the catalog-derived default reasoning level, consistent with how thinkingDefault, verboseDefault, and elevatedDefault work.
Workaround
- Manually set
reasoningLevel: "off" on each session entry in the session store JSON
- Patch
resolveReasoningDefault() in dist to always return "off"
Both are fragile β session fix doesn't prevent new sessions from auto-enabling, and dist patch is overwritten on upgrade.
Environment
- OpenClaw 2026.3.11
- Model: anthropic/claude-opus-4-6 (inherits reasoning: true from opus-4-5 template)
- Channel: Discord
π€ Generated with Claude Code
Problem
When using a model with
reasoning: truein the catalog (e.g.,claude-opus-4-6which inherits from theclaude-opus-4-5template),resolveReasoningDefault()auto-enables reasoning ("on") for new sessions. This causes the model's thinking/reasoning block to be included in outbound messages on channels like Discord, prefixed withReasoning:\n.There is no config-level way to override this. The
agents.defaultsschema validates with.strict()and only recognizesthinkingDefault,verboseDefault, andelevatedDefaultβ but notreasoningDefault.Current behavior
The
isReasoningblock-reply filter works correctly for streaming block replies, but when reasoning is "on" and there's noonBlockReplycallback, the reasoning text gets inlined into the assistant message text (line ~51797).Affected channels
Discord (confirmed), likely any channel where reasoning text leaks into the final message.
Expected behavior
Allow
agents.defaults.reasoningDefault: "off"(or per-agentreasoningDefault) to override the catalog-derived default reasoning level, consistent with howthinkingDefault,verboseDefault, andelevatedDefaultwork.Workaround
reasoningLevel: "off"on each session entry in the session store JSONresolveReasoningDefault()in dist to always return"off"Both are fragile β session fix doesn't prevent new sessions from auto-enabling, and dist patch is overwritten on upgrade.
Environment
π€ Generated with Claude Code