Codex 专题 · 子页
Codex CLI 走代理:环境变量、TUN 与登录回调一次配好
Codex CLI 在终端中运行,需要单独配置代理。本文介绍 macOS、Linux 与 Windows 下设置 HTTPS_PROXY 的方法、TUN 模式、npm 安装、localhost 登录回调问题、远程服务器登录以及长任务稳定性设置。
简短回答
在运行 Codex CLI 的终端中设置 HTTPS_PROXY 与 HTTP_PROXY 指向本地代理端口,或开启代理客户端的 TUN 模式;登录时确保 localhost 不被代理,出口固定在美国、日本或新加坡等支持地区。
快速步骤 · 6 步
- 01确认代理端口与节点
在代理客户端中查看 HTTP 或混合端口(Clash 系常见为 7890),并为 OpenAI 相关域名选好美国、日本或新加坡节点。
- 02设置环境变量
在终端设置 HTTPS_PROXY、HTTP_PROXY,并用 NO_PROXY 排除 localhost 与 127.0.0.1。
- 03验证连通性
运行 curl -I https://api.openai.com,能返回 HTTP 状态行即说明网络可达。
- 04安装 Codex CLI
通过 npm 安装 @openai/codex,安装卡住时为 npm 配置代理。
- 05登录
运行 codex 或 codex login,在浏览器中完成授权并等待回调到 localhost,或改用 API Key。
- 06运行测试任务
在项目目录中执行一个简单任务,确认连接稳定后再处理大型任务。
Codex CLI 的网络走法
Codex CLI 是运行在终端中的编程代理,它通过 HTTPS 与 OpenAI 的服务通信。终端程序通常不读取系统代理设置,所以即便浏览器里 ChatGPT 一切正常,CLI 也可能直接超时。配置分三部分:让终端请求经过代理(环境变量或 TUN 模式)、让登录回调能回到本机 localhost、让长任务期间出口保持不变。出口地区需在 OpenAI 支持列表内,截至 2026 年 10 月不包括中国大陆和香港,以官方列表为准。Codex 各形态的整体说明见 Codex 网络环境与使用完整指南。
第一步:确认端口与节点
打开代理客户端设置,记下 HTTP 端口或混合端口。Clash 系客户端常见的默认混合端口是 7890,下文以此为例,请替换为你的实际端口。同时,确认 OpenAI 相关域名走的是美国、日本或新加坡节点,并且是手动选择、不会自动切换的策略组。
第二步:设置环境变量
macOS / Linux
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1
NO_PROXY 用于排除本地地址,避免登录回调等本机请求被发往代理。若要长期生效,把这几行追加到 ~/.zshrc(zsh)或 ~/.bashrc(bash),然后执行 source ~/.zshrc。
也可以只在启动 Codex 时临时带上变量,不影响其他命令:
HTTPS_PROXY=http://127.0.0.1:7890 HTTP_PROXY=http://127.0.0.1:7890 codex
Windows PowerShell
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:NO_PROXY="localhost,127.0.0.1"
以上写法只对当前 PowerShell 窗口有效。git、npm 等其他工具的代理写法可参考 终端代理设置。
第三步:验证连通性
curl -I https://api.openai.com
能返回 HTTP 状态行(即使是 4xx)就说明网络可达。若卡住不动或报 Connection timed out,说明请求没有经过代理或节点不可用;若报 Connection refused 并指向 127.0.0.1:7890,说明端口写错或客户端没有运行。
检查终端的实际出口地区
curl -s https://chatgpt.com/cdn-cgi/trace | grep loc
输出 loc=US、loc=JP、loc=SG 等说明终端出口在支持地区;若是 loc=HK 或 loc=CN,说明 OpenAI 相关流量走到了不支持地区的节点,或没有经过代理。这一步检查的是终端里的出口,和浏览器中看到的结果可能不同。
第四步:安装 Codex CLI
Codex CLI 可通过 npm 安装,其他安装方式以官方仓库说明为准:
npm install -g @openai/codex
如果安装长时间没有进展,为 npm 配置代理后重试:
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890
第五步:登录与 localhost 回调
在已设置代理的终端中运行 codex(首次运行会引导登录)或 codex login。选择用 ChatGPT 账号登录时,流程如下:
- CLI 在本机启动一个临时回调服务,并打开浏览器授权页面;
- 你在浏览器中登录 ChatGPT 账号并确认授权;
- 浏览器跳转到
localhost上的回调地址,CLI 收到凭据后完成登录。
第 3 步最容易出问题。如果浏览器提示授权成功但 CLI 一直等待,请检查:
- 系统代理的绕过列表是否包含
localhost和127.0.0.1; - 是否有浏览器代理扩展把所有请求(包括本地地址)都转发了;
- 回调端口是否被其他程序占用。
提示
在远程服务器上使用时,可以在本机执行 ssh -L 端口:localhost:端口 用户@服务器 把回调端口转发到本地,再在本地浏览器中完成授权。具体回调端口以 CLI 输出的授权链接为准。也可以改用 API Key 方式,参数以 codex login --help 为准。
两种登录方式的网络差异
| 对比 | ChatGPT 账号登录 | API Key |
|---|---|---|
| 是否需要浏览器 | 需要,完成授权后回调到本机 | 不需要 |
| 是否依赖 localhost 回调 | 是 | 否 |
| 适合环境 | 本地电脑 | 服务器、容器、CI 等无界面环境 |
| 额度与计费 | 按 ChatGPT 订阅计划 | 按 API 用量计费 |
| 网络要求 | 浏览器与终端都需走支持地区出口 | 只需终端走支持地区出口 |
如果本地回调反复失败,又急于开始工作,可以先改用 API Key 方式确认网络本身没有问题,再回头排查回调。
第六步:开启 TUN 模式(可选)
如果你同时使用 Codex 的 IDE 插件,或不想维护环境变量,可以在代理客户端开启 TUN 模式。以 Clash Verge Rev 为例,在设置中打开“虚拟网卡模式”,首次开启可能需要管理员权限或安装服务组件,详见 Clash Verge Rev 完整使用教程。TUN 模式下需要确认两点:OpenAI 相关域名的分流规则指向支持地区节点;本地回调地址不会被错误接管(多数客户端默认已排除本地地址)。
WSL、远程开发与取消代理
WSL2:默认网络模式下,WSL2 里的 127.0.0.1 指向子系统自身而不是 Windows 主机,所以直接使用 http://127.0.0.1:7890 通常连不上 Windows 上运行的代理客户端。可以启用 WSL 的镜像网络模式(mirrored),或把代理地址改为 Windows 主机在虚拟网络中的 IP,并在代理客户端中开启“允许局域网连接”。具体配置以微软 WSL 官方文档为准。
远程服务器:在云服务器上运行 Codex CLI 时,服务器本身的出口就是请求的来源。服务器所在地区需要在 OpenAI 支持列表内;如果服务器位于不支持的地区,需要在服务器上另行配置合规的网络环境,本地代理对其不起作用。
配置文件位置:Codex CLI 的配置与登录凭据默认保存在用户目录下的 ~/.codex 中,配置文件通常为 ~/.codex/config.toml。代理一般通过环境变量设置即可,不必写进这个文件。
取消代理:
unset HTTPS_PROXY HTTP_PROXY NO_PROXY
PowerShell 中使用 Remove-Item Env:HTTPS_PROXY 等命令;npm 代理用 npm config delete proxy 与 npm config delete https-proxy 移除。
长任务稳定性设置
| 问题 | 原因 | 建议 |
|---|---|---|
| 任务中途断开 | 自动测速组切换了节点 | 使用手动选择的策略组,固定节点 |
| 晚上频繁失败 | 线路拥堵 | 大任务放在非高峰时段,或换更稳定的线路 |
| 合盖后任务失败 | 设备休眠中断网络 | 长任务期间保持设备唤醒 |
| Codex 运行的命令无法联网 | 沙箱默认限制命令联网 | 查阅官方文档中沙箱网络访问的配置,这不是代理问题 |
此外,大型任务开始前先用 git 提交当前进度,即使中途断线,也能清楚地看到 Codex 已经做了哪些修改,再决定是继续还是回退。
注意
~/.codex 目录中保存着登录凭据,请勿将其提交到代码仓库或复制给他人;API Key 也应通过环境变量或安全的方式保存。
常见报错速查
| 报错或现象 | 处理方法 |
|---|---|
Connection timed out | 检查环境变量是否生效,用 curl 验证,必要时换节点 |
Connection refused 127.0.0.1:7890 | 核对端口,确认代理客户端在运行 |
| 403 或地区不支持 | 出口在不支持地区,换美国、日本或新加坡节点 |
| 授权后 CLI 无响应 | 排除 localhost 代理,检查端口占用 |
| 流式输出中途停止 | 固定节点,避开晚高峰 |
更完整的排查顺序见 Codex 无法连接怎么办。请在遵守所在地法律法规与 OpenAI 服务条款的前提下使用以上配置。
常见问题
QCodex CLI 会自动使用系统代理吗?
通常不会。终端程序一般只读取 HTTPS_PROXY、HTTP_PROXY 等环境变量,系统代理设置只对浏览器和部分图形应用生效。需要手动设置变量或开启 TUN 模式。
Q登录时浏览器显示授权成功,但 CLI 一直在等待怎么办?
多半是回调到 localhost 的请求被代理拦截或转发了。确认系统代理的绕过列表包含 localhost 和 127.0.0.1,关闭可能接管本地地址的浏览器代理扩展后重新登录。
Q在 SSH 远程服务器上怎么登录 Codex CLI?
远程服务器没有浏览器,回调无法直接完成。可以用 SSH 本地端口转发把回调端口映射到本机,或使用 API Key 登录;较新版本可能提供其他登录方式,以 codex login --help 输出为准。
QCodex 执行 npm install 失败,是代理问题吗?
不一定。Codex 在沙箱中执行命令时可能默认限制网络访问,这与你的代理无关。先确认 Codex 本身能正常对话,再查看官方文档中沙箱网络访问相关的配置项。