[BUG][Windows] Korean Hangul jamo do not compose while typing in CLI input (raw-mode TUI bypasses IME)

Resolved 💬 1 comment Opened Jun 5, 2026 by mshine0208 Closed Jul 10, 2026

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

  1. Launch claude in the terminal on Windows.
  2. In the input prompt, switch to the Korean IME and type any Korean word (e.g. 한글).
  3. 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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗