Cascading interrupts: after one spurious interrupt, all subsequent inputs also interrupt
Environment
- Claude Code version: 2.1.79
- OS: Ubuntu Linux (kernel 6.17.0-14-generic)
- Connection: SSH from Windows laptop (WSL2) to Linux homelab
- Terminal: Windows Terminal → WSL → SSH → bash (also tested inside tmux)
- Node: $(node --version 2>/dev/null || echo "unknown")
Description
Claude Code sessions are experiencing spurious interrupts that cascade. The first interrupt appears random — it occurs while Claude is mid-tool-call (e.g., reading files, running bash commands). After this initial interrupt, every subsequent prompt the user types also immediately triggers an interrupt, making the session unusable. The only recovery is to /exit and resume or start a new conversation.
Reproduction
- SSH from a Windows machine (via WSL) to a Linux server
- Start
claudeand begin a multi-step task - Wait — within a few minutes, Claude will be interrupted mid-execution
- Type any new prompt → it also immediately interrupts
- All further inputs continue to interrupt until the session is exited
What I've ruled out
- SSH keepalives:
ServerAliveInterval 60is configured, but these are protocol-level and don't inject terminal input - tmux escape-time: Reduced to 10ms — problem persists inside tmux
- MCP servers: Playwright and wp-devdocs MCP servers are loaded, but the issue occurs regardless
- No background processes sending keystrokes — checked crontab, running processes, bashrc
- Not a network issue: The SSH connection remains stable; only Claude Code's input handling breaks
Key observation
The cascade behavior is the critical bug. A single spurious interrupt could have many causes, but the fact that the session becomes permanently broken afterward (all inputs immediately interrupt) suggests Claude Code enters a corrupted terminal/input state after the first interrupt that it cannot recover from.
Expected behavior
After an interrupt, the next user prompt should be processed normally.
Workaround
Exiting the session (/exit) and resuming the conversation works, but the issue recurs unpredictably.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗