Codex 7890 代理与沙盒弹窗处理记录
整理时间:2026-07-10
环境:Windows 11,Codex 桌面版OpenAI.Codex 26.623.19656.0
结论
这次问题分两层:
- Codex 模型请求的 websocket 直连会超时,界面反复显示
正在重新连接 n/5。 - 为了解决重连设置
HTTPS_PROXY=127.0.0.1:7890后,Codex elevated 沙盒又因为代理端口状态不一致反复刷新,触发codex-windows-sandbox-setup.exe弹窗。
最终处理方式:
- 用户级环境变量固定 Codex 主进程代理。
- Codex 配置里的
shell_environment_policy不再把代理变量传给沙盒内 shell 命令。 - 保留
[windows] sandbox = "elevated",不降级到unelevated。
问题链路
1. 初始重连问题
本机系统代理为:
127.0.0.1:7890监听进程为BettboxCore。
当 Codex 没有显式代理环境变量时,模型流式请求会先尝试:
wss://chatgpt.com/backend-api/codex/responses该 websocket 路径超时,于是出现:
正在重新连接 1/5 正在重新连接 2/5 ... 正在重新连接 5/55 次失败后,Codex 才降级到 http:
falling back to HTTP Request completed method=POST url=https://chatgpt.com/backend-api/codex/responses status=200 OK测试确认:只给 Codex 进程设置HTTPS_PROXY=http://127.0.0.1:7890后,请求可以直接成功,不再等待 5 次重连。
2. 后续沙盒弹窗问题
设置代理变量后,Windows 反复弹出类似错误:
C:\Program Files\WindowsApps\OpenAI.Codex_26.623.19656.0_x64__2p2nqsd0c76g0\app\resources\codex-windows-sandbox-setup.exe 找不到指定的模块。这个弹窗不是项目代码报错,也不是7890端口坏了。
沙盒日志位置:
C:\Users\Zcs\.codex\.sandbox\sandbox.2026-07-09.log日志显示沙盒防火墙允许端口在两个状态之间来回变化:
sandbox setup required: offline firewall settings changed (stored_ports=[], desired_ports=[7890]) sandbox setup required: offline firewall settings changed (stored_ports=[7890], desired_ports=[])含义是:Codex 主流程和某些子流程看到的代理变量不一致,导致 elevated 沙盒一会儿认为要允许7890,一会儿又认为不需要允许代理端口。
2026-07-10 复发后重新确认:
stored_ports=[7890], desired_ports=[]这说明普通 shell 命令和fs-helper对代理端口的判断仍不一致。继续把HTTPS_PROXY注入给沙盒内 shell 命令,会让 elevated 沙盒反复刷新。
本次修改
1. 用户级环境变量
位置:
HKCU:\Environment当前值:
HTTPS_PROXY=http://127.0.0.1:7890 NO_PROXY=localhost,127.0.0.1,::1未设置:
HTTP_PROXY ALL_PROXY用途:
- 让新启动的 Codex Desktop 主进程显式走
127.0.0.1:7890。 - 解决模型 websocket 直连超时导致的
n/5重连。
2. Codex 沙盒内 shell 环境
修改文件:
C:\Users\Zcs\.codex\config.toml当前配置:
[shell_environment_policy] exclude = [ "HTTPS_PROXY", "HTTP_PROXY", "ALL_PROXY", "https_proxy", "http_proxy", "all_proxy", ] set = { NO_PROXY = "localhost,127.0.0.1,::1" }用途:
- Codex 主进程继续走用户级
HTTPS_PROXY。 - 沙盒内 shell 命令不再继承
HTTPS_PROXY/HTTP_PROXY/ALL_PROXY。 - 避免 elevated 沙盒因为
7890端口状态不一致反复刷新。
影响:
- 不影响 Codex 聊天、思考、模型请求。
- 可能影响沙盒内命令联网,例如
pip install、npm install、curl、git clone。 - 如果某条命令必须走代理,临时在那条命令里加:
$env:HTTPS_PROXY='http://127.0.0.1:7890';要运行的命令3. 保留 elevated 沙盒
当前配置仍是:
[windows] sandbox = "elevated"未切换到:
[windows] sandbox = "unelevated"未做的事
- 没有修改 Bettbox 配置。
- 没有改 Windows 系统代理。
- 没有改 WinHTTP 代理。
- 没有删除 Codex 沙盒用户。
- 没有删除防火墙规则。
- 没有删除
C:\Users\Zcs\.codex\.sandbox。 - 没有重装 Codex。
备份
修改C:\Users\Zcs\.codex\config.toml前已备份:
C:\Users\Zcs\.codex\config.toml.bak-20260710-102936 C:\Users\Zcs\.codex\config.toml.bak-20260709-101223验证
检查用户级变量:
Get-ItemProperty-Path'HKCU:\Environment'|Select-ObjectHTTPS_PROXY,NO_PROXY,HTTP_PROXY,ALL_PROXY检查 Codex 配置:
Select-String-Path'C:\Users\Zcs\.codex\config.toml'`-Pattern'^\[shell_environment_policy\]|HTTPS_PROXY|NO_PROXY|^\[windows\]|sandbox\s*='`-Context 0,2观察日志时,正常情况应看到:
proxy(http://127.0.0.1:7890/) intercepts 'https://chatgpt.com/' Request completed method=POST url=https://chatgpt.com/backend-api/codex/responses status=200 OK不应继续反复出现:
stream disconnected - retrying sampling request (1/5 ...) Reconnecting... 2/5 sandbox setup required: offline firewall settings changed (stored_ports=[], desired_ports=[7890]) sandbox setup required: offline firewall settings changed (stored_ports=[7890], desired_ports=[]) setup refresh: spawning ... codex-windows-sandbox-setup.exe2026-07-10 验证结果:
改完后跑一次最小命令,C:\Users\Zcs\.codex\.sandbox\sandbox.2026-07-10.log没有新增setup refresh,日志最后停在改动前的10:25:36。
端口变化时怎么改
如果代理端口从7890改成7897,只需要改用户级环境变量。
用户级环境变量:
[Environment]::SetEnvironmentVariable('HTTPS_PROXY','http://127.0.0.1:7897','User')[Environment]::SetEnvironmentVariable('NO_PROXY','localhost,127.0.0.1,::1','User')改完后完全退出 Codex Desktop,再重新打开。
回滚
删除用户级环境变量:
reg delete HKCU\Environment/v HTTPS_PROXY/f reg delete HKCU\Environment/v NO_PROXY/f恢复 Codex 配置前,先确认是否要用备份覆盖当前配置:
C:\Users\Zcs\.codex\config.toml.bak-20260709-101223其他电脑是否适用
适用条件:
- 也是 Windows。
- 也使用 Codex Desktop。
- 也使用本机代理。
- 代理端口确实是
127.0.0.1:7890,或能替换成对应端口。 - 问题表现同样是 websocket 先重连,http 降级后才成功。
不建议无脑照搬的情况:
- 代理端口不是
7890。 - Codex 直连本来就正常。
- 公司网络或安全软件限制用户级代理环境变量。
迁移到其他电脑时,先查端口:
Get-NetTCPConnection-State Listen|Where-Object{$_.LocalAddress-eq'127.0.0.1'}|Select-ObjectLocalAddress,LocalPort,OwningProcess再按实际端口设置用户级HTTPS_PROXY。shell_environment_policy不要再固定代理变量,保持排除代理变量即可。
参考
- https://developers.openai.com/codex/windows#windows-sandbox
- https://developers.openai.com/codex/config-advanced#shell-environment-policy