Codex 稳定机场:Codex CLI 与 IDE 插件的代理配置
Codex CLI 和 IDE 插件只开系统代理时常卡在 Reconnecting。本文对照 OpenAI 官方文档与开源代码,讲清环境变量、TUN、IDE 代理三种接法的取舍,附 PowerShell 与 bash/zsh 示例、断流排查和机场节点选择原则。
小鱼先看结论
默认配置下,Codex 优先使用的 WebSocket 连接只读取 HTTPS_PROXY、HTTP_PROXY、ALL_PROXY 等环境变量,不读系统代理,所以只开代理客户端的系统代理时,常见 Reconnecting、超时或回落到 HTTPS。最直接的做法是在启动 Codex 的终端里把 HTTPS_PROXY 设为本地 HTTP 端口(如 http://127.0.0.1:7897);IDE、WSL 和多个命令行工具都要走代理时改开 TUN。节点出口要在 OpenAI 支持地区内(使用者本身也须在支持地区),并为 Codex 手动固定一个晚高峰稳定的节点。
- Codex 的 WebSocket 连接只读取代理环境变量,系统代理开关对它无效
- 环境变量最精确,TUN 覆盖最全,IDE 代理设置依赖扩展实现、最不可控
- 代理地址写 http://127.0.0.1 加端口,不要写成 https:// 或 socks5://
- “Reconnecting... waiting for network”多半是代理端口连不上,带计数的 Reconnecting 多半是连接中途断开
- 出口要在 OpenAI 支持地区内,AI 流量用手动选择的策略组,避免自动切换打断长任务
- 适合
- Lv.3 进阶用户
- 适用版本
- Codex CLI 0.162.1 · Windows / macOS / Linux
- 阅读
- 9 分钟
- 版本核对
使用前请了解服务条款

让 Codex CLI 稳定走代理
约 15 分钟确认本地代理端口
在代理客户端的设置里找到 HTTP 或混合代理端口(Clash Verge Rev 默认 7897),并在 AI 策略组里手动选定一个节点。
选择接入方式
只在终端里用 Codex 时设置环境变量;IDE、WSL 和多个命令行工具都要走代理时开启 TUN 模式。
设置环境变量或开启 TUN
在启动 Codex 的终端里把 HTTPS_PROXY 和 HTTP_PROXY 设为 http://127.0.0.1 加端口,或在客户端里安装服务后打开虚拟网卡模式。
用 curl 验证连通
通过同一个端口访问 chatgpt.com,能返回 HTTP 状态码说明代理通路正常;超时或拒绝连接说明端口或客户端有问题。
登录并跑一个短任务
运行 codex login status 确认登录状态,再执行一个简单任务,观察是否出现 Reconnecting 提示。
先说结论
Codex 连不上、反复显示 Reconnecting,多数时候不是机场坏了,而是 Codex 进程根本没有走代理。代理客户端的“系统代理”开关只对主动读取系统设置的程序有效,而 Codex 优先使用的 WebSocket 连接只认 HTTPS_PROXY、HTTP_PROXY、ALL_PROXY 这类环境变量。
解决办法有三种:设置环境变量(精确)、开启 TUN 模式(覆盖全部程序)、在 IDE 里设置代理(方便但不可控)。节点出口要在 OpenAI 的支持地区内,并为 Codex 手动固定一个晚高峰稳定的节点。AI 场景选机场的整体方法见专题主文章 AI 稳定机场怎么选,本文专讲 Codex 的代理配置和排障。
Codex 怎么安装、会连哪些地址
Codex CLI 是 OpenAI 开源的命令行编程工具。2026-10-15 核对 GitHub Release,最新正式版为 0.162.1(2026-10-09 发布)。官方仓库 README 给出的安装方式如下:
# macOS / Linux:官方安装脚本
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# 通过 npm 安装(需要先装好 Node.js)
npm install -g @openai/codex
# macOS:通过 Homebrew 安装
brew install --cask codex
# Windows:官方安装脚本(在 PowerShell 中运行)
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
官方脚本默认从 releases.openai.com 下载,失败时回落到 GitHub Releases。下载卡住时,先在同一个终端里设置好下文的代理变量再重试。
编辑器方面,官方文档说明 VS Code、Cursor、Windsurf 使用 Codex 扩展,JetBrains 系列和 Xcode 则由 IDE 自己提供集成。从官方仓库的 issue 讨论看,扩展在后台调用的也是 Codex 程序,下文关于环境变量的结论同样适用。
Codex 主要连接下面三个域名(取自开源代码中的地址):
| 域名 | 用途 |
|---|---|
| chatgpt.com | 用 ChatGPT 账号登录后的模型请求;安装脚本也在这里 |
| auth.openai.com | 登录授权、换取令牌 |
| api.openai.com | 使用 API Key 时的模型请求 |
codex login 会打开浏览器授权,回调地址是本机的 localhost:1455;没有浏览器的远程环境可以用 codex login --device-auth 设备码登录(官方标注为 beta,需先在 ChatGPT 安全设置里开启)。授权页走浏览器的代理,换取令牌却由 Codex 进程完成,所以浏览器显示成功、终端报错时,要查 Codex 进程的网络。
为什么终端程序不走系统代理
“系统代理”只是操作系统里的一项设置,程序要主动读取才会生效。浏览器会读;命令行程序大多按惯例读取 HTTPS_PROXY、http_proxy 这类环境变量。
Codex 的情况更具体一些。查阅它 2026 年 10 月的开源代码可以确认,在默认配置下:
- WebSocket 连接只读环境变量。 Codex 默认优先用 WebSocket 接收模型输出,代码注释写明,其默认拨号逻辑解析的是
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY和NO_PROXY。 - HTTPS 请求可能读到系统代理,但没有保证。 普通 HTTPS 请求使用的 Rust 网络库,在没有环境变量时可能会读取 macOS 或 Windows 的手动代理设置,但官方文档没有承诺这一点;能完整读取系统代理(包括 PAC 自动配置)的功能开关仍标记为开发中,默认关闭。
- 官方文档没有介绍代理变量。 环境变量文档只列出了
CODEX_CA_CERTIFICATE、SSL_CERT_FILE这类证书变量。
结果就是“时好时坏”:只开系统代理时,部分 HTTPS 请求能通,WebSocket 却超时,界面先出现带计数的 Reconnecting...,几轮后提示 Falling back from WebSockets to HTTPS transport。官方仓库的 issue #29958 记录了 Windows 上的同类现象,设置代理变量后恢复正常。系统代理和 TUN 在原理上的差别,见 TUN 模式和系统代理有什么区别。
三种接入方式怎么选
| 方式 | 覆盖范围 | 需要的权限 | 优点 | 不足 | 适合场景 |
|---|---|---|---|---|---|
| 环境变量 | 设置了变量的终端及其启动的程序 | 不需要 | 只影响需要代理的程序,容易排查 | 每个终端都要配;图形界面启动的 IDE 不一定继承 | 主要在终端里用 Codex |
| TUN 模式 | 几乎所有程序 | 管理员权限或服务模式 | 一次开启,WebSocket、HTTPS 和子进程全覆盖 | 改动路由和 DNS,可能与公司 VPN 冲突 | IDE、WSL 和多个命令行工具同时用 |
| IDE 代理设置 | 取决于扩展是否把设置传给 Codex | 不需要 | 只改编辑器里的一项设置 | 行为未写进官方文档,可能随版本变化 | 临时补救 |
方式一:设置代理环境变量
先确认代理客户端的本地端口:Clash Verge Rev 的混合端口默认是 7897,其他客户端请在设置里查看 HTTP 或混合端口(客户端的安装和基础设置见 Clash 使用教程)。下面的示例都以 7897 为例。
PowerShell(Windows)
# 只对当前 PowerShell 窗口生效;7897 换成你客户端里的 HTTP / 混合端口
$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:NO_PROXY = "localhost,127.0.0.1"
codex
# 查看当前窗口里的代理变量
Get-ChildItem Env: | Where-Object Name -like "*_PROXY"
想让每个新窗口自动带上,可以把前三行写进 PowerShell 配置文件(notepad $PROFILE)。也可以写入用户级环境变量,但这会影响所有程序,代理客户端一退出它们就连不上网:
# 写入用户级环境变量(对之后新启动的程序生效)
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:7897", "User")
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:7897", "User")
# 不再需要时删除
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "User")
[Environment]::SetEnvironmentVariable("HTTP_PROXY", $null, "User")
bash / zsh(macOS、Linux、WSL)
# 只对当前终端生效
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1
codex
# 也可以只对这一条命令生效
HTTPS_PROXY=http://127.0.0.1:7897 codex
需要经常开关的话,可以在 ~/.zshrc 或 ~/.bashrc 里写两个函数:
proxy_on() {
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=$HTTP_PROXY
export http_proxy=$HTTP_PROXY https_proxy=$HTTP_PROXY # 给只认小写的工具
export NO_PROXY=localhost,127.0.0.1
}
proxy_off() {
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy NO_PROXY
}
大小写各设一份,是因为 curl 文档写明 http_proxy 只认小写;Windows 的环境变量不区分大小写,不需要这样做。另外三个细节:
- 代理地址写
http://,不要写成https://:本地端口说的是普通 HTTP 代理协议,写成 https 会握手失败。 - 不要写
socks5://:官方文档没有说明支持,几条连接路径的处理也不一致。 NO_PROXY里放本机地址,避免本机上的服务(例如本地 MCP 服务)被转发到代理。
只给 Codex 用:写进 ~/.codex/.env
Codex 启动时会读取 CODEX_HOME(默认 ~/.codex)下的 .env 文件,把其中的变量加入自己的环境(以 CODEX_ 开头的会被忽略)。这是开源代码中的行为,官方文档尚未说明。写在这里就不必改动整个终端的环境:
# macOS / Linux:~/.codex/.env
# Windows:%USERPROFILE%\.codex\.env
HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897
NO_PROXY=localhost,127.0.0.1
缺点是容易被遗忘:客户端换了端口或没有运行时,Codex 会一直显示 Reconnecting... waiting for network,Windows 上还可能报 os error 10061(拒绝连接),见 issue #44517。
方式二:开启 TUN 模式
TUN 模式让代理客户端创建一块虚拟网卡,接管整台电脑的流量。Codex 的 WebSocket、HTTPS 请求以及它启动的子进程都会经过客户端,不需要任何环境变量。在 Clash Verge Rev 里,先在设置中安装服务,再打开“虚拟网卡模式”;Windows 上的具体步骤和安全软件拦截问题,见 Windows 用哪个 Clash。
优点
- 一次开启,所有终端、IDE 和子进程都生效
- 不用关心程序是否读取代理变量
- WebSocket 与 HTTPS 走同一条路径,现象更一致
不足
- 需要管理员权限或服务模式
- 会改动系统路由和 DNS,可能与公司 VPN、其他虚拟网卡冲突
- 所有流量都要经过分流规则,规则写错时影响面更大
使用 TUN 时注意三点:
- 规则模式下确认命中代理组。 在客户端的“连接”页搜索
chatgpt.com,确认命中的是 AI 策略组,而不是 DIRECT。 - fake-ip 会改变本地解析结果。 开启 TUN 后,
nslookup查到 198.18 开头的地址是客户端返回的虚拟地址,属于正常现象。 - WSL2 不一定被接管。 开启后在 WSL 里不设代理变量、直接用 curl 测一次再下结论。
方式三:在 IDE 中设置代理
扩展里的 Codex 能不能走代理,取决于扩展启动 Codex 时给了它什么环境变量。目前能确认的有两条:
- VS Code 官方的网络文档提醒,扩展并不能完全享受编辑器内置的代理支持;
- 官方仓库的 issue #6764 中,有用户分析扩展代码后发现,扩展会把 VS Code 的
http.proxy设置作为HTTP_PROXY和HTTPS_PROXY传给 Codex,但不会传http.noProxy;同一讨论里也有用户反馈,扩展会读取~/.codex/.env中的代理变量。
所以可以先在 settings.json 里加上代理设置,再从命令面板执行“Developer: Reload Window”重新加载窗口:
{
"http.proxy": "http://127.0.0.1:7897"
}
如果不生效,依次换用:把代理写进 ~/.codex/.env;完全退出编辑器后,从已设置代理变量的终端执行 code . 启动;最后是开启 TUN。这些都不是官方文档写明的行为,扩展升级后最好重新验证。JetBrains 和 Xcode 里的 Codex,以各自 IDE 的文档为准。
远程开发:Remote-SSH 与 WSL
用 Remote-SSH 或 WSL 打开项目时,Codex 运行在远程主机或 Linux 环境里,代理要配在 Codex 实际运行的那一侧。
Remote-SSH:如果服务器本身不能访问 OpenAI,可以用 SSH 反向端口转发,把服务器上的一个端口转到本机的代理客户端:
# 在本机执行:服务器上的 127.0.0.1:7897 会被转发到本机的 7897 端口
ssh -R 7897:127.0.0.1:7897 user@your-server
# 在服务器上执行,或写进服务器的 ~/.codex/.env
export HTTPS_PROXY=http://127.0.0.1:7897
用 VS Code Remote-SSH 时,在本机 ~/.ssh/config 对应主机下加一行 RemoteForward 7897 127.0.0.1:7897 即可自动转发。服务器上的其他用户也能使用这个端口,只在自己控制的服务器上这样做。
WSL2:Codex 文档说明,在 WSL2 里 Codex 运行在 Linux 环境中。WSL2 默认使用 NAT 网络,其中的 127.0.0.1 指向 Linux 自己,而不是 Windows 上的代理客户端。按微软文档有三种做法:
| 做法 | 适用条件 | 设置方法 |
|---|---|---|
| 镜像网络模式 | Windows 11 22H2 及以上 | 在 .wslconfig 中设置 networkingMode=mirrored,之后在 WSL 里用 127.0.0.1 就能连到 Windows |
| 自动同步代理 | Windows 11 22H2 及以上 | 在 .wslconfig 中设置 autoProxy=true,让 WSL 使用 Windows 的 HTTP 代理设置 |
| NAT 模式下改用主机 IP | 不限 | 在 WSL 里查到 Windows 主机的 IP,代理客户端开启“允许局域网连接” |
# %USERPROFILE%\.wslconfig;修改后在 PowerShell 执行 wsl --shutdown 重启 WSL
[wsl2]
networkingMode=mirrored
# NAT 模式:查出 Windows 主机的 IP,再把代理指向它
HOST_IP=$(ip route show | grep -i default | awk '{ print $3 }')
export HTTPS_PROXY=http://$HOST_IP:7897
“允许局域网连接”会让同一网络里的其他设备也能使用你的代理端口,只在可信网络里开启。
长连接和流式输出中断怎么排查
Codex 的一次任务可能持续几分钟甚至更久,模型输出是边生成边推送的,期间连接必须一直保持。先根据提示判断问题出在哪一层:
| 提示 | 含义 | 常见原因 |
|---|---|---|
Reconnecting... waiting for network |
连接建立不起来,Codex 会持续等待网络恢复再重试 | 代理端口写错、代理客户端没运行(Windows 常伴随 os error 10061)、Codex 没走代理 |
带计数的 Reconnecting... 提示 |
请求或输出流在中途失败,正在按次数重试 | 节点自动切换、晚高峰丢包、线路掐断长连接 |
Falling back from WebSockets to HTTPS transport |
WebSocket 多次失败后改用 HTTPS 传输 | WebSocket 没有走代理(例如只开了系统代理),或节点对长连接不稳定 |
stream disconnected before completion |
输出还没结束,连接就断了 | 与上一行类似,多在重试用尽后出现 |
error sending request for url |
请求没能发出去 | DNS 被干扰、代理不可达、证书问题 |
| 证书校验失败 | TLS 证书无法验证 | 公司网络做了 HTTPS 解密,按官方文档设置 CODEX_CA_CERTIFICATE,不要关闭证书校验 |
官方配置参考列出的默认值是:输出流中断最多重试 5 次,HTTP 请求最多重试 4 次,输出流 300000 毫秒(5 分钟)无数据即判定超时。这几项只能在自定义模型提供方里修改,内置的 OpenAI 提供方不能覆盖,所以解决中断要从网络入手,而不是调参数。
验证代理通路时,用 curl 走和 Codex 相同的端口:
# macOS / Linux / WSL:能输出三位 HTTP 状态码,说明代理通路正常
curl -x http://127.0.0.1:7897 -sS -o /dev/null -w "%{http_code}\n" https://chatgpt.com
# Windows:写 curl.exe,避开 Windows PowerShell 5.1 里同名的 Invoke-WebRequest 别名
curl.exe -x http://127.0.0.1:7897 -sS -o NUL -w "%{http_code}" https://chatgpt.com
返回 200、403 之类的状态码,都说明请求经代理到达了服务器;超时或 Connection refused,说明端口不对或客户端没运行。之后按下面的顺序排查:
确认 Codex 拿到了代理变量
PowerShell 用
Get-ChildItem Env:查看,bash/zsh 用env | grep -i _proxy查看。同时打开~/.codex/.env,确认没有指向旧端口的残留配置。确认 curl 能走通同一个端口
curl 都走不通时,问题在代理客户端或节点,先不要怀疑 Codex。
在客户端的连接页看出口
在代理客户端的“连接”页搜索 chatgpt.com,确认命中的是 AI 策略组和固定节点,而不是 DIRECT 或自动测速组。连接频繁关闭又重建,说明节点或线路不稳。
固定节点后在晚高峰复现
关闭 AI 流量的自动切换,在 20:00–23:00 跑一个十几分钟的任务。仍然频繁中断,就该换线路了。
查看日志
日志目录默认是
~/.codex/log(可用配置项log_dir修改),codex login会在这里写入codex-login.log。可以用codex exec --skip-git-repo-check "只回复 OK"做一次非交互的快速测试;需要更详细的输出时,设置官方文档列出的RUST_LOG变量。
命令联网失败不一定是代理问题
Codex 在工作区写入沙箱里执行命令时,默认不允许联网(配置项 sandbox_workspace_write.network_access)。npm install、pip install 这类命令失败时,先确认是不是沙箱限制,再去查代理。
Codex 用什么节点更稳
出口要在 OpenAI 支持地区内。 OpenAI 公布的 支持国家和地区 共 208 个,不含中国大陆、香港和澳门,页面写明从不受支持的地区访问可能导致账号被封禁或停用。代理只改变网络出口,不改变你所在的地方,请结合所在地法律和服务条款自行判断;ChatGPT 侧的地区细节见 ChatGPT 用什么机场稳定。
稳定优先于速度,并且手动固定。 Codex 传输的主要是代码和文字,对带宽要求不高,影响体验的是晚高峰丢包和长连接能否保持,优先选专线或优质中转(原理见 IEPL 是什么)。给 AI 单独建一个手动选择的策略组(写法见专题主文章),把 openai.com 和 chatgpt.com 两个后缀分进去,就覆盖了上文的三个域名;同地区的备用节点只在两次任务之间切换。
其他 AI 工具要单独核对地区,例如香港出口在 Gemini 应用里可用、在 Gemini API 里不可用,详见 Gemini 机场推荐。
总结
Codex 走代理的关键,是让 Codex 进程拿到 HTTPS_PROXY:只在终端里用,就设置环境变量或写进 ~/.codex/.env;IDE、WSL 一起用,就开启 TUN;IDE 自带的代理设置只作补充。出现 Reconnecting 时,先分清“连不上”还是“中途断”,前者查端口和变量,后者查节点切换和线路。节点出口要在 OpenAI 支持地区内,手动固定、晚高峰稳定,比测速快更重要。
常见问题
开了系统代理,浏览器能用 ChatGPT,为什么 Codex 还是连不上?
Codex 优先使用的 WebSocket 连接只读取 HTTPS_PROXY 等环境变量,不读取系统代理。在启动 Codex 的终端里设置代理环境变量,或者开启 TUN 模式即可。
HTTPS_PROXY 可以写 socks5 地址吗?
不建议。Codex 文档没有说明对 SOCKS 代理的支持,几条连接路径的处理也不完全一致。Clash 系客户端的混合端口同时支持 HTTP,直接写 http://127.0.0.1 加端口最稳妥。
开了 TUN 还需要设置环境变量吗?
不需要,二选一即可。两者同时开启通常也能工作,但排查问题时建议只保留一种,避免分不清流量是从哪条路径出去的。
Codex 执行 npm install、pip install 时连不上网,是代理问题吗?
不一定。Codex 在工作区写入沙箱里执行命令时默认不允许联网,需要在配置里通过 sandbox_workspace_write.network_access 主动开启。先确认是不是沙箱限制,再排查代理。
香港节点能用 Codex 吗?
不在支持范围内。Codex 属于 OpenAI 的服务,OpenAI 公布的支持国家和地区不含香港、澳门和中国大陆,页面写明从不受支持的地区访问可能导致账号被封禁或停用。
WSL 里的 Codex 怎么用 Windows 上的代理?
WSL2 默认的 NAT 网络里,127.0.0.1 指向 Linux 自己而不是 Windows。Windows 11 22H2 及以上可以开启镜像网络模式,让 127.0.0.1 直接连到 Windows;否则要改用 Windows 主机的 IP,并在代理客户端里允许局域网连接。
下一步建议
- 系统学习:回到专题主文章《AI 稳定机场怎么选:四个 AI 平台的地区与网络要求》,按顺序补齐相关知识。
- 还没想好用哪家?先看 2026 年稳定机场选购方法,再用 对比表 按自己的需求筛选。
- 已经有机场但用得不顺?从 客户端知识 和 网络知识 里找对应的排查方法。
✦ 小鱼严选机场
- 线路(官方)
- IEPL 专线
- 起步价
- ¥15/月 · 72GB
- 线路(官方)
- IEPL 专线 / IPLC 专线
- 起步价
- ¥20/月 · 130GB
严选入选理由见各自的“为什么选择”文章;本站尚未完成实测的机场会在资料页注明。部分服务商链接为推广链接(rel="sponsored"),我们可能因此获得佣金,但不影响评测结论。详见评测方法与商业披露。

