[BUG] claude spins at 100% CPU indefinitely on startup — regression between 2.1.112 and 2.1.113

Status Open
Reported on v2.1.113
Maintainer reply None cached
Activity 0 comments · opened Sep 17, 2026

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: tcpdump showed zero packets during the hang; strace showed no socket file descriptors at all.
  • DNS: all required hostnames resolve correctly via local and public (8.8.8.8) resolvers.
  • Terminal/tty: stty -a normal (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_TOKEN and other CLAUDE_* 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

  1. On Linux, install Claude Code 2.1.113 or later via npm:

npm install -g @anthropic-ai/claude-code@2.1.113

  1. Run:

claude doctor

  1. Observe: process hangs indefinitely at 100% CPU, no output, Ctrl+C does not stop it (requires kill -9)

To confirm the regression boundary:

  1. npm install -g @anthropic-ai/claude-code@2.1.112
  2. claude doctor
  3. 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).

View original on GitHub ↗