[BUG] Claude Code hangs with zero output on Ubuntu VM under Proxmox (all commands except --version)
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?
claude, claude setup-token, and claude -p "<prompt>" all hang indefinitely with zero output (no text, no error, no spinner) on a specific Ubuntu VM running under Proxmox (KVM). The process must be killed with Ctrl+C. This happens even in non-interactive mode (-p) with stdin explicitly closed (< /dev/null), and even with a valid CLAUDE_CODE_OAUTH_TOKEN already exported.
claude --version and claude --help work instantly and correctly.
What Should Happen?
claude setup-token should print the OAuth authorization URL to stdout within milliseconds of generating the PKCE parameters, as it does on other machines (confirmed working normally on a Windows machine with the same account). claude -p should return a response instead of hanging silently forever.
Error Messages/Logs
strace output (from `strace -f -o /tmp/strace_output.log claude setup-token`, canceled after ~20s):
- Process executes, initializes Node/V8 normally, spawns the standard JSCWarmUp and mi-scavenger V8 threads (all within the same second).
- Two getrandom() calls are made with 48 and 32 byte buffers (consistent with PKCE code_verifier/code_challenge generation for OAuth).
- After that, no write(1, ...) to stdout ever appears in the entire log, and no connect(), socket(), or getaddrinfo() call ever appears either.
- The rest of the log is background V8/libuv worker threads idling on futex with the standard 30s timeout, until killed with SIGINT.
This suggests the hang happens in application code between "generate PKCE parameters" and "print login URL / open network connection."
Steps to Reproduce
- Fresh Ubuntu VM on Proxmox (KVM), kernel 5.15.0-191-generic
- Install Node via nvm, then
npm install -g @anthropic-ai/claude-code - Run
claude(interactive) → hangs with no output at all, nothing drawn to the terminal - Run
claude setup-token→ hangs with no output (no login URL ever printed) - Run
claude -p "hello" < /dev/null(with a valid CLAUDE_CODE_OAUTH_TOKEN already exported) → still hangs with no output claude --version→ returns instantly and correctly (2.1.278 (Claude Code), ~16ms)
Already ruled out:
- Network: curl -v to api.anthropic.com, platform.claude.com, console.anthropic.com all succeed immediately (200/405, correct TLS). claude.ai returns a Cloudflare bot-challenge (403) to curl only, which shouldn't affect the CLI since login happens in a real browser on a separate machine.
- IPv4 vs IPv6: NODE_OPTIONS="--dns-result-order=ipv4first" made no difference.
- Node version: reproduced identically on Node 20.20.2 and 22.23.2.
- Terminal rendering: reproduced with TERM=xterm-256color, wide terminal (261 cols), and inside
script -c(log file was empty for the entire hang). - stdin: reproduced with stdin redirected from /dev/null.
- User/config: reproduced under a brand-new, freshly created Linux user with no prior config.
- Locale: LANG=en_US.UTF-8, nothing unusual.
- AppArmor: only standard Ubuntu profiles loaded (snapd, dhclient, man, nvidia), none related to Node/Claude Code.
- CPU/steal time: vmstat shows 0% steal, ~99% idle CPU.
- Entropy: /proc/sys/kernel/random/entropy_avail = 256 (normal).
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.278 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
VS Code integrated terminal
Additional Information
Kernel: 5.15.0-191-generic
Virtualization: KVM VM under Proxmox
Node.js: reproduced identically on v20.20.2 and v22.23.2 (installed via nvm)
Terminal: VS Code Remote-SSH integrated terminal (TERM=xterm-256color, also tested with 261-column width)
Auth: reproduced both with no token configured and with a valid CLAUDE_CODE_OAUTH_TOKEN
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗