[BUG] Auto mode missing from VS Code extension picker on Linux despite canEnterAuto=true (works in terminal CLI and Windows extension)
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?
On Linux (Ubuntu 24.04, VS Code extension), the mode picker only shows Ask before edits, Edit automatically, Plan mode, and — after enabling "Allow dangerously skip permissions" — Bypass permissions. "Auto mode" never appears.
This is NOT an eligibility problem. The spawned CLI explicitly reports Auto mode is available. The extension Output log shows:
[auto-mode] verifyAutoModeGateAccess: enabledState=enabled disabledBySettings=false model=claude-opus-4-7[1m] modelSupported=true carouselAvailable=true canEnterAuto=true
Despite canEnterAuto=true and carouselAvailable=true, the extension webview only ever sends set_permission_mode with acceptEdits, plan, or bypassPermissions — never auto. The backend offers Auto mode but the extension UI does not render it.
Key facts:
- Auto mode works in the terminal CLI on the same machine/account.
- Auto mode appears in the Windows extension picker with the same account (Claude Max, Opus 4.7).
- Extension version 2.1.145 · CLI version 2.1.146.
- The Linux extension build did not ship a bundled native binary (errored "native binary not found" until
claudeProcessWrapperwas set to an externalclaude).
Also recurring on every auth check (possibly related):claude auth status parse failed: SyntaxError: Unexpected end of JSON input
What Should Happen?
"Auto mode" should appear in the VS Code extension mode picker on Linux — as it does in the terminal CLI and in the Windows extension — since the backend reports canEnterAuto=true / carouselAvailable=true and all documented requirements are met (Claude Max, Opus 4.7, Anthropic API, "Allow dangerously skip permissions" enabled).
Error Messages/Logs
[auto-mode] verifyAutoModeGateAccess: enabledState=enabled disabledBySettings=false model=claude-opus-4-7[1m] modelSupported=true disableFastModeBreakerFires=false carouselAvailable=true canEnterAuto=true
# The webview only ever requests these modes — never "auto":
webview -> set_permission_mode {"mode":"bypassPermissions","userInitiated":true}
webview -> set_permission_mode {"mode":"plan","userInitiated":true}
webview -> set_permission_mode {"mode":"acceptEdits","userInitiated":true}
# Recurring on every auth status check:
[error] claude auth status parse failed: SyntaxError: Unexpected end of JSON input
# Binary launched (extension reports 2.1.145, binary resolves to 2.1.146):
Spawning Claude with SDK query function - permission mode: acceptEdits, version: 2.1.145, /home/<user>/.local/bin/claude
Acquired PID lock for 2.1.146 ... /home/<user>/.local/share/claude/versions/2.1.146
Steps to Reproduce
- On Linux (Ubuntu 24.04), install the Claude Code VS Code extension (v2.1.145).
- Extension reports "native binary not found"; install the CLI and set
claudeCode.claudeProcessWrapperto the external binary (e.g./home/<user>/.local/bin/claude). - Account meets all Auto mode requirements: Claude Max, Opus 4.7, Anthropic API.
- Set
claudeCode.allowDangerouslySkipPermissions: trueand reload the window. - Open the mode picker in the extension panel (Shift+Tab to cycle).
- Observe: picker shows Ask before edits / Edit automatically / Plan mode / Bypass permissions — but NOT Auto mode.
- In the same project, run
claudein the integrated terminal and press Shift+Tab → Auto mode IS available there. - On Windows with the same account, the extension picker DOES show Auto mode.
Tried with no effect (in this order):
- Enabled
allowDangerouslySkipPermissions+ reloaded → only surfaced Bypass, never Auto. - Set
claudeProcessWrapperto the external binary, and also removed it → no change. - Full uninstall + reinstall of the extension → no change.
- Initially ran with CLI 2.1.146 (Auto mode missing in the picker), then deliberately downgraded the CLI to 2.1.145 to align with the extension version in case version skew was the cause → Auto mode was STILL missing. The bug reproduces on BOTH 2.1.146 and 2.1.145.
- Confirmed all Auto mode preconditions (Max plan, Opus 4.7, Anthropic API).
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.146 (Claude Code) — also tested 2.1.145 to match the extension version; same result
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
This is a UI/webview bug in the Linux extension — not a terminal, account, or config issue. The backend reports Auto mode available (canEnterAuto=true) but the extension webview never renders it. (Note: the actual issue is in the VS Code extension panel, not the terminal/shell selected above.)
Environment:
- OS: Ubuntu 24.04 LTS, kernel 6.17.0, linux-x64
- VS Code: 1.121.0
- Claude Code extension: 2.1.145
- Claude Code CLI: tested 2.1.146 first (Auto mode missing), then downgraded to 2.1.145 to match the extension — missing in BOTH
- Plan: Claude Max · Model: Opus 4.7 · Provider: Anthropic API
Possibly related: #44941 (Auto mode missing in extension, reported on Windows; says it worked in extension 2.1.81), #56648 (claudeProcessWrapper ignored on Linux), #10500 (claudeProcessWrapper not used with useTerminal).
The Linux extension build did not bundle a native binary, forcing use of claudeProcessWrapper. This may be connected: Windows ships a bundled binary and shows Auto mode, while Linux relies on the external wrapper and does not.
Screenshots:
<img width="817" height="830" alt="Image" src="https://github.com/user-attachments/assets/59611ae0-7a8d-4744-9071-bac41bf433bb" />
<img width="490" height="449" alt="Image" src="https://github.com/user-attachments/assets/85fcb349-4413-4f6d-9d95-c2c8ed9173ef" />
<img width="2205" height="852" alt="Image" src="https://github.com/user-attachments/assets/b6cc4103-10df-4e9d-8825-2eb3e587b591" />
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗