这两天,我把 Windows 版 Codex 的手机远程控制功能折腾通了。
先说结论:
Windows 版 Codex 其实已经带了远程控制能力,只是默认没有完全放出来。
如果你的界面里只有 SSH connections from this PC,看不到 Control this PC 或 Control other devices,不一定是你版本太旧,也不一定是你找错了地方。更可能的情况是:功能代码已经在客户端里,但开关还没有真正生效。
我一开始也被这个问题绕了一圈。
官方页面还在说 Windows 支持即将到来,客户端安装包里却已经有了 Connect a device to this PC、Control this PC 这些界面文案。真正把问题拆开后才发现,“功能已经写进客户端” 和 “功能已经对你的账号开放” 之间,中间还隔着一层配置和授权。
这篇文章不只讲原理,也把完整脚本、完整操作步骤,以及一段可以直接复制给 Codex 的提示词都放出来。
你甚至可以把这篇文章直接发给 Codex,让它照着检查你的电脑并自动完成配置。
一、先确认你遇到的是不是同一个问题
如果你打开 Codex:
进入
Settings打开
Connections页面里只看到
SSH connections from this PC
那你遇到的,大概率就是我碰到的这个问题。
也就是说:
客户端里已经有远程控制相关功能
但当前界面只展示了 SSH
远程控制的入口还没有真正出现
这时候,问题通常不在“你不会用”,而在“开关还没有被打开”。
二、真正关键的配置,不在界面里
Codex 的本地配置文件在这里:
C:\Users\<你的用户名>\.codex\config.toml打开后,找一下有没有 [features] 这一段
很多人的配置里,原本只有这些:
[features]goals = trueremote_connections = trueworkspace_dependencies = false
真正关键的是,还需要补上这一行:
remote_control = true最后变成:
[features]goals = trueremote_connections = trueremote_control = trueworkspace_dependencies = false

如果没有直接在config.toml文件中加上
[features]goals = trueremote_connections = trueremote_control = trueworkspace_dependencies = false
三、为什么我加完之后,重启又失效了
这里是这次最容易踩坑的地方。
我第一次把 remote_control = true 加进去之后,重启 Codex,发现它又没了。
不是没保存成功,而是codex新版 Windows 客户端会在启动过程中,把这行配置重新删掉。
这就导致一个很烦的循环:
你手动加上
remote_control = true重启 Codex
Codex 启动时把它删掉
你回到界面,还是只能看到 SSH
这是因为目前codex windows远程控制功能目前是测试版,官方故意把它的启动流程抹掉了。

四、解决办法:在启动时把这行配置“保住”
目前最实用的办法,是在启动 Codex 前:
确认
remote_control = true已经写入临时把
config.toml设为只读启动 Codex
等启动稳定后,再取消只读
这样做的目的很简单:
让 Codex 在启动阶段读到这行配置,但来不及把它删掉。
如果你只想手动验证一次,可以这么做:
编辑
config.toml加上
remote_control = true右键文件,打开属性
勾选“只读”
启动 Codex
等客户端完全打开后,再把“只读”取消
如果你会频繁使用,最好写一个小脚本,把这件事自动化:
先关闭正在运行的 Codex
备份配置文件
自动补上
remote_control = true临时锁定配置文件
启动官方 Codex App
等启动稳定后自动解除只读
这样以后每次都用脚本启动,不需要再手工补配置。
下面就是我实际使用的完整脚本。
把它保存为:
C:\Users\<你的用户名>\.codex\codex-remote.ps1脚本内容如下:
# ====================================# CODEX STARTUP WRAPPER# Auto-detect Codex Windows App ID# ====================================$ConfigPath = "$env:USERPROFILE\.codex\config.toml"$BackupPath = "$env:USERPROFILE\.codex\config.backup.toml"try {Write-Host ""Write-Host "==============================="Write-Host " Codex Startup Wrapper"Write-Host "==============================="Write-Host ""# FIND CODEX APP ID$CodexApp = Get-StartApps | Where-Object {$_.Name -match "Codex"} | Select-Object -First 1if (-not $CodexApp) {throw "Codex app not found in Start Apps."}Write-Host "Found Codex App:"Write-Host $CodexApp.NameWrite-Host $CodexApp.AppIDWrite-Host ""# FIND CODEX PROCESS$CodexProcess = Get-Process -ErrorAction SilentlyContinue | Where-Object {$_.ProcessName -match "^Codex$|^codex$"}# GRACEFUL SHUTDOWNif ($CodexProcess) {Write-Host "Codex is running. Closing..."foreach ($p in $CodexProcess) {$p.CloseMainWindow() | Out-Null}Start-Sleep -Seconds 3$StillRunning = Get-Process -ErrorAction SilentlyContinue | Where-Object {$_.ProcessName -match "^Codex$|^codex$"}if ($StillRunning) {Write-Host "Force stopping Codex..."$StillRunning | Stop-Process -Force}Start-Sleep -Seconds 1}else {Write-Host "Codex not running."}# MAKE CONFIG WRITABLEif (-not (Test-Path $ConfigPath)) {New-Item -ItemType File -Path $ConfigPath -Force | Out-Null}attrib -R $ConfigPath# BACKUP CONFIGCopy-Item $ConfigPath $BackupPath -ForceWrite-Host "Backup created:"Write-Host $BackupPathWrite-Host ""# ENSURE remote_control EXISTS UNDER [features]$content = Get-Content $ConfigPath -Rawif ($content -notmatch '(?m)^\s*remote_control\s*=\s*true\s*$') {if ($content -match '(?m)^\[features\]\s*$') {$content = $content -replace `'(?m)^(\[features\]\s*)$',"`$1`r`nremote_control = true"Set-Content $ConfigPath $contentWrite-Host "Inserted remote_control under [features]"}else {$content += "`r`n`r`n[features]`r`nremote_control = true`r`n"Set-Content $ConfigPath $contentWrite-Host "Created [features] section."}}else {Write-Host "remote_control already exists."}Write-Host ""# TEMP LOCK CONFIGattrib +R $ConfigPathWrite-Host "Config locked as read-only."Write-Host ""# START OFFICIAL CODEX APPWrite-Host "Launching Codex..."Start-Process "shell:AppsFolder\$($CodexApp.AppID)"# WAIT FOR CODEX PROCESSdo {Start-Sleep -Milliseconds 500$Running = Get-Process -ErrorAction SilentlyContinue | Where-Object {$_.ProcessName -match "^Codex$|^codex$"}} until ($Running)Write-Host "Codex process detected."# WAIT UNTIL STARTUP STABILIZESWrite-Host "Waiting for startup to stabilize..."$StableCount = 0$LastWrite = (Get-Item $ConfigPath).LastWriteTimeUtcwhile ($StableCount -lt 5) {Start-Sleep -Milliseconds 500$CurrentWrite = (Get-Item $ConfigPath).LastWriteTimeUtcif ($CurrentWrite -eq $LastWrite) {$StableCount++}else {$StableCount = 0$LastWrite = $CurrentWrite}}Write-Host "Startup stabilized."Write-Host ""}finally {attrib -R $ConfigPathWrite-Host "Config unlocked."Write-Host ""Write-Host "Done."}
以后你只需要用 PowerShell 运行它:
powershell-ExecutionPolicyBypass-File"$env:USERPROFILE\.codex\codex-remote.ps1"
它会自动完成这些事:
找到你安装的 Codex Windows App
关闭当前正在运行的 Codex
备份
config.toml确保
[features]下存在remote_control = true临时把配置文件设为只读
启动官方 Codex App
等启动稳定
自动解除只读
这样做的好处是,不会为了保住一行配置,就让整个文件长期处于只读状态。Codex 后续还可以继续正常写入 runtime、skills、plugins 等信息。
五、还有一个很多人忽略的前提:开启 MFA
这次排查里,另一个非常关键的点是:
不少人是在开启 ChatGPT 账号的 MFA 之后,手机端授权才真正成功。
MFA 就是多因素认证。简单说,就是登录账号时,除了密码之外,再多一层确认,比如认证器 App 的动态验证码。
你可以在 ChatGPT 网页端:
Settings -> Security -> Multi-Factor Authentication把它打开。
如果你已经改好了本地配置,但手机端还是迟迟连不上,优先检查这一项。
有时候,问题不在 Windows,也不在 Codex,而在你的账号还没有满足远程授权的安全条件。
六、最省事的用法:直接把这篇文章发给 Codex
如果你不想自己改文件,也不想自己写脚本,最简单的做法其实是:
把这篇文章完整发给 Codex,然后让 Codex 按文章内容直接帮你配置。
你可以把下面这段提示词直接复制给 Codex:
请根据这篇文章,直接在我的 Windows 电脑上完成 Codex 远程控制配置。要求:1. 先检查当前 Codex 版本、当前分支、C:\Users\<用户名>\.codex\config.toml 的实际内容。2. 保持所有文件使用 UTF-8 读写,不要破坏已有中文或特殊字符。3. 在 [features] 下确保存在: remote_connections = true remote_control = true4. 如果发现新版 Codex 启动时会删除 remote_control = true,请创建一个启动脚本: C:\Users\<用户名>\.codex\codex-remote.ps15. 这个脚本需要: - 备份 config.toml - 自动补上 remote_control = true - 启动前临时把 config.toml 设为只读 - 启动 Codex - 等启动稳定后自动解除只读6. 完成后实际验证: - config.toml 中 remote_control = true 是否保留 - Codex 重启后是否仍然保留7. 如果需要我手动做的步骤,例如开启 ChatGPT MFA、在手机端授权,请明确告诉我。
如果你希望它更主动一点,还可以在最后再加一句:
除非涉及删除大量代码、改公共接口或执行危险操作,否则不要只给方案,请直接完成配置并验证。七、我最后是怎么成功的
我这次真正跑通,大致是这条路线:

确认 Windows Codex 已经是新版本
打开本地
config.toml在
[features]下加入:
remote_connections = trueremote_control = true
发现重启后
remote_control = true会被自动删除改用启动脚本,先锁住配置,再启动 Codex
确认 ChatGPT 账号已经开启 MFA
打开手机上的 ChatGPT App
进入 Codex,完成授权
成功从手机接管 Windows 上的 Codex
附上成功配图,可以用手机来控制windows版codex了

免责声明:本文内容基于作者在特定版本、特定时间下的实际测试与公开讨论整理,仅用于技术交流与经验分享,不代表官方说明。Codex 相关功能、配置项与可用性可能会随版本更新而变化;文中方法也可能在后续版本中失效。请读者自行评估风险,并以官方最新说明为准。
夜雨聆风