Codex ships a remote-control command its own docs say does not exist
codex remote-control start pairs a headless Linux box to the ChatGPT mobile app, while OpenAI's Remote guide tells you the CLI cannot do that.

Tanishq Abraham posted on September 7th that his favourite Codex feature is not in the documentation and that he found it on Reddit. He runs it every day: codex remote-control start on the GPU slurm cluster his lab SSHes into, codex remote-control pair for a code, then the code goes into the Remote section of the ChatGPT mobile app.

One of my favorite features of Codex/ChatGPT is not even documented in the main docs, I discovered it on Reddit.
So basically we have a GPU slurm cluster that we SSH into, and I wanted to be able to run Codex on it from my phone.
ChatGPT Desktop supports SSH connections but how about accessing it directly from mobile app?
Turns out there is a separate "Remote Control" feature not officially documented anywhere.
Simply run "codex remote-control start" on the server you want to Codex into from your mobile. Then run "codex remote-control pair" to getting pairing codes. Then in the app, go to the Remote section, "Add connection", select "Pair manually", and put in the pairing code.
It's that simple!
I use this feature pretty much every day to manage autoresearch experiments and other training runs on our GPU cluster.

We went looking. The command is real, it is in the shipped binary, and the docs do rather worse than omit it.
Here is the relevant part of codex-rs/cli/src/main.rs and remote_control_cmd.rs in the openai/codex repository, verbatim:
/// [experimental] Manage the app-server daemon with remote control enabled.
RemoteControl(RemoteControlCommand),
enum RemoteControlSubcommand {
/// Start the app-server daemon with remote control enabled.
Start,
/// Stop the app-server daemon.
Stop,
/// Create and print a short-lived manual pairing code.
Pair,
}
Three subcommands, 780 lines of implementation, JSON output, a lifecycle daemon (there are unit tests for the pairing output format). Probably not a leftover.
Now the documentation. OpenAI's Codex docs index lists two Remote pages, and neither mentions the CLI. The "Remote connections" guide goes further and rules it out in a sentence about what you need before you start.
The latest ChatGPT desktop app for macOS or Windows running on a host that's awake, online, and signed in to the same account and workspace. Mobile setup starts from the app; you can't set it up from the Codex CLI or IDE extension.
That is not an undocumented feature. It is a documented denial, and it is wrong.
Why would a company write that? Look at the shape of the supported path and the answer is fairly clear. Remote assumes a host running the ChatGPT desktop app on macOS or Windows, paired by QR code, kept awake, with MFA or SSO on the account and an admin toggle at the workspace level. Every one of those assumptions breaks on the machine Abraham actually uses, which is a Linux login node he reaches over SSH and which will never run a desktop app. The docs even suggest a workaround for exactly his case — connect the desktop app to the SSH host first — which means keeping a Mac awake in the middle so a phone can talk to a cluster.
So the CLI subcommand is the escape hatch, and marking it [experimental] while leaving it out of the docs is roughly how you ship an escape hatch without owning it.
Compare Anthropic, which has the same feature and treats it as ordinary product surface. Claude Code's v2.1.252 notes carry a bug fix for "Remote Control sessions hosted by Claude Desktop or VS Code stalling for minutes after a tool finished when the connection to claude.ai was degraded". Two releases later, v2.1.260 added a text form of /advisor for "the desktop app, Remote Control, and other headless (-p/Agent SDK) sessions". Dull sentences, both of them, and that is the point. The feature is named in the changelog, so a user can search for it and an admin can reason about it.
Our read is that this gap is a security problem before it is a documentation problem. remote-control pair mints a short-lived credential that grants a phone the ability to run commands on the host, and the guidance covering identity checks, device management and workspace enablement is attached to the flow it is not on. If you run this on a shared cluster login node, think for a moment about who else has a shell there while the daemon is up. As far as we can tell nobody at OpenAI has written down what that pairing code is worth, because officially you cannot create one.
The fair defence is that [experimental] means what it says, and shipping an unfinished path behind a flag beats not shipping it. Fine. But the flag is not hidden (the subcommand sits in the top-level command list, next to login and mcp), and a great many researchers have exactly Abraham's setup.
We would expect this to be documented or deleted before the end of 2026, probably the former. If a Codex release note names remote-control and the Remote connections guide loses that sentence, the escape hatch has become a feature. If the subcommand quietly disappears instead, that tells you what OpenAI thinks the pairing code is worth.
