Skip to content

Codex 支持在 Windows 上以三种方式运行:原生 elevated 沙箱(推荐,需管理员权限)、原生 unelevated 沙箱(回退方案),以及 WSL2 Linux 环境。本文说明各模式的配置方法、适用场景,以及 elevated 沙箱安装失败、错误 1385、IDE 扩展不响应等常见问题的排查步骤。

Codex Windows 配置

Codex 在 Windows 上支持三种运行方式:

  • 原生 Windows + elevated 沙箱(推荐)
  • 原生 Windows + unelevated 沙箱(回退方案)
  • Windows Subsystem for Linux 2(WSL2),使用 Linux 沙箱实现

Windows 沙箱

在 Windows 原生运行时,Codex 的 Agent 模式使用 Windows 沙箱来阻止工作文件夹以外的文件系统写入,并在没有明确审批的情况下禁止网络访问。

config.toml 中配置沙箱模式:

toml
[windows]
sandbox = "elevated"  # 或 "unelevated"

elevated 模式

elevated 是推荐的原生 Windows 沙箱。它使用专用低权限沙箱用户、文件系统权限边界、防火墙规则,以及沙箱内命令运行所需的本地策略变更。能用 elevated 就用 elevated。

unelevated 模式

unelevated 是回退方案。它使用从当前用户派生的受限 Windows token 运行命令,应用基于 ACL 的文件系统边界,使用环境级别的离线控制(而非专用离线用户防火墙规则)。比 elevated 弱,但在 elevated 配置被企业策略阻止时仍然有用。

默认情况下,两种模式都使用私有桌面以增强 UI 隔离。只有在需要兼容旧的 Winsta0\\Default 行为时才设置 windows.sandbox_private_desktop = false

Windows 版本支持矩阵

Windows 版本支持级别说明
Windows 11推荐Codex on Windows 的最佳基础,企业部署建议标准化到 Windows 11
完全更新的近期 Windows 10尽力支持可用但不如 Windows 11 稳定;需要 ConPTY 支持(实际上需要 1809 或更新版本)
较旧的 Windows 10不推荐缺少 ConPTY 等必要控制台组件,在企业环境下更容易失败

其他环境要求:

  • winget 应可用。缺失时更新 Windows 或安装 Windows Package Manager
  • 推荐的原生沙箱依赖管理员批准的配置
  • 部分企业管理的设备即使 OS 版本合适也会阻止必要的配置步骤

为沙箱添加读取权限

当沙箱无法读取某个目录时,使用:

/sandbox-add-read-dir C:\absolute\directory\path

路径必须是已存在的绝对目录。命令成功后,当前 session 内沙箱可以读取该目录。


Windows Subsystem for Linux(WSL)

选择 WSL2 时,Codex 在 Linux 环境内运行,而不使用原生 Windows 沙箱。适合以下场景:

  • 需要 Linux 原生工具
  • 仓库和工作流已经在 WSL2 中
  • 两种原生 Windows 沙箱模式都不适合你的环境

WSL1 从 Codex 0.115 起不再支持(Linux 沙箱移到了 bubblewrap)。

在 WSL 中启动 VS Code

前置条件

  • 已安装 WSL 的 Windows(PowerShell 管理员权限下运行 wsl --install
  • 安装了 WSL 扩展 的 VS Code

从 WSL 终端打开 VS Code

bash
cd ~/code/your-project
code .

这会打开 WSL 远程窗口,状态栏显示 WSL: <distro>。如果没看到,按 Ctrl+Shift+P,选 WSL: Reopen Folder in WSL

在 WSL 中使用 Codex CLI

在提升权限的 PowerShell 或 Windows Terminal 中:

powershell
wsl --install   # 安装默认 Linux 发行版(如 Ubuntu)
wsl             # 进入 WSL shell

在 WSL shell 中:

bash
# 安装 Node.js(通过 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
nvm install 22

# 安装并运行 Codex
npm i -g @openai/codex
codex

在 WSL 中处理代码

  • 避免在 /mnt/c/... 等 Windows 挂载路径下工作(I/O 较慢)。把仓库放在 Linux home 目录下:

    bash
    mkdir -p ~/code && cd ~/code
    git clone https://github.com/your/repo.git
  • 如需从 Windows 访问文件,路径在资源管理器中是 \\wsl$\Ubuntu\home\<user>


故障排查

原生沙箱安装失败

最常见原因:

  • Windows UAC 或管理员提示被拒绝
  • 机器不允许创建本地用户或组
  • 机器不允许更改防火墙规则
  • 机器阻止了沙箱用户所需的登录权限
  • 其他企业策略阻止了安装流程

处理方式

  1. 重试 elevated 沙箱安装,允许管理员提示
  2. 如公司笔记本阻止,询问 IT 团队是否允许本地用户/组创建、防火墙配置和沙箱用户登录权限
  3. 如仍然失败,暂时使用 unelevated 沙箱继续工作,同时排查问题

Codex 切换到 unelevated 沙箱

这意味着 elevated 沙箱安装未能完成。Codex 仍在沙箱模式下运行(应用基于 ACL 的文件系统边界),但没有 elevated 的独立沙箱用户边界,网络隔离也较弱。长期来看,最好通过 IT 团队让 elevated 沙箱正常工作。

Windows 错误 1385

沙箱命令失败并报错 1385 时,Windows 正在拒绝沙箱用户启动命令所需的登录类型。

处理方式

  1. 询问 IT 团队是否为 Codex 创建的沙箱用户授予了所需的登录权限
  2. 检查问题是否只影响部分机器或团队(对比组策略或 OU 差异)
  3. 如需立即继续工作,暂时使用 unelevated 沙箱
  4. CODEX_HOME/.sandbox/sandbox.log 以及 Windows 版本和失败描述发送给支持团队

Codex 警告"某些文件夹被 Everyone 可写"

这意味着那些文件夹的 Windows 权限对沙箱来说过于宽松,沙箱无法完全保护它们。

处理方式:从 Codex 列出的文件夹中移除 Everyone 写权限,然后重启 Codex 或重新运行沙箱配置。

沙箱命令无法访问网络

部分 Codex 任务根据使用的权限模式有意禁用出站网络访问。如果确认需要网络访问,重启 Codex 重试;如问题持续,收集沙箱日志供团队检查。

沙箱以前正常,现在突然停止工作

可能在以下操作后发生:移动仓库或工作区、更改机器权限、更改 Windows 策略或其他系统配置变更。

处理方式:重启 Codex → 重试 elevated 沙箱安装 → 如不行则用 unelevated 作为临时回退 → 收集沙箱日志。

IDE 扩展已安装但无响应

系统可能缺少 C++ 开发工具(部分原生依赖项需要):

  • Visual Studio Build Tools(C++ 工作负载)
  • Microsoft Visual C++ Redistributable (x64)
  • wingetwinget install --id Microsoft.VisualStudio.2022.BuildTools -e

安装完成后完全重启 VS Code。

WSL 中大型仓库速度慢

  • 确认没有在 /mnt/c 下工作,将仓库移到 WSL 内(如 ~/code/...

  • 如需要,增加 WSL 的内存和 CPU 配置,并更新到最新版:

    powershell
    wsl --update
    wsl --shutdown

VS Code in WSL 找不到 codex

在 WSL 内验证二进制文件存在且在 PATH 中:

bash
which codex || echo "codex not found"

如果找不到,按上面的 WSL 安装步骤 重新安装。

发送诊断信息给 OpenAI

如问题持续,需要发送:

  • CODEX_HOME/.sandbox/sandbox.log
  • 操作描述
  • 使用的是 elevated 还是 unelevated 沙箱
  • 应用内显示的错误信息
  • 是否出现 1385 或其他 Windows/PowerShell 错误
  • Windows 11 还是 Windows 10

不要发送 CODEX_HOME/.sandbox-secrets/ 的内容。


常见问题

Q: elevated 和 unelevated 沙箱在安全性上有多大差距?

A: elevated 使用专用的低权限沙箱用户账号,配合防火墙规则实现真正的网络隔离,安全性更强。unelevated 只是限制当前用户的 token 权限,文件系统和网络隔离相对较弱,但比无沙箱强。能用 elevated 就用 elevated。

Q: Windows 10 能正常使用 Codex 吗?

A: 支持但不推荐。需要完全更新的 Windows 10(1809 或更新版本),但企业环境下问题比 Windows 11 更多。如果可以选择,优先标准化到 Windows 11。

Q: 什么时候选 WSL2,什么时候选原生 Windows 沙箱?

A: 优先选原生 Windows 沙箱,性能更好、体验更原生。只有在以下情况才选 WSL2:需要 Linux 工具链、仓库已经在 WSL2 中,或两种原生沙箱模式都因企业策略无法使用。