Claude Code freezes: static spinner, unresponsive input, ignores SIGTERM
Open 💬 6 comments Opened Jan 24, 2026 by real-bk2k
Description
Claude Code occasionally enters a frozen state where:
- The animated spinner becomes static (stops animating)
- Input field stops accepting any input
- Escape does not cancel the current operation
- The process ignores SIGTERM (remains in
Rl+state) - Only SIGKILL terminates it
Reproduction
Observed twice in tmux sessions. Both times the session was running normally, then froze mid-operation.
Case 1: Context exhaustion
- Context at 5% remaining
- Status showed:
Ideating… (34m 23s · ↓ 0 tokens · thinking) - 0 tokens received for 34+ minutes
- Likely: API rejected the request due to context overflow, but client didn't handle the error/timeout
Case 2: Normal operation
- Context was normal (not exhausted)
- Status showed:
Pondering… (4m 4s · ↓ 7.7k tokens · thought for 2s) - 7.7k tokens were received, then froze
- The session was managing other tmux sessions via
tmux send-keyscommands
Environment
- Platform: Linux 6.8.0-90-generic
- Claude Code running inside tmux sessions
- Multiple concurrent Claude Code sessions active
Expected behavior
- Escape should cancel the current operation
- SIGTERM should gracefully terminate the process
- If the API connection drops, the client should timeout and show an error
Actual behavior
- Complete freeze: no animation, no input, no response to signals
- Only
kill -9works
Process state when frozen
bash(PID)---claude(PID)-+-{claude}(thread1)
|-{claude}(thread2)
|-{claude}(thread3)
|-{claude}(thread4)
|-{claude}(thread5)
|-{claude}(thread6)
|-{claude}(thread7)
|-{claude}(thread8)
|-{claude}(thread9)
`-{claude}(thread10)
Process state: Rl+ (Running, multi-threaded, foreground)
Hypothesis
Possible deadlock in the Node.js event loop — likely waiting on an SSE stream from the API with a broken/stalled connection, while the terminal I/O thread is also blocked.
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗