[BUG] VSCode extension rewrites explicit model ID to alias, causing unintended 1M context resolution

Resolved 💬 3 comments Opened Mar 31, 2026 by digitalvir Closed Apr 4, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The VSCode extension silently normalizes the "model" field in ~/.claude/settings.json, replacing explicit model IDs with short aliases. This causes the wrong (and far more expensive) model to be used.

I set "model": "claude-opus-4-6" (the specific 200k Opus model). The extension rewrites it to "model": "opus". It then reads "opus", sees I'm on a Max plan, and resolves it to opus[1m] -- 5x the context window and cost I chose. This happens automatically with no prompt or notification. Setting it back triggers the same rewrite cycle.

What Should Happen?

The extension should preserve "claude-opus-4-6" exactly as written. Full model IDs are explicit and unambiguous -- normalizing them to short aliases is lossy and changes what model is actually used.

Error Messages/Logs

Steps to Reproduce

  1. Open ~/.claude/settings.json in any editor
  2. Set "model": "claude-opus-4-6" and save
  3. The VSCode extension detects the change and rewrites the file -- "model" is now "opus"
  4. Open a new Claude Code conversation in VSCode
  5. The extension reads "opus", sees you're on a Max plan, and resolves it to opus[1m] (1M context)
  6. You are now on a model you did not choose, at significantly higher cost

No /model command is involved. The extension does this purely by watching the file.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.84 (Claude Code)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

VS Code integrated terminal

Additional Information

Related closed issues that were never actually fixed: #22659, #27941

This is distinct from #35789 (model picker showing wrong model). This bug is about the extension destroying a correct, explicit user config through lossy normalization -- no model picker involved.

The cost impact is real: "claude-opus-4-6" = 200k context. "opus" on a Max plan resolves to "opus[1m]" = 1M context. The user is silently moved to a 5x more expensive context window they explicitly opted out of.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗