VS Code extension has no setting for extended thinking — exposes CLAUDE.md enforcement gap
Summary
The VS Code extension (v2.1.69) has no setting to enable extended thinking. The CLI supports --thinking and interactive toggling, but the extension exposes only 14 settings — none related to thinking mode. This means users who define thinking preferences in CLAUDE.md (as recommended by Anthropic's own guidance) have those instructions silently ignored when using the VS Code extension.
The specific problem
My global ~/.claude/CLAUDE.md contains:
### Default Model Preference
- **Always use the latest Claude Opus model** with extended thinking enabled
This instruction works in the CLI. In the VS Code extension, it is silently ignored — the model reads the instruction, cannot honor it (thinking mode is an API parameter set by the client, not the model), and never tells the user. I only discovered this by explicitly asking Claude to confirm whether extended thinking was active.
Extension settings audit (v2.1.69)
The extension's package.json exposes exactly these settings:
claudeCode.allowDangerouslySkipPermissions
claudeCode.autosave
claudeCode.claudeProcessWrapper
claudeCode.disableLoginPrompt
claudeCode.enableNewConversationShortcut
claudeCode.environmentVariables
claudeCode.hideOnboarding
claudeCode.initialPermissionMode
claudeCode.preferredLocation
claudeCode.respectGitIgnore
claudeCode.selectedModel
claudeCode.useCtrlEnterToSend
claudeCode.usePythonEnvironment
claudeCode.useTerminal
No claudeCode.enableThinking, claudeCode.thinkingMode, or equivalent exists.
The broader problem: silent CLAUDE.md failures
This is not just a missing toggle. It exposes an architectural gap in how CLAUDE.md instructions interact with client-level configuration:
- CLAUDE.md creates a false promise. Users are encouraged to define preferences in
CLAUDE.mdas the canonical source of truth across sessions. But some preferences (thinking mode, model selection, context window behavior) are API parameters controlled by the client, not behavioral instructions the model can follow. There is no documentation distinguishing which categories of instruction CLAUDE.md can vs. cannot enforce.
- The failure is silent. When the model encounters a CLAUDE.md instruction it cannot honor due to client limitations, it does not warn the user. It simply proceeds without the requested capability. The user has no way to know unless they proactively ask — which most users won't do.
- Parity gap between CLI and VS Code. The CLI supports thinking mode. The VS Code extension does not. Users who switch between environments (common workflow) get different capabilities with no indication. This undermines the purpose of
CLAUDE.mdas a portable, environment-agnostic configuration layer.
- Pattern of silent inconsistency. This is representative of a broader pattern where Claude Code allows configuration mismatches to go unreported. Related issues: #27032, #28158, #30827 (CLAUDE.md instructions ignored), #28986 (no model/thinking indicators in VS Code). The common thread is that the system doesn't surface when it can't comply with stated preferences.
Proposed solutions
Immediate (feature request)
- Add
claudeCode.enableThinking(boolean) andclaudeCode.thinkingBudget(number) to the VS Code extension settings, achieving parity with the CLI
Structural (design improvement)
- When the model reads a CLAUDE.md instruction that references an API-level capability (thinking mode, model preference, etc.) and detects it cannot be honored by the current client, it should emit a visible warning at session start — e.g., "⚠️ CLAUDE.md requests extended thinking, but this is not enabled in your current environment. Set
claudeCode.enableThinking: truein VS Code settings." - Document which CLAUDE.md instruction categories are model-enforceable vs. client-dependent, so users know what they can and cannot configure portably
Environment
- Extension version: 2.1.69
- Platform: Windows 11, VS Code
- Model: Claude Opus 4.6
- CLI version: Has thinking support (works correctly there)
Why this matters
Boris Cherny, the creator of Claude Code, shared his personal workflow on X (January 2026: https://x.com/bcherny/status/2007179832300581177) showing he keeps extended thinking on at all times. Anthropic's own documentation encourages CLAUDE.md as the way to persist preferences. When a user follows this guidance and defines thinking preferences in CLAUDE.md, those preferences should either (a) work, or (b) visibly fail with a clear path to fix. Silent non-compliance erodes trust in the entire CLAUDE.md system.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗