先判断你的情况:终端、桌面应用、已装 Clash,还是想改 API 地址
| 你的情况 | 推荐做法 | 要注意 |
|---|---|---|
| 在终端运行 codex(CLI) | 启动前 export HTTPS_PROXY,见下一节 | 本文只在 Mac 上实测了终端 CLI;官方文档没有写 SOCKS,建议填 HTTP 端口 |
| Codex 的桌面应用或 IDE 扩展 | 优先用 TUN 接管,不依赖应用读不读变量 | 本文没有逐一验证它们是否读取环境变量 |
| 已经装了 Clash、Surge 之类的客户端 | 把它的 HTTP 端口或混合端口填进变量,或让它开启 TUN | 只开系统代理时,终端里的 codex 不一定走代理 |
| 想换 API 地址(中转、网关) | 改 config.toml 的 base_url,这不是网络代理 | 见下文「config.toml 里有代理设置吗」 |
终端里怎么设置 Codex 代理配置:HTTPS_PROXY
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"
codex确认代理客户端的 HTTP 端口
在你的代理客户端里找 HTTP 端口或混合端口,下面以 127.0.0.1:7890 为例。
在终端导出变量并启动 codex
变量要在启动 codex 之前设置,只对当前终端有效;写进 ~/.zshrc 可以长期生效。
在代理端确认
我们在 Mac 上用 Codex CLI 0.159.3 做过验证:把 HTTPS_PROXY 指向一个只记录请求的本地端口,Codex 向它发出了对 chatgpt.com:443 的 CONNECT 请求。这是我们自己的实测,OpenAI 官方文档没有写这一点。
config.toml 里有代理设置吗:它管的是 API 地址
Codex 的本地状态默认放在 ~/.codex(由 CODEX_HOME 决定),配置文件是 ~/.codex/config.toml。官方文档里这个文件的 openai_base_url 和 model_providers.<id>.base_url,是把 Codex 指向某个 LLM 代理、路由器或网关的 API 地址,不是让 Codex 自己走你的网络代理。
配置里还有 features.network_proxy,官方描述为给沙箱命令启动的网络代理,实验性,默认关闭。它是沙箱里命令的访问策略,不是 Codex 出网时用的代理。
所以遇到连不上的问题,先分清两件事:网络不通用上一节的环境变量或 TUN;想换 API 地址才改 config.toml。
# ~/.codex/config.toml:把内置 OpenAI 提供方指向另一个地址
openai_base_url = "https://us.api.openai.com/v1"
# 或者自定义一个提供方
model_provider = "proxy"
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "http://proxy.example.com"
env_key = "OPENAI_API_KEY"Codex 代理规则:只让 Codex 走代理,其余直连
终端里的环境变量只作用于设置了它的那个进程,其他程序不受影响。想让整台 Mac 都走代理时,用 TUN:sing-box 的 TUN 入站打开 auto_route 后,会把默认路由指向虚拟网卡,进程不需要读取任何代理变量。
这时要靠规则决定哪些流量走代理。Pax 的应用分流只能选 .app,不能选 codex 这样的命令行程序,所以只让 Codex 走代理要用域名规则。先在流量监控里看 Codex 实际访问了哪些域名,再把这些域名指向代理线路。域名规则对所有访问这个域名的应用都生效,不只是 Codex。
用 Pax 怎么做:不设环境变量,让 Codex 走代理
Pax Connect 是基于 sing-box 的 Mac 代理客户端,让 Claude Code、Codex 无需环境变量即可走代理,配置中转 API,并在本机统计 Token 用量与费用。App 界面目前只有中文,Pax 不提供线路,需要自己的节点或订阅。
导入自己的线路
在「线路管理」里导入已有的节点或订阅,选定要用的一条。
选择 TUN 并开启代理
代理模式选 TUN,开启时按提示完成管理员授权。之后不需要再设 HTTPS_PROXY。
在终端运行 codex 并发一条消息
让它产生新连接。
到「流量监控 → 概览」核对
Pax 能识别 Codex CLI 进程,按应用查看可以看到它的连接、目标域名、实际线路和最近命中的规则。进程名按安装位置识别,目前覆盖 npm 全局安装的 @openai/codex;识别不到时,用目标域名对照。
验证与排查:Codex 代理问题怎么查
先看代理客户端自己的连接日志里有没有 Codex 的请求;用 Pax 就看「流量监控 → 概览」里 Codex CLI 的连接和实际线路。两边对得上,说明网络这一层是通的。
网络通了不等于账号可用。登录状态、套餐、API Key 或中转地址的问题,不会因为代理而消失,需要从账号和 config.toml 里的地址上排查。
| 症状 | 常见原因 | 怎么处理 |
|---|---|---|
| 终端里反复出现 Reconnecting... waiting for network | 代理地址不通,或代理端返回了错误(我们用一个拒绝连接的本地端口复现过) | 确认客户端已启动、端口正确、地址带 http:// 前缀 |
| export 之后还是直连 | 变量没有在启动 codex 的那个终端里生效 | 在同一个终端里执行 echo $HTTPS_PROXY,再重新运行 codex |
| 只想让 Codex 走代理,浏览器也被改了 | 域名规则对所有应用生效 | 收窄域名范围,先在流量监控里确认 Codex 实际用到的域名 |
| 能连上,但提示登录、额度或权限问题 | 代理成功不等于账号可用 | 检查登录方式与 config.toml 里的 API 地址 |
常见问题
codex 代理配置怎么写?
在终端里先执行 export HTTPS_PROXY=http://127.0.0.1:7890,再运行 codex。~/.codex/config.toml 里没有对应的代理项,别把 base_url 当成网络代理。
codex 代理问题怎么排查?
先在代理客户端或 Pax 的流量监控里确认有没有 Codex 的连接。没有,说明变量没生效或没有 TUN 接管;有,再检查账号和 config.toml 里的 API 地址。
codex 代理规则怎么设?
用 TUN 接管整机流量,再用域名规则指定哪些域名走代理。先在流量监控里看 Codex 实际访问的域名。Pax 的应用分流只能选 .app,不能直接选 codex 命令行程序。
codex 支持 socks5 代理吗?
官方文档没有说明,我们也没有验证。保险的做法是填客户端的 HTTP 端口或混合端口,或者用 TUN。
