[BUG] `effortLevel: "high"` in settings.json but requests are sent at `low` — local terminal, no Remote Control; session transcript records `high`
What happens
~/.claude/settings.json contains "effortLevel": "high". The /effort picker also shows the slider at high. But the model reports receiving the lowest effort level on every request, and the behavior is consistent with that (shallow reasoning on a multi-file code-review task).
This is not a Remote Control session — the status line reads "session in this terminal only". So it differs from #87326 / #81950, which need a remote client attached, and it goes the other direction (high → low instead of low → medium/high).
Evidence
- Asked the model, across 5 consecutive turns, to report the effort parameter it received. All 5 answered
low, including a turn that was a deliberately hard task (cross-file bug audit with concurrency/idempotency reasoning). Task difficulty did not change the value, so this is not adaptive behavior.
- The session transcript (
~/.claude/projects/<project>/<session>.jsonl) records aneffortfield on each entry. For this session:
````
21 entries "effort":"high" (from session start until I manually ran /effort)
14 entries "effort":"low" (after I explicitly set low via /effort → Enter)
So the client's own record says high for the first 21 entries, while the model reported low for those same turns. The recorded value and the value actually sent disagree — which is the opposite of #81950 (label wrong, request right).
- After explicitly re-saving via
/effort(arrow to a level, press Enter), the next request matched the picker immediately. A value inherited fromsettings.jsonat startup does not seem to be what gets sent.
Ruled out
CLAUDE_CODE_EFFORT_LEVELis unset (checkedecho $CLAUDE_CODE_EFFORT_LEVELand shell rc files).- No
effortLevelin project.claude/settings.jsonor.claude/settings.local.json. - No managed settings.
Expected
The effort level from settings.json (and what /effort displays) is what the request actually carries.
Why it matters
Nothing in the UI hints that the effective level is lower than configured. Users just experience the model as "worse than it used to be" and cannot diagnose it — the transcript even says high. A read-only way to print the effective level (as suggested in #81950) would have made this obvious.
Environment
- Claude Code 2.1.240, terminal CLI (not desktop app, not VS Code)
- macOS 26.5.2, Apple Silicon
- Model: Fable 5
- Related: #87326, #81950, #39724