VS Code extension ignores project-level model setting
Feature Request
The VS Code extension should respect per-project model selection, the same way the CLI does.
Current Behaviour
The claude CLI correctly reads the model from project-level .claude/settings.json:
{
"model": "haiku"
}
Opening claude in a terminal in that project directory uses haiku. Other projects use the global default from ~/.claude/settings.json.
The VS Code extension ignores this entirely. It only reads claudeCode.defaultModel from the global VS Code settings.json. There is no per-project model override.
What Was Tested
All of these were tested and none change the model for the extension:
.claude/settings.jsonin the project root with"model": "haiku"— extension ignores it.vscode/settings.jsonin the project root with"claudeCode.defaultModel": "haiku"— extension ignores workspace-level settings/modelcommand in the sidebar — works, but writes to the global VS Code settings.json, affecting all open workspaces
Expected Behaviour
The extension should follow the same hierarchy as the CLI:
.claude/settings.json (project — highest priority)
~/.claude/settings.json (user global — fallback)
claudeCode.defaultModel (VS Code setting — lowest priority fallback)
Or at minimum, respect VS Code's standard workspace settings mechanism (.vscode/settings.json overrides user settings).
Why This Matters
Users working across multiple projects need different models for different contexts — e.g. Opus for complex repos, Haiku for quick tasks. This works perfectly in the CLI but is impossible in the extension without manually running /model every time you switch windows (and that change is global, affecting other windows).
Environment
- Claude Code 2.1.70 (VSCodium extension on macOS)
- Also affects VS Code (same extension)
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗