[BUG] Ctrl+C (app:interrupt) does not work when macOS CJK IME is active
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When a CJK input method (Korean, Japanese, Chinese) is active on macOS, Ctrl+C is silently swallowed by the OS-level IME composition layer before it reaches the terminal. Zero bytes arrive at stdin. Since app:interrupt is hardcoded to Ctrl+C and cannot be rebound, there is no way to cancel a running operation without switching back to English first.
What Should Happen?
Ctrl+C should interrupt the running operation regardless of active input method, or an alternative interrupt key (e.g., Escape during a running operation) should be available.
Error Messages/Logs
Steps to Reproduce
- macOS with Korean IME (or any CJK input method) enabled
- Switch to Korean input mode
- Start Claude Code and trigger a long-running operation
- Press Ctrl+C — nothing happens
- Verified with raw stdin test: zero bytes arrive at process.stdin
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.92 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Proposed fix: Make app:interrupt rebindable via keybindings.json, or treat Escape as interrupt when an operation is running (Escape is never consumed by IME, and chat:cancel is irrelevant while streaming).
Affects all CJK input method users.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗