Skip to content

Reasoning effort can't be restored after selecting "off" on Claude Opus 4.7 (gateway rejects every non-off level with "use off") #980

Description

@karkarl

Summary

On github-copilot/claude-opus-4.7, once a session's reasoning effort (thinkingLevel) is set to off, there is no way to switch it back to any reasoning level. Every non-off value the UI sends (medium, max, …) is rejected by the gateway with ... is not supported for github-copilot/claude-opus-4.7 (use off). The model appeared to reason before off was selected, so this reads as a one-way trap.

This is independent of the WinUI chat-composer redesign — it reproduces on the latest tip of main and is a gateway/model-metadata + session-state issue, not a composer-layout issue. Filing separately so it isn't bundled into the composer PR.

Environment

  • App: OpenClaw Tray (WinUI 3), latest main
  • Gateway: setup-managed local WSL gateway, server version 2026.6.11
  • Model: github-copilot/claude-opus-4.7 (provider github-copilot, api anthropic-messages)

Steps to reproduce

  1. Configure a session on github-copilot/claude-opus-4.7.
  2. Open the reasoning-effort picker and select off (e.g. while exploring the UI).
  3. Try to switch the reasoning effort back to medium (or any other level).

Expected

The user can restore the model's previous/default reasoning behavior (either a working reasoning level, or a clearly-labeled "default"/"on" state).

Actual

The switch silently fails; the session stays on off. The gateway rejects the patch:

sessions.patch failed: thinkingLevel "medium" is not supported for github-copilot/claude-opus-4.7 (use off)
sessions.patch failed: thinkingLevel "max"    is not supported for github-copilot/claude-opus-4.7 (use off)

There is no exposed path back to the model's default reasoning state — the only gateway-accepted explicit value is off.

Evidence: contradictory model metadata

models.list reports this model as non-reasoning yet simultaneously advertises a full effort list:

{
  "id": "claude-opus-4.7",
  "name": "Claude Opus 4.7",
  "provider": "github-copilot",
  "api": "anthropic-messages",
  "contextWindow": 128000,
  "reasoning": false,
  "compat": { "supportedReasoningEfforts": ["low","medium","high","xhigh","max"] },
  "available": true
}

So reasoning: false and compat.supportedReasoningEfforts: [low,medium,high,xhigh,max] disagree, and the sessions.patch validator only accepts off. A UI cannot trust the advertised effort list to decide what is selectable.

Analysis / open questions

Two candidate root causes (need gateway-side confirmation):

  1. One-way "off" trap. The model's default (unset thinkingLevel) may be a working reasoning state, and setting an explicit off leaves no way to return to that default — there's no default/unset/on value the UI can send, and off is the only accepted explicit value. If so, the gateway and/or UI needs a way to clear/restore the default reasoning state.
  2. Stale/incorrect reasoning metadata for Copilot-hosted Anthropic models — if Opus 4.7 truly supports reasoning through Copilot, reasoning: false (and the patch validator's use off) is wrong and should be corrected so real efforts are accepted.

Impact

  • Users can permanently (per session) lose reasoning on a model after a single stray toggle, with no visible recovery path.
  • The contradictory reasoning vs supportedReasoningEfforts metadata makes it impossible for the client to present an accurate, gate-correct reasoning picker.

Notes for the client-side follow-up

  • A partial client-side mitigation was prototyped (gate the reasoning picker on the reasoning flag and disable unsupported efforts instead of letting them silently fail). That improves honesty but does not solve the core problem — restoring reasoning after off — because the gateway still accepts only off for this model. The real fix depends on resolving the open questions above (a "default/restore" path and/or correct metadata).

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal priority bug or improvement with limited blast radius.clawsweeper:current-main-reproClawSweeper found a high-confidence current-main issue reproduction.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:auth-providerThis issue is about auth, provider routing, model choice, or SecretRef resolution.impact:session-stateThis issue is about session, memory, transcript, context, or agent state drift.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦀 challenger crabExceptional issue quality: high-confidence current-main reproduction and actionable evidence.

    Type

    No type

    Fields

    Priority

    Medium

    Projects

    Status
    UX

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions