Codex CLI 默认直连网络。在国内网络环境或企业内网中,通常需要通过 HTTP 代理(Clash、Surge、Zscaler 等)访问外网。

代理机制 链接到标题

Codex CLI 的 HTTP 客户端(Rust/reqwest)读取以下环境变量:

  • HTTP_PROXY / http_proxy — HTTP 代理地址
  • HTTPS_PROXY / https_proxy — HTTPS 代理地址
  • NO_PROXY / no_proxy — 绕过代理的地址列表
  • ALL_PROXY / all_proxy — 兜底代理

优先级:HTTPS_PROXY > HTTP_PROXY > ALL_PROXY

配置方式 链接到标题

推荐:.env 文件 链接到标题

Codex 启动时自动加载 ~/.codex/.env,将其中定义的环境变量注入进程。

HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890
NO_PROXY=localhost,127.0.0.1,.lan,内网 IP 段

优点:不污染 shell 配置,只对 Codex 生效,与 opencode 等工具兼容。

备选:Shell 环境变量 链接到标题

直接写在 ~/.zshrc~/.bashrc 中:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,.lan,内网 IP 段

影响所有命令行工具,适合全局已配代理的场景。

NO_PROXY 注意点 链接到标题

reqwest 对 NO_PROXY 的域名匹配规则和浏览器不完全一致。如果代理拦截了本应绕过的请求,Codex 会返回 502。

经验:内网服务直接在 NO_PROXY 中写 IP 地址和网段,避免依赖主机名解析后匹配。 系统代理(如 Clash)的 ExceptionsList 也要同步配置 IP 段规则。

对于 macOS 上的系统级代理,ExceptionsList 中的 192.168.0.0/1610.0.0.0/8 等段能确保内网流量不经过代理,但仅在请求使用 IP 而非主机名时生效。

验证 链接到标题

确认代理环境变量已加载:

env | grep -i proxy

确认内网服务直连正常(返回模型列表即为绕过成功):

curl -s http://内网服务器:38440/v1/models | head -c 100

启动 Codex(需在有 git 仓库的目录下运行):

cd /path/to/project
codex

参考 链接到标题

  • opencode 同样使用 HTTP_PROXY=http://127.0.0.1:7890 配合相同的 NO_PROXY 列表,配置可保持一致
  • Codex 官方文档:developers.openai.com/codex