Startup banner shows model-default effort ("high") instead of the configured `effortLevel` from settings.json
Description
The session startup banner reports the model's default effort level rather than the effort level actually configured in ~/.claude/settings.json. The configured value is applied correctly at runtime — only the banner is wrong.
This is the inverse of #40093 (banner correct, runtime wrong; closed/locked): here the runtime is correct and the banner is wrong.
Reproduction
- Set in
~/.claude/settings.json:
``json``
{
"model": "claude-opus-5",
"effortLevel": "medium"
}
- Start a new session.
- Banner reads:
```
Claude Code v2.1.219
Opus 5 with high effort · Claude Max
high
→ claims , which is the Opus 5 default, not the configured medium`.
- Run
/effort→ slider cursor sits on medium (correct). - The in-conversation thinking indicator also reads "thinking with medium effort" (correct).
Expected
Banner shows medium — the effective, configured effort level, consistent with /effort and the thinking indicator.
Actual
Banner shows high; the two other surfaces show medium. Two of three surfaces agree with settings.json, so the banner appears to render the model default before (or instead of) resolving user settings.
Impact
Mild but real: the banner is the first and most visible statement of session configuration, so a user who sets a lower effort level to control cost is told they are running at a higher one, and a user who is debugging effort has to know to distrust the banner. In my case it produced a genuine "did my effort silently change mid-session?" investigation — it hadn't; the banner had just never been right.
Environment
- Claude Code v2.1.219
- macOS (Darwin 25.5.0, arm64)
- Model: Opus 5, Claude Max
~/.claude/settings.json→"effortLevel": "medium"- No
effortLevelin project.claude/settings.json/settings.local.json - No
CLAUDE_CODE_EFFORT_LEVELset in the environment
Possibly related (open)
- #76201 — Web/Cowork shows wrong effort level ("High") instead of configured "xhigh" (same class of bug, different surface)
- #69178 — statusLine command receives "high" instead of "xhigh"
- #30726 — settings
effortLevel: "max"silently downgraded on UI interaction