Codex CLI 代理配置教程:让终端稳定走代理
Codex CLI运行在终端,默认不使用系统代理。本文给出bash、zsh、PowerShell的环境变量配置、WSL特殊处理、TUN模式替代方案、验证命令,以及登录回调失败与长任务断连的处理方法。
Codex 是 OpenAI 的 AI 编程助手,其中 Codex CLI 运行在终端里。和 Claude Code 一样,它默认不使用浏览器的系统代理,所以“浏览器能打开 ChatGPT、Codex 却连不上”是最常见的问题。本文给出各种环境下的配置方法。
两种思路
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| TUN 模式 | 虚拟网卡接管全部流量 | 一次开启,所有程序生效 | 需要管理员权限 |
| 环境变量 | 只对当前终端设置代理 | 不影响其他程序 | 每个终端都要设置 |
大多数开发者推荐直接开 TUN,详见 Clash Verge Rev TUN 模式教程。
环境变量配置
以下示例端口为 7897,请换成你客户端显示的端口。
bash / zsh(macOS、Linux):
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1
写进 ~/.bashrc 或 ~/.zshrc 可以永久生效。
PowerShell(Windows):
$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:HTTP_PROXY="http://127.0.0.1:7897"
PowerShell 中的设置只对当前窗口有效,关闭后需要重新设置。
WSL 中的特殊处理
在 Windows 的 WSL(Linux 子系统)里运行 Codex 时,127.0.0.1 指向的是 WSL 自己,而不是 Windows 上运行的代理客户端。处理方法:
- 在代理客户端中打开“允许局域网连接”;
- 在 WSL 中把代理地址改为 Windows 主机的 IP(可通过 WSL 的网络配置查询);
- 较新版本的 WSL 支持“镜像网络模式”,开启后可以直接使用
127.0.0.1。
如果你在 Windows 上开启了 TUN 模式,并启用了镜像网络,WSL 中的流量通常也能直接经过代理。
验证是否生效
curl -I https://api.openai.com
能返回响应头说明终端已经可以访问 OpenAI;如果超时,回头检查端口号和节点状态。
常见问题
- 登录回调失败:Codex 登录时会打开浏览器授权,再回调到终端。浏览器和终端走的出口地区不一致时可能失败,确保两者使用同一个节点;
- 长任务中途断开:Codex 执行多步任务时连接时间较长,节点丢包会导致中断,选择专线节点并关闭自动切换;
- 速度很慢:避开高倍率拥挤节点,晚高峰选专线;
- 地区不支持:避免香港、澳门节点,使用美国、日本、新加坡节点。
在 IDE 扩展中使用 Codex
除了 CLI,Codex 也提供编辑器扩展。编辑器发出的网络请求同样不一定遵循系统代理,处理方法有两种:一是直接开启代理客户端的 TUN 模式,所有程序统一走代理;二是在编辑器的设置中配置代理地址(例如 VS Code 的 http.proxy 设置)。配置完成后重启编辑器,再登录账号测试。如果扩展一直显示加载中或登录失败,优先检查这一项。
团队与项目中的配置建议
在团队项目中,可以把代理相关的说明写进 README 或开发文档,统一推荐的客户端、端口设置和节点地区,减少新成员排查网络问题的时间。注意不要把个人的订阅链接、API 密钥等敏感信息写进代码仓库,API 密钥应放在本地环境变量中,并确认 .env 文件已加入忽略列表。
云端任务不受本地网络影响
在 ChatGPT 中直接发起的 Codex 云端任务运行在 OpenAI 的服务器上,代码的拉取与执行都在云端完成。只要你的浏览器能稳定打开 ChatGPT,云端任务就能正常运行,适合本地网络配置较麻烦时使用。
机场建议
Codex 与 ChatGPT 的地区要求一致,同时对长连接稳定性要求较高。推荐晚高峰稳定、AI 解锁实测通过的机场,如 宇宙云、二猫云,完整榜单见 AI 稳定机场推荐。
常见问题
Codex 需要单独的账号吗?
Codex 可以使用 ChatGPT 账号登录,也可以使用 API 密钥。使用 ChatGPT 账号时,地区与网络要求与 ChatGPT 一致。
代理端口在哪里看?
在代理客户端的设置页查看“混合端口”或“HTTP 端口”。Clash Verge Rev 常见默认值为 7897,v2rayN 常见为 10808 / 10809,以你的客户端实际显示为准。