[BUG] claude spins at 100% CPU indefinitely on startup — regression between 2.1.112 and 2.1.113
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?
Running claude (or any subcommand except --version, e.g. claude doctor, claude --debug) causes the process to spin at 100% CPU indefinitely and never return. The process stays in state R (running, not sleeping/blocked) the entire time. Ctrl+C (SIGINT) does not stop it — it requires kill -9.
claude --version works fine and returns instantly, so this is specific to the full startup path.
I bisected this across the 2.1.x release line and found the regression starts precisely at 2.1.113:
| Version | Result |
|---|---|
| 2.0.0 | Works |
| 2.1.0 | Works |
| 2.1.100 | Works |
| 2.1.112 | Works |
| 2.1.113 | Hangs |
| 2.1.125 – 2.1.274 | Hangs (all tested) |
Before concluding this was a code regression, I ruled out every environment-level cause I could think of:
- Network:
tcpdumpshowed zero packets during the hang;straceshowed no socket file descriptors at all. - DNS: all required hostnames resolve correctly via local and public (8.8.8.8) resolvers.
- Terminal/tty:
stty -anormal (time = 0),TERM=xterm-256color, stdin/stdout confirmed real ttys. - Locale:
LANG=C.UTF-8, no errors. - CPU steal time: ~0.5% via
top/vmstat, so not a hypervisor/host oversubscription issue. - Stale config/state: reproduces identically with
~/.claude/fully removed (directory absent, not just emptied). - System clock: synchronized, correct UTC.
- Install method: reproduces identically via the native installer, npm, and apt.
- Env vars:
CLAUDE_CODE_OAUTH_TOKENand otherCLAUDE_*vars checked, not a factor here.
strace -f -p <pid> shows threads parked in futex(FUTEX_WAIT_PRIVATE, ...) and a main thread cycling through restart_syscall/read with periodic ETIMEDOUT on a ~30s cadence on the tty fd — looks like a busy-retry loop rather than a genuine blocking wait.
Possibly related to #87554 and #87553 (100% CPU spin + unresponsive SIGINT, Bun runtime).
What Should Happen?
claude and its subcommands should start normally within a few seconds and use minimal CPU while idle/waiting for input, as they do in 2.1.112 and earlier.
Error Messages/Logs
No error output is produced — the process simply hangs silently at 100% CPU with no stdout/stderr after "Setting up Claude Code..." (native installer) or immediately on `claude doctor` (once already installed).
Process snapshot during the hang:
user 109947 45.2 0.6 5556248 109824 pts/3 Tl 14:22 0:43 claude doctor
user 110111 100 0.6 5556312 109824 pts/3 Rl+ 14:23 0:31 claude doctor
Steps to Reproduce
- On Linux, install Claude Code 2.1.113 or later via npm:
npm install -g @anthropic-ai/claude-code@2.1.113
- Run:
claude doctor
- Observe: process hangs indefinitely at 100% CPU, no output, Ctrl+C does not stop it (requires kill -9)
To confirm the regression boundary:
- npm install -g @anthropic-ai/claude-code@2.1.112
- claude doctor
- Works correctly — starts normally within a few seconds
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.112
Claude Code Version
2.1.274 (Claude Code) — also reproduces on every version from 2.1.113 through 2.1.274 tested
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Other
Additional Information
Environment:
- OS: Ubuntu, kernel 6.8.0-31-generic
- Virtualization: KVM (VPS)
- Node: v24.21.0 (via nvm)
- Reproduces via native installer (curl -fsSL https://claude.ai/install.sh | bash), npm, and apt — all identical
Full bisection performed manually across 2.0.0 → 2.1.274 to isolate the exact regression point (2.1.112 → 2.1.113).