Codex over SSH drops keystrokes, emits IO errors.

Resolved 💬 1 comment Opened Feb 6, 2026 by preston-evans98 Closed Feb 13, 2026

What version of Codex CLI is running?

codex-cli 0.98.0

What subscription do you have?

Pro

Which model were you using?

gpt-5.2-codex, gpt-5.3-codex

What platform is your computer?

Linux 6.8.0-90-generic x86_64 x86_64 (remote server) Darwin 24.6.0 arm64 arm (local)

What terminal emulator and version are you using (if applicable)?

Cursor, Ghostty

What issue are you seeing?

Description

When using the Codex CLI over SSH on a remote server, the instance quickly gets into a bad state where keystrokes are silently dropped uring normal typing (i.e. not pasting). The faster I type, the more frequently characters go missing. Upon exiting Codex, one or more EIO errors are printed:

  Error: read EIO
      at TTY.onStreamRead (node:internal/stream_base_commons:216:20) {
    errno: -5,
    code: 'EIO',
    syscall: 'read'
  }

This error occurs on Ghostty, Iterm2, and in Cursor's integrated terminal. It typically appears within a few minutes of a session starting.

Example

Typing the following sequence into Codex:

> Great, go ahead!

yields

> Ga, o hd

What steps can reproduce the bug?

  1. SSH into a remote Linux server (from Cursor SSH or Ghostty - both reproduce it). More latency to the remote server seems to increase the frequency of the bug.
  2. Run codex as normal until keystrokes start getting swallowed
  3. Exit Codex and observe the EIO errors on stderr

I suspect that the issue is may require tool use to trigger, although I am not sure. 019c340b-3271-7572-bff8-d75d8025f22a is one session where it occurred.

~Important note: I have not (yet) been able to reproduce the bug from iTerm2.~ Update: I have successfully reproduced the issue in iterm2 as well. However, it did seem to take longer to trigger than in the other terminals.

What is the expected behavior?

All keystrokes should be received and displayed. No EIO errors on exit.

Additional information

Non-Causes

  1. This is not a terminal emulator issue. The following all work correctly over SSH in the same terminal sessions where Codex fails:
  • Claude Code (also a Node.js TUI in raw mode)
  • vim, htop, less, etc.
  1. This is not an issue with Cursor/VsCode's integrated terminal in particular. I'm able to reproduce using Ghostty and Iterm2
  1. Not a duplicate of #9907 — that issue was specific to pasted input. This issue affects normal keystroke input, reproduces on Linux across multiple terminal emulators, and is accompanied by diagnostic EIO errors that point to a TTY lifecycle management bug in Codex itself.

Suspicions

The fact that several separate EIO errors are emitted on exit suggests to me that Codex may have multiple concurrent onStreamRead listeners attached to stdin. Over SSH, the higher latency likely widens the race window between these readers.

View original on GitHub ↗

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