What issue are you seeing?
The Codex iOS Add SSH Host flow disconnects in roughly 500 ms, before SSH authentication completes, when connecting to an exe.dev VM through exe.dev's managed SSH endpoint.
The iOS UI reports only:
Could not connect to @.exe.xyz over SSH.
This appears to be an interoperability problem in the iOS SSH client with exe.dev's RSA OpenSSH host certificate. The same iPhone, hostname, username, and private key work in Termius.
Environment
- Client: Codex/ChatGPT iOS app (current App Store build as of August 13, 2026)
- Host: exe.dev VM at
<vm>.exe.xyz:22
- Remote SSH implementation banner:
Go
- User authentication: public key
- Server host-key algorithm selected by OpenSSH:
rsa-sha2-512-cert-v01@openssh.com
- Host certificate type:
ssh-rsa-cert-v01@openssh.com
- Host certificate ID:
exe-dev-host
- CA:
ssh-ed25519 SHA256:x6vfPQUYyUMtcHUbotV89qx0jfyz6XJHm7y00780nEI
- Host-key fingerprint:
SHA256:JJOP/lwiBGOMilfONPWZCXUrfK154cnJFXcqlsi6lPo
The fingerprint matches exe.dev's published host-key documentation:
https://exe.dev/docs/faq/host-key
Steps to reproduce
- Create or use an exe.dev VM.
- In the Codex iOS app, add an SSH host using:
- Host:
<vm>.exe.xyz
- Port:
22
- Username: the exe.dev account username
- Authentication: an unencrypted supported private key
- Tap Retry or connect to the host.
- The app disconnects after approximately 500 ms.
Expected behavior
The app should complete SSH host-key verification, authenticate with the supplied private key, and start the remote Codex bootstrap flow.
Actual behavior
The app disconnects before the VM receives an authenticated SSH session. No bootstrap command or app-server proxy process is created.
Controls and diagnostics
The same key works from the same iPhone
Using Termius on the same iPhone with the exact same hostname, port, username, and private key succeeds. Running echo hello on the VM works.
Two supported user-key formats were tested
Both of these fail identically in Codex iOS:
- Unencrypted PKCS#8 Ed25519 private key
- Unencrypted SEC1 ECDSA P-256 private key
Both public keys were registered with exe.dev. The ECDSA key was also verified independently with:
ssh -o IdentitiesOnly=yes -o IdentityAgent=none \
-i codex-ios-ecdsa-p256-test.pem \
<user>@<vm>.exe.xyz 'echo ECDSA_TEST_OK'
Result:
Changing only the user-key algorithm did not change the iOS failure, so this does not appear to be an Ed25519 private-key parsing problem.
No SSH session is created during the iOS retry
While tapping Retry, the VM process table was sampled every 50 ms for new sshd-session and codex app-server proxy processes. No new process appeared.
By contrast, successful OpenSSH and Termius connections create an sshd-session immediately.
This places the failure before successful user authentication and before all Codex bootstrap logic.
The remote Codex app server is healthy
Separately verified on the VM:
- Managed app-server version:
0.147.0
- Unix control socket exists and is in
LISTEN
- Both Codex CLI
0.144.5 and 0.147.0 proxies receive:
HTTP/1.1 101 Switching Protocols
- The app-server has successfully run normal Codex threads.
Therefore this is not caused by PATH, nc -U, socket permissions, stale locks, or app-server version mismatch. The failing iOS attempt never reaches those layers.
Server KEX proposal
OpenSSH reports:
KEX algorithms:
mlkem768x25519-sha256, curve25519-sha256,
curve25519-sha256@libssh.org, ecdh-sha2-nistp256,
ecdh-sha2-nistp384, ecdh-sha2-nistp521,
diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
Host key algorithms:
rsa-sha2-256, rsa-sha2-512, ssh-rsa,
rsa-sha2-256-cert-v01@openssh.com,
rsa-sha2-512-cert-v01@openssh.com,
ssh-rsa-cert-v01@openssh.com
Ciphers:
aes128-gcm@openssh.com, aes256-gcm@openssh.com,
chacha20-poly1305@openssh.com,
aes128-ctr, aes192-ctr, aes256-ctr
OpenSSH negotiates:
kex: algorithm: ecdh-sha2-nistp256
kex: host key algorithm: rsa-sha2-512-cert-v01@openssh.com
Suspected cause
This is an inference from the evidence above: the iOS SSH implementation may advertise or select an RSA OpenSSH host-certificate algorithm but then fail while parsing or validating the certificate, terminating before user authentication.
The server also offers non-certificate RSA host-key algorithms, but Codex iOS does not expose a way to control HostKeyAlgorithms or obtain a detailed SSH error.
Relationship to existing issues
This is distinct from #22831 and #23102:
- In those reports, SSH authentication succeeds and the iOS client reaches
codex, app-server, or nc -U.
- Here, no authenticated SSH session reaches the VM at all.
- OpenBSD netcat with Unix-socket support is already installed and verified.
Suggested improvements
- Support and test RSA OpenSSH host certificates in the iOS SSH client, including
rsa-sha2-512-cert-v01@openssh.com.
- If certificate validation is unsupported, do not advertise/prefer certificate host-key algorithms; negotiate one of the server's plain RSA host keys instead.
- Surface the underlying SSH negotiation/verification error in the iOS UI.
What issue are you seeing?
The Codex iOS Add SSH Host flow disconnects in roughly 500 ms, before SSH authentication completes, when connecting to an exe.dev VM through exe.dev's managed SSH endpoint.
The iOS UI reports only:
This appears to be an interoperability problem in the iOS SSH client with exe.dev's RSA OpenSSH host certificate. The same iPhone, hostname, username, and private key work in Termius.
Environment
<vm>.exe.xyz:22Gorsa-sha2-512-cert-v01@openssh.comssh-rsa-cert-v01@openssh.comexe-dev-hostssh-ed25519 SHA256:x6vfPQUYyUMtcHUbotV89qx0jfyz6XJHm7y00780nEISHA256:JJOP/lwiBGOMilfONPWZCXUrfK154cnJFXcqlsi6lPoThe fingerprint matches exe.dev's published host-key documentation:
https://exe.dev/docs/faq/host-key
Steps to reproduce
<vm>.exe.xyz22Expected behavior
The app should complete SSH host-key verification, authenticate with the supplied private key, and start the remote Codex bootstrap flow.
Actual behavior
The app disconnects before the VM receives an authenticated SSH session. No bootstrap command or app-server proxy process is created.
Controls and diagnostics
The same key works from the same iPhone
Using Termius on the same iPhone with the exact same hostname, port, username, and private key succeeds. Running
echo helloon the VM works.Two supported user-key formats were tested
Both of these fail identically in Codex iOS:
Both public keys were registered with exe.dev. The ECDSA key was also verified independently with:
Result:
Changing only the user-key algorithm did not change the iOS failure, so this does not appear to be an Ed25519 private-key parsing problem.
No SSH session is created during the iOS retry
While tapping Retry, the VM process table was sampled every 50 ms for new
sshd-sessionandcodex app-server proxyprocesses. No new process appeared.By contrast, successful OpenSSH and Termius connections create an
sshd-sessionimmediately.This places the failure before successful user authentication and before all Codex bootstrap logic.
The remote Codex app server is healthy
Separately verified on the VM:
0.147.0LISTEN0.144.5and0.147.0proxies receive:HTTP/1.1 101 Switching ProtocolsTherefore this is not caused by
PATH,nc -U, socket permissions, stale locks, or app-server version mismatch. The failing iOS attempt never reaches those layers.Server KEX proposal
OpenSSH reports:
OpenSSH negotiates:
Suspected cause
This is an inference from the evidence above: the iOS SSH implementation may advertise or select an RSA OpenSSH host-certificate algorithm but then fail while parsing or validating the certificate, terminating before user authentication.
The server also offers non-certificate RSA host-key algorithms, but Codex iOS does not expose a way to control
HostKeyAlgorithmsor obtain a detailed SSH error.Relationship to existing issues
This is distinct from #22831 and #23102:
codex, app-server, ornc -U.Suggested improvements
rsa-sha2-512-cert-v01@openssh.com.