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

Codex Windows 配置

Windows 用户如果正在同时处理项目规则和运行环境,可以先把项目行为约定写进 AGENTS.md,再用本页配置 Windows 原生沙箱或 WSL2 运行方式。

如果你问的是“Codex Windows 桌面版和 WSL 怎么选”,先看结论:仓库和工具链本来就在 Linux 里,选 WSL2;需要原生 Windows 应用、原生 IDE 或公司机器不方便开 WSL,选 Windows 原生沙箱。不要在 Windows 和 WSL 两边同时改同一个工作区。

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

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

Windows / WSL 选择建议

情况 建议
项目依赖 Linux shell、Docker、Node 原生模块 用 WSL2,并把仓库放在 Linux home 目录
主要用 Windows IDE、原生桌面 App 或公司 Windows 工具链 用 Windows 原生沙箱
Elevated 沙箱被企业策略阻止 临时用 unelevated,长期找 IT 处理策略
需要和 VS Code Remote WSL 配合 从 WSL 里 code . 打开项目
同一个仓库两边都想打开 不建议;容易出现路径、换行、依赖和权限混乱

Windows 沙箱

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

在 config.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:

cd ~/code/your-project
code .

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

在 WSL 中使用 Codex CLI

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

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

在 WSL shell 中:

# 安装 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 目录下:

    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)
  • 用 winget:winget install --id Microsoft.VisualStudio.2022.BuildTools -e

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

WSL 中大型仓库速度慢

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

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

    wsl --update
    wsl --shutdown

VS Code in WSL 找不到 codex

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

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 中,或两种原生沙箱模式都因企业策略无法使用。