代理是 Windows 上最常见的坑:即使你在 Windows 里开了代理,WSL2 里运行的 Codex CLI 也看不到它。必须在 WSL2 内单独配置 HTTPS_PROXY,见 WSL2 代理穿透 章节。
Windows 上安装 Codex CLI 的三种方式
根据你的开发环境和习惯,有三种主流安装方式,选最适合自己的:
方式一:WSL2(推荐)
WSL2 提供完整的 Linux 内核,Node.js 工具链在 Linux 环境下兼容性最好,npm 全局包权限问题最少,也最接近生产服务器环境。如果你平时已经在用 WSL2 做开发,这是首选。
前提:已安装 WSL2 和 Ubuntu(或其他 Linux 发行版)。如未安装,在管理员 PowerShell 里运行:
PS> wsl --install
# 安装完成后重启 Windows,默认安装 Ubuntu
进入 WSL2(打开 Ubuntu 或在 Terminal 切换到 Ubuntu 标签),安装 Node.js 18+ 和 Codex CLI:
# 安装 nvm(Node 版本管理器)
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重开终端后安装 Node 22
$ nvm install 22 && nvm use 22
$ node -v # v22.x.x
# 安装 Codex CLI
$ npm install -g @openai/codex
# 验证
$ codex --version
WSL2 安装完 Codex 后,必须配置代理才能连接 OpenAI——WSL2 的网络与 Windows 是隔离的。见下方 WSL2 代理穿透 章节。
方式二:PowerShell + Node.js for Windows
不想装 WSL2 的用户,可以直接在 Windows 原生 PowerShell 里安装,使用 Windows 版 Node.js。
第一步:安装 Node.js LTS(从 nodejs.org 下载安装包,或用 winget):
# 用 winget 安装 Node.js LTS(推荐,无需手动下载)
PS> winget install OpenJS.NodeJS.LTS
# 安装完成后重开 PowerShell 验证
PS> node -v # v22.x.x 或更高
第二步:安装 Codex CLI:
PS> npm install -g @openai/codex
PS> codex --version
如果出现 cannot be loaded because running scripts is disabled,需要先调整 PowerShell 脚本执行策略,见 PowerShell 无法运行脚本 章节。
方式三:Git Bash / Scoop
如果你在用 Git Bash(Git for Windows 自带)或 Scoop 包管理器,也可以通过这些工具安装:
# 用 Scoop 安装 Node.js
> scoop install nodejs-lts
# 在 Git Bash 或 Scoop 环境下安装 Codex
> npm install -g @openai/codex
> codex --version
Git Bash 是 MSYS2 环境,行为上接近 Linux shell,大多数 bash 脚本可以直接运行。但路径格式(/c/Users/...)和 Windows 原生路径不同,偶尔需要注意。
Windows 特有的 Proxy 配置问题
这是 Windows 上运行 Codex CLI 最常见的拦路虎。不同安装方式的代理配置方法不同:
PowerShell 代理设置
在 PowerShell 中,系统代理不会自动被 Node.js 继承,需要手动设置环境变量:
# 假设本地代理监听在 7890 端口(Clash 默认)
PS> $env:HTTPS_PROXY = "http://127.0.0.1:7890"
PS> $env:HTTP_PROXY = "http://127.0.0.1:7890"
# 验证代理生效
PS> codex "你好,测试连接"
如果想让代理在每次打开 PowerShell 时自动生效,把上面两行写入 PowerShell Profile:
# 打开 Profile 文件(不存在会自动创建)
PS> notepad $PROFILE
# 在 Profile 末尾添加:
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:HTTP_PROXY = "http://127.0.0.1:7890"
Clash / V2Ray 用户注意事项
使用 Clash for Windows 或 V2RayN 时,需要确保以下设置正确:
- 开启「允许局域网连接」(Allow LAN)——否则其他进程(包括 WSL2)无法通过 127.0.0.1 连接代理
- 确认 HTTP/HTTPS 代理端口(Clash 默认 7890,V2RayN 默认 10809)
- 使用系统代理模式时,PowerShell 里的 Node.js 进程不会自动读取 Windows 系统代理,仍需手动设置
$env:HTTPS_PROXY
WSL2 网络代理穿透(最常见问题)
WSL2 使用独立的虚拟网络适配器,有自己的 IP 地址,与 Windows 主机通过 NAT 通信。这意味着:
- Windows 系统代理设置对 WSL2 内的进程完全无效
- 在 Windows 里开了 Clash/V2Ray 等代理,WSL2 里的 Codex 照样无法连接 OpenAI
- 需要在 WSL2 内将
HTTPS_PROXY指向 Windows 主机 IP
方法一:使用 Windows 主机 IP(推荐)
WSL2 的默认网关(即 Windows 主机在 WSL2 网络里的 IP)可以从 /etc/resolv.conf 里读取:
# 查看 Windows 主机 IP(WSL2 网关)
$ cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
# 通常输出类似 172.x.x.1
# 一行命令设置代理(替换 7890 为你实际的代理端口)
$ export HTTPS_PROXY=http://$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):7890
$ export HTTP_PROXY=$HTTPS_PROXY
# 测试
$ curl -I https://api.openai.com
把这两行 export 写入 ~/.bashrc 或 ~/.zshrc 可以永久生效:
$ cat >> ~/.bashrc <<'EOF'
# Codex CLI / WSL2 代理配置
export HTTPS_PROXY=http://$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):7890
export HTTP_PROXY=$HTTPS_PROXY
export NO_PROXY=localhost,127.0.0.1
EOF
$ source ~/.bashrc
方法二:使用 proxychains
如果你不想修改全局环境变量,可以用 proxychains-ng 为单个命令设置代理:
# 安装 proxychains-ng
$ sudo apt install proxychains4
# 编辑配置(把最后一行改为你的代理地址)
$ sudo nano /etc/proxychains4.conf
# 最后一行改为:
# http 172.x.x.1 7890
# 使用 proxychains 运行 codex
$ proxychains4 codex "帮我创建 hello.js"
WSL2 镜像网络模式(Windows 11 23H2+):如果你的 Windows 11 版本较新,可以在 %USERPROFILE%\.wslconfig 中设置 [wsl2] networkingMode=mirrored,这样 WSL2 与 Windows 共享网络栈,可以直接使用 127.0.0.1 访问 Windows 上的代理,不再需要查主机 IP。
PowerShell 无法运行脚本问题
Windows 默认限制 PowerShell 脚本执行,运行 codex 时可能报:
codex.ps1 cannot be loaded because running scripts is disabled on this system.
File ... cannot be loaded because the execution of scripts is disabled...
解决方法:以当前用户权限放开脚本执行策略(无需管理员权限):
PS> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# 输入 Y 确认
# 验证策略已更改
PS> Get-ExecutionPolicy -Scope CurrentUser
# RemoteSigned
RemoteSigned 策略允许运行本地脚本和来自可信发行者签名的远程脚本,是安全和实用性的平衡点。不建议使用 Unrestricted 或 Bypass。
Windows 常见报错
EPERM: operation not permitted
现象:npm install 或 codex 运行时出现 EPERM: operation not permitted, mkdir ... 或类似权限错误。
原因与解决:
- npm 全局目录权限问题:不要用
npm install -g加 Administrator 账户,改用nvm-windows(nvm-windows)管理 Node,nvm 的 npm 全局目录在用户目录下,无权限问题 - 防病毒软件拦截:Windows Defender 或第三方杀毒软件可能拦截 npm 包解压,临时关闭实时防护或为 npm 缓存目录设置排除
- 文件系统权限:在 WSL2 里,不要把项目放在
/mnt/c/...(Windows 文件系统),性能差且权限问题多;把项目放在~/(WSL2 Linux 文件系统)里
# 从 https://github.com/coreybutler/nvm-windows/releases 下载安装
# 安装后在普通 PowerShell(非管理员)里:
PS> nvm install 22
PS> nvm use 22
PS> npm install -g @openai/codex
'node' 不是内部命令 / node is not recognized
现象:'node' is not recognized as an internal or external command
原因:Node.js 安装路径没有加入 PATH 环境变量。
解决:
- 用 winget 重新安装 Node:
winget install OpenJS.NodeJS.LTS,安装程序会自动处理 PATH - 或手动添加:在「系统属性 → 环境变量 → Path」里加入 Node 安装目录(通常
C:\Program Files\nodejs) - 修改 PATH 后必须重开 PowerShell 才能生效
SSL 证书错误(企业网络)
现象:UNABLE_TO_VERIFY_LEAF_SIGNATURE 或 SELF_SIGNED_CERT_IN_CHAIN
原因:公司网络使用了 SSL 检查(SSL inspection),用自签名企业证书替换了 OpenAI 的证书。
解决:让 IT 提供企业根证书(.crt 或 .pem 文件),然后:
# 方法一:通过环境变量指定额外的 CA 证书文件
PS> $env:NODE_EXTRA_CA_CERTS = "C:\path\to\company-root-ca.pem"
# 方法二(npm 安装时):配置 npm cafile
PS> npm config set cafile "C:\path\to\company-root-ca.pem"
测试安装是否成功
完成安装和代理配置后,用以下步骤验证 Codex CLI 完全可用:
- 检查版本号:
$ codex --version # 输出版本号(如 0.1.x)即安装成功 - 发送简单指令测试连接:
$ codex "帮我创建一个 hello.js,输出 Hello from Codex!" # 正常会询问确认后创建文件 - 运行生成的文件:
$ node hello.js # Hello from Codex!
如果看到 Codex 成功生成并运行了文件,说明安装、代理、认证全部配置正确。下一步可以看 登录与上手 了解更多用法。
常见问题
WSL2 和 Windows 原生安装有什么区别?
WSL2 在 Windows 内运行完整的 Linux 内核,Node.js 工具链兼容性更好,npm 全局包权限问题更少,文件系统(Linux 分区)IO 性能也更高。缺点是需要额外安装 WSL2,且代理配置更复杂(需要穿透 WSL2 的 NAT 网络)。PowerShell 原生安装配置更简单,不需要额外装 Linux 子系统,适合偶尔使用 Codex 的开发者。建议:有 Linux 开发经验的用 WSL2,其他人从 PowerShell 开始。
Windows Defender 报毒怎么办?
Codex CLI 是 OpenAI 官方开源工具(github.com/openai/codex),有时 Windows Defender 对 npm 全局包触发误报(启发式检测)。可以临时关闭实时防护完成安装,或在「Windows 安全中心 → 病毒和威胁防护设置 → 排除项」里添加 npm 全局目录(通常 %APPDATA%\npm 和 %APPDATA%\npm-cache)。安装完成后可以重新开启实时防护,已安装的文件不会受影响。
公司网络需要配置企业代理怎么办?
企业代理通常需要两步:1) 设置 HTTPS_PROXY 环境变量指向企业代理地址;2) 配置企业根证书,通过 NODE_EXTRA_CA_CERTS 环境变量或 npm config set cafile 指定企业 CA 证书文件。如果不确定代理地址和证书,联系公司 IT 部门获取,通常他们会提供 PAC 文件或直接的代理服务器地址。
Codex CLI 支持 Windows ARM 吗?
截至 2026 支持。Node.js 有 Windows ARM64 原生版本(可从 nodejs.org 下载 ARM64 安装包),在 Surface Pro X 等 ARM64 Windows 设备上可以原生运行。也可以通过 WSL2 安装 ARM 版 Ubuntu 运行。建议使用 Node.js 22 LTS ARM64 版本,整体兼容性良好。