[BUG][Windows] Korean Hangul jamo do not compose while typing in CLI input (raw-mode TUI bypasses IME)
Summary
On Windows, typing Korean (Hangul) directly into the Claude Code CLI prompt does not compose jamo into syllable blocks. Each consonant/vowel is inserted as a separate character — e.g. typing 한글 produces ㅎㅏㄴㄱㅡㄹ instead of 한글. This makes the CLI effectively unusable for native Korean input.
Reported by: Moon Shine (Korean ECDIS / maritime software developer, daily Claude Code user). Name disclosure authorized.
Environment
- OS: Windows 11 Pro (build 26200)
- Claude Code: CLI (latest), interactive prompt
- Shell/Terminal: PowerShell in Windows Terminal (also reproduces in legacy conhost)
- Input: Microsoft IME (Korean)
Steps to reproduce
- Launch
claudein the terminal on Windows. - In the input prompt, switch to the Korean IME and type any Korean word (e.g. 한글).
- Observe the input box.
Expected
Jamo compose into syllable blocks as in any native text field: 한글.
Actual
Jamo are inserted individually without composition: ㅎㅏㄴㄱㅡㄹ. The same happens for every Korean word, making real typing impractical — users must compose text in an external editor and paste it on every prompt.
Root cause (analysis)
This is not an algorithmically hard problem. IME composition (preedit) is a long-solved, fully documented capability on Windows (IMM32 / TSF, WM_IME_COMPOSITION); every native text box gets it for free.
The CLI sits at a raw-mode TUI layer (React Ink) that deliberately bypasses the terminal's normal input processing to read keystrokes directly. In that mode:
- Keystrokes are delivered before IME composition completes, so partial jamo are read as final characters.
- The renderer repositions the cursor via ANSI escapes on every re-render, which detaches the IME preedit window from the caret.
So the gap is architectural / prioritization, not difficulty — the input widget was built without CJK composition in mind.
Impact
Korean is a top-tier Claude Code user base. In the current state the CLI cannot be used for native Korean input. For users whose organizations mandate the CLI (and disallow the desktop/web clients), there is no acceptable path — paste-from-editor on every prompt is a daily, blocking friction, and several of us are at the point of switching tools over this alone.
Related / reference
- Closed canonical issue: #22853 (Fix IME input for Vietnamese, Chinese, Japanese, Korean — character loss)
- Upstream React Ink IME composition handling: vadimdemedes/ink#865 (unmerged)
- Docs gap: #39112 (interactive mode docs missing native terminal IME composition)
Request
Please prioritize proper IME composition buffering for CJK (Korean / Japanese / Chinese) input in the CLI input widget — buffer keystrokes until the IME composition is committed, and keep the preedit window anchored to the caret. This is a fundamental usability blocker for CJK users, not a cosmetic issue.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗