最快路径:在启动 codex 的同一终端里执行 export HTTPS_PROXY="http://127.0.0.1:7890"(端口换成你自己代理客户端的 http 端口),再重新运行 codex。socks5 不可用,必须用 http 端口。
为什么国内必须配代理
OpenAI 的 API 域名(api.openai.com)在中国大陆及部分企业内网被防火墙屏蔽。Codex CLI 启动后会通过 WebSocket / SSE 长连接与 OpenAI 通信,连不上就会反复出现 Reconnecting… 1/5,最终报 stream disconnected。
解决方案只有一个:让 Codex 的网络请求经过一个能访问 OpenAI 的本地代理。Codex 读取标准的代理环境变量(HTTPS_PROXY、HTTP_PROXY、ALL_PROXY),不需要任何额外插件。
如果你的主要症状是 Reconnecting 而不确定原因,先看 一直 Reconnecting?完整排查清单,那里有分步判断网络还是 Bug 的流程。
终端里配置代理
这是最通用、最推荐的方式。在同一个终端会话里设置环境变量,然后启动 codex:
export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"
$ codex
端口要与你的代理客户端一致:Clash 默认 http 端口通常是 7890,部分客户端是 7897,请在客户端设置界面确认。
写入 shell 配置文件永久生效
每次手动 export 太麻烦,把这三行加到 ~/.zshrc(zsh 用户)或 ~/.bashrc(bash 用户),然后 source 一下:
export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"
$ source ~/.zshrc
# bash 用户改为:source ~/.bashrc
.env 文件方式
不想污染全局 shell 环境,可以把这三个变量写进 ~/.codex/ 工作目录下的 .env 文件,Codex 启动时会自动读取:
HTTPS_PROXY=http://127.0.0.1:7890
HTTP_PROXY=http://127.0.0.1:7890
ALL_PROXY=http://127.0.0.1:7890
socks5 踩坑
截至 2026,Codex 不支持 socks5 代理。如果你的 ALL_PROXY 设成了 socks5://127.0.0.1:7891,Codex 会静默失败并不停重连,没有明显报错。
大多数代理客户端(Clash、Surge 等)同时暴露 socks5 和 http 两个端口。请改用 http 端口:
# ✗ 不要用 socks5
export ALL_PROXY="socks5://127.0.0.1:7891"
# ✓ 改用 http 端口
export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"
在客户端里确认 http 代理端口号再填入。Clash 常见是 7890,部分客户端可能是 7897 或其他端口,不同客户端差异较大。
VS Code 插件代理
VS Code 里的 Codex 扩展不读取终端的 export,需要在 VS Code 自己的设置里单独配置代理:
- 按 Ctrl+,(macOS 用 ⌘+,)打开设置面板。
- 在搜索框里输入
proxy。 - 找到 Http: Proxy,填入
http://127.0.0.1:7890(替换为你的端口)。 - 完全重启 VS Code(不是 Reload Window),让代理设置生效。
重启后再试,如果仍然 Reconnecting,用 curl -x http://127.0.0.1:7890 -I https://api.openai.com/v1/models 在终端验证代理本身能出网。
Windows + WSL2 网络
在 WSL2 内运行 Codex 时,WSL 的网络默认与 Windows 隔离——即使 Windows 系统代理已经开启,WSL2 内的 codex 进程也无法直接访问 Windows 的 loopback 代理端口。
开启镜像网络模式(推荐)
在 %USERPROFILE%\.wslconfig 文件中加入以下内容,让 WSL2 与 Windows 共用网络接口:
[wsl2]
networkingMode=mirrored
保存后在 PowerShell 里执行 wsl --shutdown,重新打开 WSL 终端。此后 WSL 内可以用 127.0.0.1:7890 访问 Windows 侧的代理。
WSL2 内同样不支持 socks5,也需要用 http 代理端口,并在 WSL 终端里 export 代理变量。
npm 镜像加速安装
如果安装 Codex 时 npm install -g @openai/codex 很慢或超时,可以临时或永久切换到国内镜像:
$ npm config set registry https://registry.npmmirror.com
$ npm install -g @openai/codex@latest
安装完成后,如果希望恢复官方源(避免后续某些包无法从镜像正确拉取):
$ npm config set registry https://registry.npmjs.org
镜像只加速包的下载,Codex 运行时与 OpenAI API 的通信仍然需要代理。两件事需要分开处理。
用第三方 API(简述)
如果你有自己的 API 中转服务,可以在 ~/.codex/config.toml 的 [model_providers] 节里配置自定义 base_url,让 Codex 向你的中转地址发请求,从而绕过直连限制。请注意:
- 使用第三方中转仍然需要 OpenAI API Key 或 ChatGPT 订阅(Plus 及以上)来调用模型。
- 本站不背书或推荐任何具体的中转服务商,请自行甄别风险。
详细的 config.toml 字段说明请见 配置 config.toml。
连通性验证清单
配置完成后,按顺序验证以下几点,确保代理真正生效:
| 验证步骤 | 命令 | 预期结果 |
|---|---|---|
| 代理本身能访问 OpenAI | curl -I -x http://127.0.0.1:7890 https://api.openai.com/v1/models |
返回 HTTP/2 401(401 说明网络通,只是没带 key) |
| 当前 shell 已读取代理变量 | env | grep -i proxy |
看到 HTTPS_PROXY=http://127.0.0.1:7890 等三行 |
| codex 能正常连接 | 运行 codex,发一句简单消息 |
看到 ● connected,能收到回复 |
看到 ● connected — gpt-5.3-codex 就说明一切正常。建议把代理变量写进 ~/.zshrc 永久生效,下次开机即用。
常见问题
配了代理还是 Reconnecting,怎么排查?
检查三点:1) 代理是不是 socks5——必须改成 http 端口;2) export 和启动 codex 是不是在同一个终端;3) 用 curl -x http://127.0.0.1:端口 -I https://api.openai.com/v1/models 确认这个端口真的能出网。
仍然不行,参考 完整排查清单。
代理端口不是 7890 怎么填?
以你的代理客户端实际暴露的 http 端口为准。在客户端的"设置"或"端口"面板里查看,常见的有 7890(Clash 默认)、7897(部分客户端)等。把命令里的 7890 换成你自己的端口即可。
使用 Codex 需要 ChatGPT Plus 吗?
是的,截至 2026,使用 Codex CLI 调用模型需要 ChatGPT Plus(或更高级别)订阅,或者使用 OpenAI API Key(按量计费)。代理只解决网络连通问题,不能绕过订阅要求。
公司内网 NO_PROXY 怎么处理?
如果公司设置了 NO_PROXY 白名单(如 NO_PROXY=*.internal.company.com),确保 api.openai.com 没有被包含在内。用 env | grep -i no_proxy 检查,如有冲突需和网络管理员沟通或在个人终端里 unset NO_PROXY。