Enable Settings > Connections > Control other devices in Codex Desktop for Windows without modifying ChatGPT.exe
, app.asar
, or any file under C:\Program Files\WindowsApps
.
Tested with Codex Desktop 26.715.7063.0
on Windows 11.
Important
Enable multi-factor authentication (MFA) on your OpenAI/ChatGPT account before linking the account or adding a device. Remote-control enrollment requires MFA to already be active.
Warning
This is an unofficial, version-sensitive runtime experiment. It launches Codex with localhost debugging ports that can execute code inside the Codex process. Use it only on a trusted machine, and launch Codex normally when you are finished.
-
Shows the shipped Control other devices tab on Windows. - Authorizes and stores a Windows controller device key.
-
Lists signed-in Codex devices available to control.
-
Opens projects on a connected remote host.
-
Leaves the installed Codex package unchanged.
-
Windows 10 or Windows 11.
-
Codex Desktop installed from the Microsoft Store/MSIX package.
-
Node.js 22 or newer available as
node.exe
onPATH
. - MFA enabled on the OpenAI/ChatGPT account before device enrollment.
-
Another signed-in Codex host available on the same account.
Download this gist or clone it with GitHub CLI:
gh gist clone dc4b74bda0e045e33f308099182b4f80 codex-windows-remote-control-runtime
cd codex-windows-remote-control-runtime
Quit Codex Desktop.
Run the launcher:
powershell -NoProfile -ExecutionPolicy Bypass -File .\launch-codex-remote-control.ps1
In Codex, open
Settings > Connections > Control other devices. - Select
Add and complete authorization with the MFA-enabled account. - Create a project and choose the connected device under
New remote project.
The launcher writes diagnostics to %TEMP%\codex-remote-control-runtime.log
.
Codex Desktop 26.715
ships the Windows remote-controller UI and backend client, but two checks prevent the controller flow from working:
- Statsig gate
782640499
is inverted in the renderer. A value oftrue
hidesshowControlOtherDevices
, so the runtime override forces this one gate tofalse
. - The main process rejects device-key operations unless
process.platform
isdarwin
, then tries to loadremote-control-device-key.node
, which is not shipped in the Windows package.
The launcher starts Codex with renderer DevTools on 127.0.0.1:9322
and the Electron main-process inspector on 127.0.0.1:9333
. It then:
- Overrides only Statsig gate
782640499
in renderer Statsig clients. - Reports
darwin
only while the shippedgetAddon()
device-key method is on the call stack. - Intercepts only requests for
remote-control-device-key.node
. - Supplies an in-memory P-256 signing implementation.
- Encrypts private keys with Windows DPAPI using
CurrentUser
scope. - Stores encrypted keys in
~\.codex\remote-control-device-keys.windows.json
.
The approach was derived from zdaar/codex-hacks, but performs equivalent hooks at runtime rather than patching a copied app.asar
. The renderer injection pattern was adapted from brunolemos' Codex feature-override gist.
To disable the runtime hooks, quit Codex and launch it normally. The hooks and debugging ports exist only in the specially launched process.
After revoking remote-control access in Codex, you can optionally remove the encrypted Windows key store:
Remove-Item -LiteralPath "$HOME\.codex\remote-control-device-keys.windows.json"
You can then delete this gist folder. No installed Codex files need restoration.
The tab is missing: Confirm Codex was launched bylaunch-codex-remote-control.ps1
, then inspect%TEMP%\codex-remote-control-runtime.log
.Authorization fails before linking: Confirm MFA was enabled before starting device enrollment, then retryAdd.** No devices appear:Confirm the other Codex host is signed in to the same account, online, and configured to allow remote control. A Codex update breaks the launcher:**Launch Codex normally and stop using the override until the relevant gate and device-key code are reviewed for the new build.