Codex 7890 代理与沙盒弹窗处理记录

整理时间:2026-07-10
环境:Windows 11,Codex 桌面版 OpenAI.Codex 26.623.19656.0

结论

这次问题分两层:

  1. Codex 模型请求的 websocket 直连会超时,界面反复显示 正在重新连接 n/5
  2. 为了解决重连设置 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/5

5 次失败后,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 installnpm installcurlgit 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-Object HTTPS_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.exe

2026-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-Object LocalAddress, LocalPort, OwningProcess

再按实际端口设置用户级 HTTPS_PROXYshell_environment_policy 不要再固定代理变量,保持排除代理变量即可。

参考

  • https://developers.openai.com/codex/windows#windows-sandbox
  • https://developers.openai.com/codex/config-advanced#shell-environment-policy
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐