问题现象

我的环境是:

  • Windows 本地使用 Codex App
  • 通过 Remote SSH 连接远程 Linux 服务器
  • 远程服务器需要通过本地代理访问 OpenAI

远程服务器直接执行 Codex CLI:

codex exec --skip-git-repo-check "只回复 OK"

可以正常返回:

OK

但通过 Windows Codex App 连接远程服务器后,界面一直显示:

正在重新连接

甚至还会导致后续直接在远程服务器启动 Codex 也出现网络异常。


原因

远程服务器的 shell 中虽然配置了:

HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890

但 Codex App 通过 Remote SSH 启动的:

codex app-server

并不会稳定继承这些代理环境变量。

结果就是:

手动启动 Codex CLI
    ↓
有代理
    ↓
正常

Codex App Remote
    ↓
启动 app-server
    ↓
没有代理
    ↓
一直重新连接

解决办法

思路很简单:

不再依赖 .bashrc 是否被继承,而是在 codex 启动入口强制注入代理。

原来的:

~/.local/bin/codex

是一个软链接:

~/.local/bin/codex
-> ~/.codex/packages/standalone/current/bin/codex

先备份:

mv ~/.local/bin/codex ~/.local/bin/codex.link.bak

然后创建一个 wrapper:

cat > ~/.local/bin/codex <<'EOF'
#!/usr/bin/env bash

unset ALL_PROXY
unset all_proxy

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
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,::1
export no_proxy=localhost,127.0.0.1,::1

exec "$HOME/.codex/packages/standalone/current/bin/codex" "$@"
EOF

chmod +x ~/.local/bin/codex
hash -r

之后无论是:

codex

还是 Codex App Remote SSH 启动:

codex app-server

都会强制带上代理。


验证

先测试 CLI:

codex exec --skip-git-repo-check "只回复 OK"

正常返回:

OK

再重新连接 Windows Codex App,网络恢复正常,不再一直显示重连。


如果以后 Codex 更新把 wrapper 覆盖了

可以检查:

head -30 ~/.local/bin/codex

正常应该能看到:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890

如果发现已经没有这些内容,或者:

ls -l ~/.local/bin/codex

又变回了软链接,例如:

~/.local/bin/codex -> ~/.codex/packages/standalone/current/bin/codex

说明 Codex 更新时把 wrapper 覆盖了。

直接重新执行:

rm -f ~/.local/bin/codex

cat > ~/.local/bin/codex <<'EOF'
#!/usr/bin/env bash

unset ALL_PROXY
unset all_proxy

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
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,::1
export no_proxy=localhost,127.0.0.1,::1

exec "$HOME/.codex/packages/standalone/current/bin/codex" "$@"
EOF

chmod +x ~/.local/bin/codex
hash -r

然后测试:

codex --version
codex login status
codex exec --skip-git-repo-check "只回复 OK"

总结

这次问题的核心不是账号,也不是 Codex CLI 本身,而是:

Codex App Remote SSH
    ↓
远程 app-server
    ↓
没有继承 HTTP_PROXY
    ↓
网络异常

最终通过给 codex 加一层 wrapper,强制所有 Codex 进程使用代理解决:

Codex App / CLI
    ↓
~/.local/bin/codex wrapper
    ↓
强制注入 HTTP_PROXY
    ↓
真正的 Codex binary
    ↓
OpenAI

以后如果升级 Codex 后问题复现,第一件事就是检查:

head -30 ~/.local/bin/codex

如果代理配置没了,重新生成 wrapper 即可。

更多推荐