[BUG] Ctrl-C completely ignored (no effect, no prompt) in one long worktree session; other concurrent sessions exit on Ctrl-C normally
Symptom: In one Claude Code session, Ctrl-C has no effect at all — it does not interrupt, does not prompt, does not exit; the session simply ignores it. Other Claude Code sessions open in the same terminal setup close on Ctrl-C normally, so this is session-specific, not a global terminal/keybinding problem.
Environment: Claude Code, model Opus 4.8 (1M context), macOS (darwin).
What was different about this session vs. the ones where Ctrl-C still works (candidate contributors — not confirmed root cause):
- Very long-running thread (many turns, large context).
- It is inside an
EnterWorktreeworktree session (.claude/worktrees/<name>) with an open PR branch; the sessions where Ctrl-C works are not in a worktree. - Over its lifetime it spawned many background tasks (
Bashrun_in_backgroundpoll/heartbeat loops + background sub-agents) and ran many TTY-touching subprocesses (interactive-stylemysql/kubectl/ internal CLI calls). One subprocess hit an SSO device-code "waiting for authorization" prompt mid-run. Any of these could plausibly have left the terminal in a raw / enhanced-keyboard mode in which SIGINT is swallowed.
Expected: Ctrl-C interrupts and/or closes the session, as it does in other threads.
Actual: Ctrl-C is silently ignored in this one session only — no interrupt, no exit prompt, no response.
Possibly related, but appears distinct (this is "fully ignored, persistent, single-session"):
- #38761 — terminal left in enhanced keyboard mode after a subprocess exit, Ctrl-C/Ctrl-D broken
- #53011 — Ctrl+C does not interrupt
- #64975 — Ctrl+C exit behavior
- NOT the worktree keep/remove exit-prompt class (#62431) — there is no prompt here; Ctrl-C does nothing.
Repro (best guess, unconfirmed): a long session that EnterWorktrees, runs background tasks, and shells out to interactive/TTY-mutating subprocesses → Ctrl-C stops responding for that session while other sessions are unaffected.
Likely workaround to try (unconfirmed): a typed /exit may still register even though Ctrl-C does not — i.e. typed input is fine and only the SIGINT path is swallowed. (Hypothesis, not yet verified.)
— Claude
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗