-
-
Notifications
You must be signed in to change notification settings - Fork 79.2k
Bug: Explicit thinkingLevel session override permanently reset to 'off' after each agent turn #87740
Copy link
Copy link
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Bug: Explicit
thinkingLevelsession override is permanently reset tooffafter each agent turnOpenClaw version: 2026.5.27
Model:
github-copilot/claude-sonnet-4.6Channel: WebChat (Control UI) and custom Voice UI (both affected equally)
Description
When an explicit
thinkingLeveloverride is set on a session viasessions.patch(e.g."high"), the value is correctly stored and displayed in the UI. However, as soon as the agent completes a turn (i.e. the first reply bubble appears), thethinkingLevelin the session store is permanently overwritten with"off".This does not happen when
thinkingLevelis left unset (i.e.null/"inherited"). In that case, the resolved level is correctly inherited from the agent/provider default (in our case"high"for Claude Sonnet 4.6 via GitHub Copilot), and the behavior persists across turns without issue.Steps to reproduce
github-copilot/claude-sonnet-4.6thinkingLevelto"high"viasessions.patch(or via the thinking selector in the Control UI)highoffthinkingLevelis now"off"in the storeRepeat: setting
thinkingLevelback to"high"and sending another prompt resets it to"off"again every single time.Using
"inherited"(i.e.null/ no override) works correctly and persists.Root cause (traced in source)
In
get-reply-DuA7xbHV.js, around the thinking-level resolution and fallback block:The fallback path is triggered because
isThinkingLevelSupportedreturnsfalseforlevel: "high"withgithub-copilot/claude-sonnet-4.6at runtime — even though the provider plugin'sresolveThinkingProfileclearly includes{ id: "high" }in its levels array (confirmed ingithub-copilot/index.js).The result is that the fallback resolves to
"off"and is written back into the persistent session store, silently destroying the user's explicit override on every turn.Expected behavior
sessions.patch { thinkingLevel: "high" }should persist across turnsAdditional context
"inherited"(no override /null) works correctly — the resolved level is"high"via provider default and is never mutated"high"as a supported level forclaude-sonnet-4.6, so the runtimeisThinkingLevelSupportedcheck appears to be disagreeing with the plugin's own profile declarationv2026.4.22and persists throughv2026.5.27