Description
Claude Code CLI hangs indefinitely on WSL2 when making any API call. No output, no error message. Affects interactive mode and claude -p.
Working on Mar 23 with v2.1.81 and same Windows install. Broke between Mar 23-25.
Environment
- Windows 11 Pro 10.0.26200 / WSL2 Ubuntu
- CLI versions tested: 2.1.80, 2.1.81, 2.1.83 — all hang
- Auth: OAuth (Max subscription), token valid, auth status confirms logged in
- Windows Updates: KB5085516 (Mar 22), KB5083532 (Mar 11) — ruled out since CLI worked Mar 23
What works vs what does not
| Environment |
Status |
| Claude Desktop App (Windows) |
Works |
| curl to api.anthropic.com from WSL2 |
Works |
| Raw Node.js HTTPS with same token |
Works (200) |
| CLI v1.0.124 on another WSL2 machine |
Works (old scopes) |
| CLI v2.1.80/81/83 on WSL2 |
Hangs |
Key findings
-
API response arrives but CLI never processes it. ANTHROPIC_LOG=debug shows request sent, no response logged. strace confirms bytes received on socket. CLI sits in event loop forever.
-
Raw Node.js proves API works. Same token, same headers, same endpoint — returns 200 instantly from WSL2.
-
CLI silently swallows errors. When streaming endpoint returns 400/401, CLI hangs instead of showing error. This is the core UX bug.
-
Server-side changes detected. Without oauth-2025-04-20 beta header, API returns "OAuth authentication is currently not supported." With it, Haiku works but Sonnet/Opus return 400 with generic "Error" message.
-
OAuth scope difference. Working v1.0.124 uses scopes user:inference, user:profile. Broken v2.1.83 uses expanded scopes including user:file_upload, user:mcp_servers, user:sessions:claude_code.
-
v2.1.81 worked Mar 23, hangs today — same binary, same Windows. Points to server-side change.
Repro
claude -p "say hello" # hangs indefinitely
ANTHROPIC_LOG=debug claude -p "hi" 2>&1 # shows request, no response
Additional issues found
claude auth login redirect never completes on WSL2, no paste-code fallback
--bare flag reports "Not logged in" despite valid credentials
- Cloudflare blocks manual OAuth token exchange from WSL2
Expected
Display error message and exit non-zero, not hang silently.
Description
Claude Code CLI hangs indefinitely on WSL2 when making any API call. No output, no error message. Affects interactive mode and
claude -p.Working on Mar 23 with v2.1.81 and same Windows install. Broke between Mar 23-25.
Environment
What works vs what does not
Key findings
API response arrives but CLI never processes it. ANTHROPIC_LOG=debug shows request sent, no response logged. strace confirms bytes received on socket. CLI sits in event loop forever.
Raw Node.js proves API works. Same token, same headers, same endpoint — returns 200 instantly from WSL2.
CLI silently swallows errors. When streaming endpoint returns 400/401, CLI hangs instead of showing error. This is the core UX bug.
Server-side changes detected. Without oauth-2025-04-20 beta header, API returns "OAuth authentication is currently not supported." With it, Haiku works but Sonnet/Opus return 400 with generic "Error" message.
OAuth scope difference. Working v1.0.124 uses scopes user:inference, user:profile. Broken v2.1.83 uses expanded scopes including user:file_upload, user:mcp_servers, user:sessions:claude_code.
v2.1.81 worked Mar 23, hangs today — same binary, same Windows. Points to server-side change.
Repro
Additional issues found
claude auth loginredirect never completes on WSL2, no paste-code fallback--bareflag reports "Not logged in" despite valid credentialsExpected
Display error message and exit non-zero, not hang silently.