[VS Code] Model/effort label ignores CLAUDE_CODE_EFFORT_LEVEL and shows the per-model effortLevel instead
Environment
- VS Code extension: anthropic.claude-code 2.1.285 (linux-x64, Remote-WSL)
- Claude Code CLI: 2.1.278
- VS Code: 1.140.0
- OS: Windows 11 + WSL2 Ubuntu (kernel 6.18.33.2-microsoft-standard-WSL2)
- Model: claude-opus-5-5
Settings
User settings (~/.claude/settings.json):
"modelSettings": {
"claude-opus-5-5": { "effortLevel": "high" }
}
Project settings (<repo>/.claude/settings.json):
"env": { "CLAUDE_CODE_EFFORT_LEVEL": "medium" },
"effortLevel": "medium"
Steps to reproduce
- Use the settings above.
- Open the project in VS Code and start a Claude Code session with Opus 5.5.
- Look at the model/effort label in the chat panel.
Expected: The label shows "Opus 5.5 Medium". CLAUDE_CODE_EFFORT_LEVEL takes precedence over /effort and over every effort setting.
Actual: The label shows "Opus 5.5 High", which is the user-level modelSettings value.
Evidence: Inside the session, CLAUDE_CODE_EFFORT_LEVEL is set to medium, so the env block is being applied. The session transcript (~/.claude/projects/<project>/<session>.jsonl) records "effort":"medium" and "perTurnEffort":"medium" on every turn (23 of 23), so requests really are sent at medium and only the label is wrong. /status doesn't show effort at all, so the label is the only effort indicator in the UI. extension.js references CLAUDE_CODE_EFFORT_LEVEL, but webview/index.js never does. So the label appears to be computed from the settings files without taking the env-var override into account.
Impact: The label shows the wrong effort level. A user who sets the env var to pin effort for a workspace sees a different level than the one that applies, and may change settings to "fix" it.
Related: #88860 (the mobile app's effort slider also doesn't show the session's actual effort level).
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗