[BUG] /model command does not persist "max" effort level to settings.json
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The /model command persists effortLevel to ~/.claude/settings.json for low, medium, and high, but does not write when set to max. The value in settings.json remains whatever it was before selecting max.
This breaks any tooling that reads effortLevel from settings.json — such as a custom status line script — since there's no other source for the current effort level (the status line input JSON also omits effortLevel).
What Should Happen?
Selecting max effort via /model should write "effortLevel": "max" to ~/.claude/settings.json, consistent with how low/medium/high are persisted.
Error Messages/Logs
# After selecting max via /model:
$ cat ~/.claude/settings.json | jq .effortLevel
"medium" # ← still the previous value, should be "max"
Steps to Reproduce
- Run /model and select any effort level (e.g. medium) — confirm ~/.claude/settings.json now has
"effortLevel": "medium"
- Run /model and select max effort
- Check ~/.claude/settings.json — effortLevel is still "medium", not "max"
- Repeat with other levels (low, high) to confirm they DO persist correctly — only max is skipped
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.81
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Warp
Additional Information
The status line JSON input (piped to the status line script) also does not include an effortLevel field, so the only way for external tooling to detect the current effort level is via settings.json. This makes the missing write for max effort a complete blind spot — there is no workaround.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗