[BUG] Desktop Code tab: /effort run in a session changes the effort used, but the effort selector keeps showing the old level
Environment: Claude desktop app, Code tab, on Windows 11 with the session running in WSL2; Claude Code 2.1.296.
Steps
- Start a Code tab session and choose an effort in the effort selector (e.g. Extra /
xhigh). - In the session, run
/effort high. It reports "Set effort level to high (this session only)". - Send another message, then look at the selector.
Actual: the requests run at the new level, but the selector still shows the old one. The session transcript (~/.claude/projects/<project>/<session>.jsonl) records each request's effort: "perTurnEffort": "xhigh" before the command, then "high" on every request after it. The selector never moved from Extra.
Expected: the selector follows the session's effort, as the model selector does after /model, so it shows what the next request will actually use.
Why it matters: the selector is the one place a user checks the effort they are paying for. When /effort comes from anywhere other than the selector (typed, a skill, or a plugin running /effort), the label is wrong for the rest of the session. Changing the selector afterwards does take effect, which makes the stale label easy to miss.
Related: #95638 is the reverse direction (the selector's change not reaching the session). Both point to the selector and the session holding effort separately.