[BUG] Japanese IME switching becomes permanently stuck after a few toggles in a session (Windows Terminal)

Resolved 💬 3 comments Opened Mar 28, 2026 by KTKR-DSK Closed Mar 31, 2026

Problem

After toggling Japanese IME (半角/全角 key) a few times within a single Claude Code session, the IME switching stops working entirely — only English input is accepted for the remainder of the session. Restarting the session restores functionality temporarily, but the issue recurs.

Steps to Reproduce

  1. Open Claude Code CLI in Windows Terminal
  2. Toggle Japanese input using the 半角/全角 (Hankaku/Zenkaku) key — works initially
  3. Type some Japanese text, switch back to English, switch to Japanese again
  4. After several toggles (varies, but typically 3-5 times), the IME toggle stops responding
  5. Only English input is possible from this point — 半角/全角 key has no effect

Expected Behavior

IME switching should work reliably throughout the entire session, regardless of how many times the user toggles between Japanese and English input.

Actual Behavior

After a few IME toggles, the input becomes permanently locked to English-only mode. The 半角/全角 key no longer triggers the IME switch. This persists until the Claude Code session is restarted.

Environment

  • OS: Windows (via Windows Terminal, with WSL backend running Linux 6.17.0)
  • Terminal: Windows Terminal
  • IME: Windows built-in Japanese IME (Microsoft IME)
  • IME toggle key: 半角/全角 (Hankaku/Zenkaku)
  • Claude Code version: 2.1.86

Possibly Related Issues

  • #38694 — Kitty keyboard protocol intercepts Caps Lock, breaking macOS IME switching
  • #39128 — Caps Lock key leaks Kitty protocol escape sequence (regression in 2.1.84)
  • #27857 — CJK IME composition broken (React Ink root cause)

These issues share a common root cause: Claude Code's Kitty keyboard protocol / React Ink TextInput intercepting IME-related key events. The Linux/WSL + Windows Terminal + 半角/全角 key combination may trigger a similar protocol-level interception that degrades over repeated toggles.

Notes

  • The issue is not present in other terminal applications (the IME works fine outside Claude Code)
  • The degradation is progressive — it works for the first few toggles, then stops entirely
  • This suggests a state accumulation bug rather than a simple key interception issue

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗