[BUG] Option+T thinking toggle has no effect on Opus and Sonnet models — selecting "Disabled" is silently ignored (2.1.220)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
The session thinking toggle (Option+T on macOS, Alt+T on Windows/Linux) has no effect across the Opus and Sonnet families. The menu opens, accepts a selection, and closes as if the setting was applied — but nothing changes.
Verified step-by-step on Opus 5 (details under "Steps to Reproduce"). The same behaviour is present on the other Opus and Sonnet models I switched to during the session — the toggle never produced an observable difference on any of them.
After selecting Disabled:
- Claude still thinks. Responses are still preceded by a thinking phase, with the same latency as before the toggle was flipped. There is no observable difference between
EnabledandDisabled.
- The prompt input still reads
thinking with <effort> effort. WitheffortLevel: "medium"in my~/.claude/settings.json, the indicator readsthinking with medium effortboth before and after setting the toggle toDisabled. It is rendered from the effort level and appears to ignore the toggle state entirely.
- No feedback of any kind. No error, no warning, no "not supported" note. The selection is silently discarded.
The toggle is documented as a working control in model-config:
| Toggle for the current session | PressOption+Ton macOS orAlt+Ton Windows and Linux |
The only per-model exception documented in that section is for a single non-Opus, non-Sonnet model. No exception is listed for any Opus or Sonnet model. So on these models the toggle is documented to work, and does not.
The same applies to the other two documented controls: setting alwaysThinkingEnabled: false via /config, and MAX_THINKING_TOKENS=0, produce no observable change either. There is currently no way to turn thinking off on these models.
What Should Happen?
Selecting Disabled in the Option+T menu should disable thinking for the session: no thinking phase before responses, and the prompt-input indicator should stop advertising thinking with <effort> effort.
If disabling thinking is genuinely not possible on these models, the toggle must not silently accept the selection — it should be greyed out or refuse with a stated reason, and the docs should list every affected Opus and Sonnet model alongside the existing per-model exception.
Error Messages/Logs
# No error is produced — that is part of the problem.
# The session transcript records the effort level but no toggle state:
$ rg -o '"(thinking|thinkingMetadata|alwaysThinkingEnabled|effort[A-Za-z]*)"\s*:\s*[^,}]*' \
~/.claude/projects/<project>/<session>.jsonl | sort -u
"effort":"medium"
# Older versions logged "thinkingMetadata":{"level":"...","disabled":false,...}
# (see #13806). No such field is present in 2.1.220 transcripts.
Steps to Reproduce
- Run Claude Code 2.1.220 with Opus 5 selected (
/model→ Opus 5). - Confirm
~/.claude/settings.jsonhas"effortLevel": "medium"and that neitherMAX_THINKING_TOKENSnorCLAUDE_CODE_DISABLE_ADAPTIVE_THINKINGis set in the environment. - Ask any non-trivial question, e.g.
explain how this project's build is wired. Observe the thinking phase and note the response latency. - Press
Option+T. The menu appears:
```
Toggle thinking mode
Enable or disable thinking for this session.
> 1. Enabled ✓ Claude will think before responding
- Disabled Claude will respond without extended thinking
```
- Select
2. Disabledand press Enter. The menu closes with no error. - Look at the prompt input border — it still reads
thinking with medium effort. - Ask the same question from step 3 again.
Result: Claude still thinks before responding; latency is unchanged; the indicator still reads thinking with medium effort.
Expected: no thinking phase, and no thinking with ... indicator.
Reopening Option+T after step 7 shows the menu state, which is the only thing that changed.
- Switch to another Opus or Sonnet model via
/modeland repeat steps 4–7. The outcome is the same: the toggle is accepted and ignored.
Claude Model
Opus
Is this a regression?
I don't know
Claude Code Version
2.1.220 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Environment
| | |
| --- | --- |
| Claude Code | 2.1.220 |
| Models affected | Opus and Sonnet families; verified step-by-step on Opus 5 (claude-opus-5[1m]) |
| OS | macOS (Darwin 25.5.0), zsh |
| Settings | effortLevel: "medium" in ~/.claude/settings.json; alwaysThinkingEnabled not set |
| Env | MAX_THINKING_TOKENS unset, CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING unset |
Screenshot of the menu
Toggle thinking mode
Enable or disable thinking for this session.
> 1. Enabled ✓ Claude will think before responding
2. Disabled Claude will respond without extended thinking
Enter to confirm · Esc to cancel
Workaround
/effort low measurably reduces how often Claude thinks, but it is not the same as disabling it, and it is not discoverable from a menu titled "Toggle thinking mode".
Possibly related, not duplicates
- #13759 / #13793 / #13806 —
Tabthinking toggle not working in 2.0.67. Same class of failure on an earlier version and a different keybinding; #13806 shows the transcript still carried"thinkingMetadata":{"level":"high","disabled":false}while the user hadalwaysThinkingEnabled: false. - #31751 — effort indicator not reflecting effort raised by
ultrathink(closed as not planned). - #79798 —
alwaysThinkingEnablednot translated into the thinking request parameter on Opus 4.8.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗