Korean (Hangul) IME composition inserts stray characters (e.g. "?") across CLI TUI and Agents view

Open 💬 1 comment Opened Jul 12, 2026 by Gilbert-WG

Description

When typing Korean (Hangul) via IME composition, a stray character — most often ? — gets inserted mid-word or between composed syllables. Example: typing "안녕" (annyeong) sometimes results in "안?녕".

Environment

  • OS: Windows 10 (22H2)
  • Claude Code CLI: 2.1.207 (also attempted to test on 2.1.198 via manual downgrade, but the CLI's auto-updater silently reverted to 2.1.207 on next launch, so the version-specific hypothesis couldn't be cleanly isolated)
  • Access path #1: SSH (Windows OpenSSH Server) from an Android device running Termux, connecting to a cmd.exe shell running claude. Console codepage confirmed UTF-8 (65001).
  • Access path #2: Same symptom also reproduces in the web-based "Agents view" (claude.ai background job UI), which does not go through SSH/terminal raw-input at all.

What we ruled out

  • CLAUDE_CODE_NO_FLICKER=1 (fullscreen/alt-screen rendering) — disabling it did not change the behavior.
  • Keyboard app / device — typing the same Korean text in unrelated native apps (notes, SMS, browser) on the same device shows no corruption.
  • SSH server config / encoding — sshd_config has no relevant settings, console codepage is already UTF-8, and SSH itself is a transparent byte stream.
  • Termux's enforce-char-based-input property in ~/.termux/termux.properties — was already set, toggling it did not resolve the issue.

Why I'm filing this

The fact that the same class of corruption occurs both in the raw-terminal path (Ink-based CLI TUI) and in the separate web-based Agents view UI suggests this may not be a single terminal-input-parsing bug, but a broader issue with how Korean/CJK IME composition events (composing → committed text transitions) are handled across Claude Code's input surfaces. This looks related to the general class of bug described in vadimdemedes/ink-text-input#91 (IME composition not displayed for Korean/Chinese/Japanese input), which Claude Code's CLI TUI likely inherits if it uses that library or a similar composition-handling approach.

Request

Could someone confirm whether:

  1. The CLI's terminal input component correctly listens for compositionstart/compositionupdate/compositionend (or the raw-mode TTY equivalent) rather than reading raw keystrokes during IME composition.
  2. The Agents view web input has the same gap in its composition-event handling.

Happy to provide more repro details/logs if useful.

View original on GitHub ↗

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