Startup banner shows model-default effort ("high") instead of the configured `effortLevel` from settings.json

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 25, 2026

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

  1. Set in ~/.claude/settings.json:

``json
{
"model": "claude-opus-5",
"effortLevel": "medium"
}
``

  1. Start a new session.
  2. Banner reads:

``
Claude Code v2.1.219
Opus 5 with high effort · Claude Max
`
→ claims
high, which is the Opus 5 default, not the configured medium`.

  1. Run /effort → slider cursor sits on medium (correct).
  2. 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 effortLevel in project .claude/settings.json / settings.local.json
  • No CLAUDE_CODE_EFFORT_LEVEL set 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

View original on GitHub ↗