Bug: Enter key used to confirm Japanese IME composition submits answer in Plan Mode
Open 💬 4 comments Opened Feb 7, 2026 by jtheonion
Version
Codex App: 260206.1448 (build 565)
Subscription
ChatGPT Plus
Model
GPT-5.3-Codex(Extra High)
Platform
macOS 26.2 (Build 25C56)
What happened
In Plan Mode, while answering a question in Japanese, pressing Enter to confirm an IME conversion candidate sends the answer immediately.
Steps to reproduce
- Open Codex desktop app and enter Plan Mode.
- Ask/receive a question that requires a typed response.
- Type Japanese text with IME and trigger conversion candidates.
- Press Enter to confirm a candidate.
Expected behavior
Enter during IME composition should only confirm composition, not submit the answer.
Submission should occur only when composition is finalized and the user explicitly submits.
Actual behavior
Candidate-confirmation Enter is interpreted as submit.
Frequency
Always
4 Comments
Reproducing this in the VS Code extension as well (the original report is about the desktop app, but the behavior is identical — likely the same chat composer component).
Environment
openai.chatgpt):26.417.40842-darwin-arm641.116.0(arm64)15.7.3(build 24G419, Apple Silicon)Repro
てすと.テスト, then press Enter to commit the IME candidate.Frequency
Always (100% reproducible with Google Japanese Input on macOS).
Likely cause
The keydown handler on the composer appears to treat Enter as submit without checking
event.isComposing(orevent.keyCode === 229). The standard fix is to bail out early while composition is active:This is a very common oversight in web-based chat inputs and affects every IME that uses Enter to confirm conversion (Japanese, Chinese, Korean).
Same here. Reproduces with Japanese IME. This makes Plan Mode free-form answers hard to use because Enter is used to confirm IME conversion, but Codex also treats it as submitting the answer.
Since the Desktop / VS Code UI source is not public, external contributors cannot submit a PR directly.
OS: macOS 26.4 (Build 25E246)
App: Codex Desktop 26.513.20950
IME: Japanese IME
I can reproduce what looks like the same bug in Codex Desktop.
Environment:
Behavior:
Implementation suspicion:
event.isComposing,event.nativeEvent?.isComposing, and/orevent.keyCode === 229.Local logs do not capture key event state, but the behavior is consistently reproducible with Japanese IME composition confirmation.
I’d like to work on a focused fix for this, if the Codex team is open to an external PR for this issue.
Reproduction environment
I can reproduce the issue when answering a
request_user_input/ Plan Mode question with Japanese IME enabled. Pressing Enter to confirm IME composition is treated as submitting or advancing the answer.This matches the behavior reported above:
request_user_inputquestion UI focusedRoot cause hypothesis
The
request_user_inputanswer UI appears to reuse the TUIChatComposer, but its submit handling likely does not distinguish IME composition Enter from an intentional submit Enter.In particular, the overlay submit path seems to treat the configured composer submit key as submit/next without checking whether the key event is part of IME composition.
The likely area is:
codex-rs/tui/src/bottom_pane/request_user_input/mod.rscodex-rs/tui/src/bottom_pane/chat_composer*Proposed scope
I’d keep the PR narrowly scoped to the
request_user_input/ Plan Mode question UI behavior:request_user_inputprotocol or app-server API.Proposed approach
Add an IME-composition guard in the relevant Enter/submit handling path, so Enter during composition is allowed to confirm the IME candidate and is not interpreted as submit/next.
If the existing event type exposes composition state, use that directly. If not, I’ll first trace where composition state is represented in the TUI input stack and keep the fix local to the composer/overlay boundary.
Test plan
I plan to add regression coverage for the
request_user_inputoverlay / composer path so that:request_user_inputsnapshot coverage remains stable unless the expected UI behavior intentionally changes.Would the Codex team be open to an invited PR for this narrow fix?