[BUG] VS Code extension subprocess init timeout on WSL2/Ubuntu 26.04 — CLI fully healthy (stream-json handshake works from terminal)
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?
Same symptom as #50988, but on WSL2/Linux rather than Windows, and with a healthy CLI — filing separately per the bot's request.
VSCode extenstion should connect to claude but fails with red message:
Error: Subprocess initialization did not complete within 60000ms — check authentication and network connectivity
View output logs · Troubleshooting resources
Same error on WSL2 / Ubuntu 26.04 — but CLI is fully healthy, unlike the Windows reports here
Extension anthropic.claude-code-2.1.158-linux-x64, CLI 2.1.158 (native), VS Code Remote-WSL, Ubuntu 26.04.
The VS Code panel fails with Subprocess initialization did not complete within 60000ms on every launch. Unlike the Windows reports, the CLI itself is completely healthy:
claude -p ping → pong
interactive REPL starts and responds normally
claude --setting-sources user -p ping → pong
claude --setting-sources project,local -p ping → pong
manual stream-json handshake returns immediately:
echo '{"type":"control_request","request_id":"t1","request":{"subtype":"initialize"}}' | claude --input-format stream-json --output-format stream-json --verbose --model sonnet --permission-mode acceptEdits --setting-sources ""
→ returns control_response / session id instantly.
Ruled out: no SessionStart hooks, no enabledPlugins, no UNC paths, no broken settings symlinks (project .claude/ doesn't exist). CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 set — bootstrap and plugin autoupdate are skipped, timeout unchanged.
From the extension Output log, the spawned subprocess completes full init, then sits silently for ~59s until the extension kills it. Last meaningful lines before the dead silence:
[DEBUG] installPluginsForHeadless: no marketplaces declared
[DEBUG] [mcp-registry] Loaded 197 official MCP URLs (legacy)
... (59s of silence) ...
[info] Error spawning Claude: Subprocess initialization did not complete within 60000ms
So the binary finishes setup but the extension never receives the system/init over stream-json. Since the manual stream-json handshake works instantly from the terminal, this looks like the extension's stream-json transport layer on WSL2, not the binary.
claudeCode.useTerminal mode works flawlessly as a workaround.
What Should Happen?
The VS Code extension should connect to Claude and become ready within a few seconds, like the CLI does.
Error Messages/Logs
2026-05-31 11:14:59.594 [info] AuthManager initialized
2026-05-31 11:14:59.594 [info] Claude code extension is now active?
2026-05-31 11:14:59.594 [info] MCP Server running on port 52697 (localhost only)
2026-05-31 11:14:59.594 [info] Getting authentication status
2026-05-31 11:14:59.594 [info] OAuth tokens found in secure storage
2026-05-31 11:14:59.594 [info] AuthManager initialized
2026-05-31 11:14:59.594 [info] Received message from webview: {"type":"request","requestId":"z192m9ze2","request":{"type":"init"}}
2026-05-31 11:14:59.594 [info] Getting authentication status
2026-05-31 11:14:59.594 [info] OAuth tokens found in secure storage
2026-05-31 11:14:59.594 [info] Getting authentication status
2026-05-31 11:14:59.594 [info] OAuth tokens found in secure storage
2026-05-31 11:14:59.594 [info] Received message from webview: {"type":"request","requestId":"it6div88hxb","request":{"type":"get_claude_state"}}
2026-05-31 11:14:59.594 [info] Received message from webview: {"type":"request","requestId":"8tsdddjbrmv","request":{"type":"get_current_selection"}}
2026-05-31 11:14:59.594 [info] Received message from webview: {"type":"request","requestId":"u8rfcwou2zc","request":{"type":"get_asset_uris"}}
2026-05-31 11:14:59.594 [info] Received message from webview: {"type":"request","requestId":"4qsztspfyai","request":{"type":"list_sessions_request"}}
2026-05-31 11:14:59.601 [info] Received message from webview: {"type":"launch_claude","channelId":"oo8pjwmw1vc","cwd":"/home/michal/github/retractordb","permissionMode":"acceptEdits","thinkingLevel":"default_on"}
2026-05-31 11:14:59.614 [info] Launching Claude on channel: oo8pjwmw1vc
2026-05-31 11:14:59.620 [info] Spawning Claude with SDK query function - cwd: /home/michal/github/retractordb, permission mode: acceptEdits, version: 2.1.158, /home/michal/.vscode-server/extensions/anthropic.claude-code-2.1.158-linux-x64/resources/native-binary/claude, resume: undefined
2026-05-31 11:16:00.452 [info] Closing Claude on channel: oo8pjwmw1vc
2026-05-31 11:16:00.452 [error] Error spawning Claude (on channel oo8pjwmw1vc): Error: Subprocess initialization did not complete within 60000ms — check authentication and network connectivity
2026-05-31 11:16:00.452 [info] OAuth tokens found in secure storage
2026-05-31 11:16:00.452 [error] Failed to load config cache: Error: Subprocess initialization did not complete within 60000ms — check authentication and network connectivity
2026-05-31 11:16:00.452 [error] Error processing client request: Error: Subprocess initialization did not complete within 60000ms — check authentication and network connectivity
2026-05-31 11:16:00.469 [info] From claude: 2026-05-31T09:15:00.521Z [DEBUG] MDM settings load completed in 23ms
2026-05-31T09:15:00.542Z [DEBUG] Broken symlink or missing file encountered for settings.json at path: /home/michal/github/retractordb/.claude/settings.json
2026-05-31T09:15:00.542Z [DEBUG] Broken symlink or missing file encountered for settings.json at path: /home/michal/github/retractordb/.claude/settings.local.json
2026-05-31T09:15:00.542Z [DEBUG] Broken symlink or missing file encountered for settings.json at path: /etc/claude-code/managed-settings.json
2026-05-31T09:15:00.543Z [DEBUG] CA certs: Config fallback - globalEnv keys: , settingsEnv keys: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
2026-05-31T09:15:00.544Z [DEBUG] [init] configureGlobalMTLS starting
2026-05-31T09:15:00.544Z [DEBUG] [init] configureGlobalMTLS complete
2026-05-31T09:15:00.544Z [DEBUG] [init] configureGlobalAgents starting
2026-05-31T09:15:00.544Z [DEBUG] CA certs: stores=bundled,system, extraCertsPath=undefined
2026-05-31T09:15:00.544Z [DEBUG] CA certs: Loaded 145 bundled root certificates
2026-05-31T09:15:00.553Z [DEBUG] CA certs: Loaded 289 system CA certificates
2026-05-31T09:15:00.554Z [DEBUG] mTLS: Creating HTTPS agent with custom certificates
2026-05-31T09:15:00.554Z [DEBUG] [init] configureGlobalAgents complete
2026-05-31T09:15:00.556Z [DEBUG] Error log sink initialized
2026-05-31T09:15:00.568Z [DEBUG] [STARTUP] Loading MCP configs...
2026-05-31T09:15:00.569Z [DEBUG] [STARTUP] Running setup()...
2026-05-31T09:15:00.571Z [DEBUG] Broken symlink or missing file encountered for settings.json at path: /etc/claude-code/managed-settings.json
2026-05-31T09:15:00.572Z [DEBUG] Broken symlink or missing file encountered for settings.json at path: /home/michal/github/retractordb/.claude/settings.json
2026-05-31T09:15:00.572Z [DEBUG] Broken symlink or missing file encountered for settings.json at path: /home/michal/github/retractordb/.claude/settings.local.json
2026-05-31T09:15:00.572Z [DEBUG] Loading skills from: managed=/etc/claude-code/.claude/skills, user=/home/michal/.claude/skills, project=[]
2026-05-31T09:15:00.573Z [DEBUG] Error log sink initialized
2026-05-31T09:15:00.574Z [DEBUG] [claudeai-mcp] Fetching from https://api.anthropic.com/v1/mcp_servers?limit=1000
2026-05-31T09:15:00.579Z [DEBUG] installed_plugins.json doesn't exist, returning empty V2 object
2026-05-31T09:15:00.579Z [DEBUG] Failed to stat directory /etc/claude-code/.claude/commands: ENOENT: no such file or directory, statx '/etc/claude-code/.claude/commands'
2026-05-31T09:15:00.579Z [DEBUG] Failed to stat directory /home/michal/.claude/commands: ENOENT: no such file or directory, statx '/home/michal/.claude/commands'
2026-05-31T09:15:00.580Z [DEBUG] Loaded 0 unique skills (0 unconditional, 0 conditional, managed: 0, user: 0, project: 0, additional: 0, legacy commands: 0)
2026-05-31T09:15:00.580Z [DEBUG] Failed to stat directory /etc/claude-code/.claude/agents: ENOENT: no such file or directory, statx '/etc/claude-code/.claude/agents'
2026-05-31T09:15:00.580Z [DEBUG] Failed to stat directory /home/michal/.claude/agents: ENOENT: no such file or directory, statx '/home/michal/.claude/agents'
2026-05-31T09:15:00.582Z [DEBUG] [STARTUP] setup() completed in 13ms
2026-05-31T09:15:00.582Z [DEBUG] Cleared CA certificates cache
2026-05-31T09:15:00.582Z [DEBUG] Cleared mTLS configuration cache
2026-05-31T09:15:00.582Z [DEBUG] Cleared proxy agent cache
2026-05-31T09:15:00.582Z [DEBUG] CA certs: stores=bundled,system, extraCertsPath=undefined
2026-05-31T09:15:00.582Z [DEBUG] CA certs: Loaded 145 bundled root certificates
2026-05-31T09:15:00.582Z [DEBUG] CA certs: Loaded 289 system CA certificates
2026-05-31T09:15:00.582Z [DEBUG] mTLS: Creating HTTPS agent with custom certificates
2026-05-31T09:15:00.583Z [DEBUG] [STARTUP] Loading commands and agents...
2026-05-31T09:15:00.583Z [DEBUG] [ToolSearch:optimistic] mode=tst, ENABLE_TOOL_SEARCH=undefined, result=true
2026-05-31T09:15:00.587Z [DEBUG] Found 0 plugins (0 enabled, 0 disabled)
2026-05-31T09:15:00.587Z [DEBUG] getPluginSkills: Processing 0 enabled plugins
2026-05-31T09:15:00.587Z [DEBUG] Registered 0 hooks from 0 plugins
2026-05-31T09:15:00.587Z [DEBUG] Total plugin skills loaded: 0
2026-05-31T09:15:00.587Z [DEBUG] Total plugin commands loaded: 0
2026-05-31T09:15:00.587Z [DEBUG] Total plugin agents loaded: 0
2026-05-31T09:15:00.591Z [DEBUG] getSkills returning: 0 skill dir commands, 0 plugin skills, 15 bundled skills, 0 builtin plugin skills
2026-05-31T09:15:00.592Z [DEBUG] [STARTUP] Commands and agents loaded in 9ms
2026-05-31T09:15:00.592Z [DEBUG] [LSP MANAGER] initializeLspServerManager() called
2026-05-31T09:15:00.592Z [DEBUG] [LSP MANAGER] Created manager instance, state=pending
2026-05-31T09:15:00.592Z [DEBUG] [LSP MANAGER] Starting async initialization (generation 1)
2026-05-31T09:15:00.592Z [DEBUG] Starting background startup prefetches
2026-05-31T09:15:00.592Z [DEBUG] [Bootstrap] Skipped: Nonessential traffic disabled
2026-05-31T09:15:00.592Z [DEBUG] [STARTUP] MCP configs resolved in 19ms (awaited at +24ms)
2026-05-31T09:15:00.592Z [DEBUG] Cleared CA certificates cache
2026-05-31T09:15:00.592Z [DEBUG] Cleared mTLS configuration cache
2026-05-31T09:15:00.592Z [DEBUG] Cleared proxy agent cache
2026-05-31T09:15:00.592Z [DEBUG] CA certs: stores=bundled,system, extraCertsPath=undefined
2026-05-31T09:15:00.593Z [DEBUG] CA certs: Loaded 145 bundled root certificates
2026-05-31T09:15:00.593Z [DEBUG] CA certs: Loaded 289 system CA certificates
2026-05-31T09:15:00.593Z [DEBUG] mTLS: Creating HTTPS agent with custom certificates
2026-05-31T09:15:00.593Z [DEBUG] Total LSP servers loaded: 0
2026-05-31T09:15:00.593Z [DEBUG] Initialized versioned plugins system with 0 plugins
2026-05-31T09:15:00.594Z [DEBUG] Fast mode unavailable: Fast mode is currently unavailable
2026-05-31T09:15:00.594Z [DEBUG] [MCP] --mcp-config servers running fully async (nonblocking)
2026-05-31T09:15:00.594Z [DEBUG] [MCP] claude.ai connectors running fully async (nonblocking)
2026-05-31T09:15:00.594Z [DEBUG] [LSP SERVER MANAGER] getAllLspServers returned 0 server(s)
2026-05-31T09:15:00.594Z [DEBUG] LSP manager initialized with 0 servers
2026-05-31T09:15:00.595Z [DEBUG] [Perfetto] initializePerfettoTracing called, env value: undefined
2026-05-31T09:15:00.595Z [DEBUG] [3P telemetry] isTelemetryEnabled=false (CLAUDE_CODE_ENABLE_TELEMETRY=undefined)
2026-05-31T09:15:00.596Z [DEBUG] LSP server manager initialized successfully
2026-05-31T09:15:00.596Z [DEBUG] LSP notification handlers registered successfully for all 0 server(s)
2026-05-31T09:15:00.599Z [DEBUG] [auto-mode] verifyAutoModeGateAccess: enabledState=opt-in disabledBySettings=false model=claude-sonnet-4-6 modelSupported=true disableFastModeBreakerFires=false carouselAvailable=true canEnterAuto=true
2026-05-31T09:15:00.602Z [DEBUG] Grove: Using fresh cached config
2026-05-31T09:15:00.645Z [DEBUG] Plugin autoupdate: skipped (auto-updater disabled)
2026-05-31T09:15:00.648Z [DEBUG] [ScheduledTasks] scheduler start() — enabled=false, hasTasks=false
2026-05-31T09:15:00.651Z [DEBUG] Git remote URL: git@github.com:michalwidera/retractordb.git
2026-05-31T09:15:00.651Z [DEBUG] Parsed repository: github.com/michalwidera/retractordb from URL: git@github.com:michalwidera/retractordb.git
2026-05-31T09:15:00.712Z [DEBUG] Ripgrep first use test: PASSED (mode=embedded, path=/home/michal/.vscode-server/extensions/anthropic.claude-code-2.1.158-linux-x64/resources/native-binary/claude)
2026-05-31T09:15:00.714Z [DEBUG] Watching for changes in setting files /home/michal/.claude/settings.json...
2026-05-31T09:15:00.722Z [DEBUG] Failed to stat directory /etc/claude-code/.claude/output-styles: ENOENT: no such file or directory, statx '/etc/claude-code/.claude/output-styles'
2026-05-31T09:15:00.722Z [DEBUG] Failed to stat directory /home/michal/.claude/output-styles: ENOENT: no such file or directory, statx '/home/michal/.claude/output-styles'
2026-05-31T09:15:00.722Z [DEBUG] Total plugin output styles loaded: 0
2026-05-31T09:15:00.722Z [DEBUG] Fast mode unavailable: Fast mode is currently unavailable
2026-05-31T09:15:01.027Z [DEBUG] [claudeai-mcp] Fetched 0 servers
2026-05-31T09:15:01.027Z [DEBUG] installPluginsForHeadless: starting
2026-05-31T09:15:01.027Z [DEBUG] installPluginsForHeadless: no marketplaces declared
2026-05-31T09:16:00.459Z [DEBUG] LSP server manager shut down successfully
2026-05-31 11:16:00.475 [info] Getting authentication status
2026-05-31 11:16:00.475 [info] OAuth tokens found in secure storage
2026-05-31 11:16:00.697 [info] Received message from webview: {"type":"interrupt_claude","channelId":"it6div88hxb"}
2026-05-31 11:16:00.697 [warning] Channel not found: it6div88hxb
Steps to Reproduce
- Windows 11 host with WSL2 (Ubuntu 26.04)
- VS Code connected to WSL via Remote-WSL
- Install the Claude Code extension (anthropic.claude-code-2.1.158-linux-x64)
- Open the Claude Code panel, type any message, hit Enter
- After ~60s the panel fails with: Subprocess initialization did not complete within 60000ms
Note: CLI in the same WSL works fully (claude -p ping → pong; manual stream-json handshake returns instantly).
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.158
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
WSL (Windows Subsystem for Linux)
Additional Information
This is situation when on Windows 11 there is WSL2 with Ubuntu 26.04 and Vscode connected to WSL2. Antropic extension fails to connect.
Although the OS field says Windows (host), the actual runtime is Linux/WSL2 (Ubuntu 26.04) — the failing binary and extension are linux-x64
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗