Codex app composer loses caret and Chinese IME input after task completion
Open 💬 3 comments Opened Jun 5, 2026 by BigSmarti-hub
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Summary
In the Codex desktop app, after a task finishes, the message composer can lose its visible caret. The composer still accepts English input, but the blinking caret is not visible, and Chinese input through the macOS input method cannot be entered.
Environment
- Platform: macOS
- Surface: Codex desktop app
- Bundled Codex version:
codex-cli 0.137.0-alpha.4 - Date observed: 2026-06-05
- Input method note: Rime/Squirrel is no longer installed or in use on this machine, so this is not specific to Rime.
What happened
- Use a normal Codex desktop app thread.
- Let Codex finish a task.
- Return to the composer at the bottom of the thread.
- The blinking text cursor/caret in the composer is gone.
- Switching to English input allows typing, but the caret is still invisible.
- Switching to Chinese input does not allow Chinese text entry.
Expected behavior
After a task finishes, the composer should keep or restore a normal editable focus state:
- the caret should be visible,
- English input should work,
- Chinese IME composition should work.
Actual behavior
- The caret disappears from the composer.
- English typing can still insert text, but without a visible caret.
- Chinese input cannot be entered.
Workarounds tried
Switching input methods does not fully recover the composer state. Restarting or refocusing the app may be required.
Impact
This interrupts follow-up prompts after a task completes, especially for users writing prompts in Chinese.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I am seeing the same class of bug, still reproducible on a newer Codex Desktop build.
Environment
26.616.81150CFBundleVersion:4306com.openai.codex149.0.7827.11526.5.1build25F8025.5.0arm64codex-cli 0.142.0codex --version:codex-cli 0.142.1Observed behavior
During an ongoing Codex App session, especially after receiving an assistant response or after switching between several sessions/threads, the composer can enter a broken focus/IME state:
This matches the symptoms already described here and in related issues such as #26369, #25321, #27549, and #28872.
Reproduction pattern
The trigger is intermittent, but the pattern is:
Expected behavior
When the Codex window is active and the composer is clicked, the composer should always become the active editable target:
Local log observations
I did not attach full logs because they may contain local/session data. A filtered macOS unified log around active composer/IME use showed repeated TextInputUI/IMK activity, for example:
I do not know whether those messages are causal, but they match the affected layer: macOS TextInputUI / IMK / caret handling inside Codex's desktop shell.
Workarounds observed
Developer-side hypothesis
This looks like a stale composer focus / first-responder / ProseMirror focus state issue in the Codex Desktop shell, possibly at the AppKit + Chromium/Electron + macOS IME composition boundary. The app seems able to receive some ordinary keyboard or paste events while failing to keep the composer as the correct IME composition target.
Additional data point: this is still reproducible on a newer Codex Desktop build, and in this case the usual focus workarounds do not recover the composer.
Environment
26.623.70822CFBundleVersion:4559com.openai.codex26.3.1 (a)build25D771280aObserved behavior
When a Codex thread/turn is running, the composer can get into a broken input state:
Cmd+Rdoes not recover input;This makes the failure mode stronger than a normal missing-focus case. It looks like the app/renderer input or IME target state is stuck while the thread is active, rather than just the composer not being visually focused.
Expected behavior
Even while a Codex turn is running, the composer should remain usable as an editable target, including normal macOS Chinese IME composition/candidate behavior, without requiring an app restart.