问题根源是防火墙拦截node.js外连或代理未被cli正确读取,需分别配置防火墙规则、设置http(s)_proxy环境变量或config.toml中的proxy字段,并通过netstat和curl验证代理端口与链路有效性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Codex安装完成后执行codex --help或codex list时持续卡在“正在思考”、报connect ETIMEDOUT或request failed, reason: socket hang up,问题往往不出在API密钥或模型配置,而是本地网络通路被系统级策略拦截——防火墙默认阻止Node.js进程外连,代理环境变量又未被CLI正确继承。
确认防火墙是否拦截Node.js进程
Windows防火墙默认会阻止未知程序联网,而Codex底层依赖Node.js运行时,但安装时通常不会自动添加例外规则。
以管理员身份打开PowerShell,执行:Get-NetFirewallApplicationFilter | Where-Object { $_.Program -like "*node.exe*" } | Get-NetFirewallRule
若返回空结果,说明node.exe未被放行。此时需手动添加入站+出站规则:右键“Windows Defender 防火墙”→“高级设置”→左侧选“出站规则”→右侧点“新建规则”→选“程序”→浏览到你的Node.js安装目录下的node.exe(常见路径如C:\Program Files\nodejs\node.exe)→允许连接→应用到所有配置文件。
【关键前提】必须同时为入站和出站规则添加,仅开一个方向会导致TLS握手失败
检查代理是否被CLI实际读取
Codex CLI不读取Windows系统代理设置,也不自动继承PowerShell中临时设置的$env:HTTP_PROXY,只认两种来源:环境变量(全局生效)或config.toml中的proxy字段。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
方法一:通过环境变量强制注入(推荐临时验证)
在管理员PowerShell中执行:[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:7890", "Machine");[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:7890", "Machine");然后重启终端再试codex list。
方法二:写入配置文件(长期稳定方案)
打开C:\Users\你的用户名\.codex\config.toml,在[client]段落下方新增一行:proxy = "http://127.0.0.1:7890";保存后关闭所有终端窗口重新打开,否则旧进程仍读缓存配置。
注意:端口号必须与你本地代理工具(Clash/Quantumult等)的实际HTTP监听端口完全一致,填错会导致connection refused而非超时。
验证代理链路是否真正贯通
第一步:确认代理端口确实在监听
执行netstat -ano | findstr :7890,看到127.0.0.1:7890或0.0.0.0:7890处于LISTENING状态才算有效。
第二步:绕过Codex直接测试代理出口
在PowerShell中运行:curl.exe -x http://127.0.0.1:7890 https://api.openai.com/v1/models -I --max-time 15。
成功响应必须含HTTP/2 200或HTTP/1.1 200 OK;若返回403 Forbidden,说明代理本身能通但未配置OpenAI域名白名单;若超时,说明代理服务未运行或端口被占。
第三步:检查代理是否劫持了证书链
执行curl.exe -v https://api.openai.com/v1/models 2>&1 | Select-String "subject:",输出中应出现subject: CN=api.openai.com。若显示CN=Clash或Unknown,证明代理启用了MITM证书但未导入系统信任库,此时必须在certmgr.msc中将代理根证书拖入“受信任的根证书颁发机构”。










