Esc does not interrupt streaming response (Ctrl+C works); reproduces across terminals on latest 2.1.187 / macOS
Open 💬 0 comments Opened Jun 24, 2026 by darion-yaphet
What happened
Pressing Esc while Claude is actively streaming a response does nothing — the
generation continues. Ctrl+C interrupts correctly in the same moment, so the
interrupt path itself works; only the Esc keybinding is dead.
Repro
- Start
claudein the terminal - Ask anything that produces a multi-second streaming response
- While it is streaming, press
Esc→ no effect, output keeps going - Press
Ctrl+Cinstead → interrupts immediately
Scope / what I already ruled out
- Cross-terminal: reproduces in both Kaku and Ghostty → not a single terminal emulator
- Latest version:
2.1.187,claude updatereports up to date - Single install: removed a leftover npm global (
@anthropic-ai/claude-code@2.1.156); now only the native~/.local/bin/clauderemains; still reproduces - No Vim mode, no custom
~/.claude/keybindings.json - No global key remapper (no Karabiner-Elements / Hammerspoon / etc. running)
- Not a timing issue: Esc is pressed during active streaming (the window where it should interrupt)
Ctrl+Cinterrupting fine → interrupt mechanism works, Esc keycode handling specifically does not
Environment
- Claude Code: 2.1.187 (native install,
~/.local/bin/claude) - macOS 14.6 (23G80), arm64
- Terminals confirmed: Kaku 0.12.1, Ghostty
- TERM=xterm-256color
Why the detail matters
"Cross-terminal + latest version + Ctrl+C works but only Esc fails" should narrow
this to Esc keycode handling in the TUI rather than terminal/config/version.