Bug: Claude Code process hangs with 100% CPU usage (requires kill -9)

Resolved 💬 3 comments Opened Jan 31, 2026 by damozhang Closed Jan 31, 2026

Environment

  • Claude Code version: 2.1.27
  • OS: macOS 26.2 (Sequoia)
  • Architecture: ARM64 (Apple Silicon)

Description

Claude Code process repeatedly hangs with 100% CPU usage. This has occurred multiple times since last night. The process becomes unresponsive and requires kill -9 to terminate (normal kill is ignored).

Symptoms

  • CPU usage: 99%+ sustained
  • Memory: 7.7GB (peak 9.0GB)
  • Process state: Running but unresponsive
  • kill (SIGTERM) has no effect, requires kill -9 (SIGKILL)

Debug Log Analysis

The last debug log entries before hang:

[API:auth] OAuth token check complete
[API:request] Creating client...

After sending API request, no further log entries appear - the process enters an infinite loop.

Process Sample (via macOS sample command)

Main thread is stuck in a tight loop - 817/817 samples show the same code path:

817 Thread_678056   DispatchQueue_1: com.apple.main-thread  (serial)
+ 817 start  (in dyld) + 7184
+   817 ???  (in 2.1.27)  load address 0x10474c000 + 0x3f90
+     817 ???  (in 2.1.27)  load address 0x10474c000 + 0x536c
+       817 ???  (in 2.1.27)  load address 0x10474c000 + 0x26a430
+         817 ???  (in 2.1.27)  load address 0x10474c000 + 0x1121cd0
+           817 ???  (in 2.1.27)  load address 0x10474c000 + 0x2ab758
+             817 ???  (in 2.1.27)  load address 0x10474c000 + 0x30e3f8
+               817 ???  (in 2.1.27)  load address 0x10474c000 + 0x53b998
...

Worker threads (Bun Pool, HTTP Client) are all in wait state (__ulock_wait2, kevent64), indicating the main thread is blocking everything.

Configuration

  • Using multiple plugins (episodic-memory, context7, playwright)
  • 85 skills loaded at startup
  • 21 enabled plugins, 15 agents

Reproduction

  • Happens intermittently during normal usage
  • More frequent when working in projects with many files
  • No specific user action triggers it consistently

Workaround

Force kill the hung process: kill -9 <pid>

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗