CODEX 权限排障 先分清沙箱、审批、工作区和系统权限

SANDBOX / PERMISSION DENIED / READ-ONLY

Codex sandbox permission denied、read-only 与网络权限排查

permission denied 只描述操作被拒绝,不等于唯一根因。先分清 Codex sandbox 的技术边界、approval 的交互策略、workspace 范围、受保护路径、系统文件权限和网络策略,再选择最小权限修复。

发布于 2026 年 7 月 21 日 · 阅读约 15 分钟

30 秒分流:先看被拒绝的是哪一种操作

错误或现象优先范围第一步
permission denied / EACCESOS 权限、执行位、ACL,也可能是沙箱记录命令、目标路径和同终端对照
operation not permitted / EPERM沙箱、系统保护、企业安全策略确认目标和当前 sandbox / host
read-only file systemread-only mode、挂载或受保护路径/permissions/status 核对
能读不能写目标不在 writable roots、符号链接越界确认真实路径是否在 workspace
写普通文件成功,改 .git 失败workspace-write 的递归保护不要绕过,改用正常 Git 工作流
浏览器能上网,命令不能联网命令网络默认关闭或远端 host 不同区分内置搜索与 spawned command 网络
没有弹审批,命令直接失败approval_policy = never 或策略禁止审批关闭不等于沙箱扩大

Sandbox 和 Approval 是两层控制,不要混为一谈

OpenAI 当前安全文档把本地 Codex 控制分成两层:

  • Sandbox mode:命令技术上能读取或写入哪些位置、是否能访问网络。
  • Approval policy:遇到越出当前边界或有副作用的操作时,何时暂停并请求用户批准。

常见 Auto 组合是:

codex --sandbox workspace-write --ask-for-approval on-request

它允许在工作区内读写和运行命令,并在需要工作区外文件或网络时请求批准。切换为 --ask-for-approval never 只会取消提示,不会自动赋予写入工作区外或联网的能力;命令可能直接失败。

官方来源:Agent approvals & securityConfiguration Reference

用 /permissions 和 /status 确认真实工作区

/permissions
/status

非版本控制目录可能默认建议 read-only;未受信任的工作目录也可能保持只读,直到你明确选择权限。/status 可帮助确认当前工作目录与 workspace roots;临时目录通常也在工作区范围内,但应以当前会话显示为准。

情况为什么会失败正确方向
目标在仓库父目录不属于 writable root让用户明确授权或切换到正确项目
仓库内符号链接指向外部真实目标越出工作区核对真实路径,不用链接绕过边界
Local 终端成功,WSL/SSH 失败不是同一 host、路径或用户从实际运行侧检查 workspace 与属主
项目未受信任可能保持 read-only,项目配置也不加载确认目录来源后再信任
只读挂载或容器 volumeOS 层不允许写,即使 sandbox 允许修改挂载或在可写卷工作

workspace-write 仍有受保护路径:.git、.agents、.codex

当前官方文档明确说明,在默认 workspace-write 中,即使目录位于 writable root,下列路径仍递归只读:

  • <writable_root>/.git
  • <writable_root>/.agents
  • <writable_root>/.codex

.git 是指向其他 Git 目录的 pointer file 时,解析后的真实 Git 目录也受保护。这是为什么直接写 .git/config、hooks 或内部引用可能失败,但正常使用受控 Git 命令仍能按工具和审批边界工作。

不要用符号链接、chmod -R 777 或直接修改 Git 内部文件绕过:这会破坏仓库安全边界,也可能造成难以恢复的数据损坏。优先使用正常 Git 命令,并对需要的动作单独审批。

如果不是 Codex 沙箱,再检查操作系统权限

在同一 host、同一用户和同一工作目录,用不含敏感参数的最小命令做对照。重点检查:

  • 文件或目录的属主、组、ACL 与只读标志;
  • 脚本是否缺少执行位,解释器是否存在;
  • macOS 隐私权限、Windows Defender / 企业安全策略;
  • 容器、远程挂载、网络盘是否只读;
  • 目标文件是否被其他进程锁定;
  • Windows 与 WSL 文件系统边界、大小写和路径转换。

不要先运行全盘 chmod -R 777、关闭杀毒软件或永久降低系统安全策略。先定位到一个具体路径和一个具体操作,判断拒绝来自 Codex、OS 还是组织策略。

命令网络默认关闭:内置搜索能用不代表 curl 能用

当前官方文档说明,本地 workspace-write 默认关闭 spawned commands 的网络访问。确有需要且风险可接受时,可在用户级配置中启用:

[sandbox_workspace_write]
network_access = true

这只决定命令能否联网,不等于放宽文件权限。内置 web search 还可以使用缓存索引或独立策略,因此“Codex 能搜索网页”不能证明终端里的 curl、包管理器或测试进程一定能访问公网。

需要更细边界时,官方当前还提供 network proxy 与域名策略。应优先只允许任务所需的明确域名;全局 * 属于广泛网络访问,deny 规则优先。不要为一次依赖安装永久开放全部网络。

Windows、WSL 与 Remote:从实际运行 Codex 的一侧排查

  • 原生 Windows:确认 Windows sandbox 初始化、当前用户权限、Defender 与企业策略。
  • WSL2:Windows 和 Linux 是两个独立权限与路径环境;在 WSL home 工作通常比 /mnt/c 更稳定。
  • VS Code Remote:扩展可能运行在 WSL、SSH 或 Codespaces 侧,不能用本地 PowerShell 成功证明远端权限正常。
  • 容器:检查 volume 是否以只读方式挂载,以及容器用户是否拥有目标目录。

Windows 相关安装、WSL2、PATH 与 native sandbox 初始化见Codex Windows / WSL2 指南

最小权限恢复顺序

  1. 保存完整错误与目标

    记录命令、脱敏路径、发生环境和首次失败时间。

  2. 查看 /permissions 和 /status

    确认 sandbox、approval、workspace roots 与项目是否受信任。

  3. 判断是否命中受保护路径

    .git.agents.codex 不应通过链接或 chmod 绕过。

  4. 在同 host 做 OS 对照

    确认属主、ACL、执行位、挂载与企业安全策略。

  5. 只申请任务需要的权限

    优先 workspace-write 与 on-request,不把 full access 设成长期默认。

  6. 网络按域名和时段收窄

    区分安装阶段、测试阶段与运行阶段,完成后回收。

  7. 保留可回滚记录

    一次改变一个变量,记录前后结果和仍失败的第一条错误。

一份可处理的权限故障报告

01完整错误

permission denied、EPERM、read-only 或 sandbox denied 的原文。

02命令和目标

最小命令、脱敏真实路径、是否符号链接或受保护目录。

03环境

Codex 与 OS 版本,Local / WSL / SSH / 容器 / IDE host。

04控制状态

sandbox mode、approval policy、workspace roots 与 network_access。

05OS 对照

同用户终端是否成功,属主、ACL、挂载和组织策略结果。

公开日志前删除用户名、私密路径、仓库代码、API Key、Cookie、Session、auth.json 和组织内部网络信息。

Codex sandbox 与 permission denied 常见问题

Codex permission denied 一定是 sandbox 导致的吗?

不一定。还可能是 OS 权限、ACL、属主、执行位、只读挂载或安全软件。必须结合目标路径和同 host 对照。

sandbox mode 和 approval policy 有什么区别?

Sandbox 决定技术边界,approval 决定何时询问。关闭审批不会扩大沙箱。

workspace-write 为什么仍不能修改 .git 或 .codex?

官方当前把 .git.agents.codex 设为 writable roots 中的递归受保护只读路径。

Codex 为什么启动后是 read-only?

非版本控制目录或未受信任项目可能保持只读。用 /permissions 核对后按任务需要选择受控权限。

Codex 能读文件但不能写怎么办?

/status 检查真实目标是否在 workspace,再看受保护路径、链接、挂载和 OS 权限。

Codex workspace-write 为什么不能联网?

命令网络默认关闭;可按风险配置 sandbox_workspace_write.network_access,并优先使用明确域名策略。

把 approval_policy 设为 never 就能解决权限错误吗?

不能。它只取消提示,当前 sandbox 仍然生效,越界操作可能直接失败。

可以默认使用 danger-full-access 或 --yolo 吗?

不建议。优先 workspace-write 与 on-request,仅在隔离、可信、明确需要的环境中短时扩大。

chmod -R 777 能修复 Codex permission denied 吗?

不应作为通用方案,它无法解决沙箱、只读挂载或受保护路径,还会扩大安全风险。

升级 Plus 或 Pro 能修复 sandbox denied 吗?

通常不能。执行权限由环境控制,不会因重复充值改变。

报告 Codex 权限错误需要哪些信息?

提供错误、最小命令、脱敏目标、环境、sandbox、approval、workspace、链接和 OS 对照;删除所有凭证与项目数据。

来源与利益关系说明

本文由 Hi Codex 服务团队根据 OpenAI 当前 Agent approvals & security、Sandboxing、Configuration Reference 与 Windows 文档整理。团队提供独立人工充值协助,与 ChatGPT / Codex 套餐主题存在商业利益关系;与 OpenAI 不存在隶属、代理或官方授权关系。

沙箱、审批与网络策略会随版本和组织配置变化,请以当前客户端显示、官方文档和受控复现为准。本文不建议默认 full access、关闭系统安全、全盘 chmod、符号链接绕过或共享凭证。

仅当后续问题被确认与账号能力有关Plus ¥140 · Pro 5x ¥745 · Pro 20x ¥1320

Sandbox、approval、workspace、OS 权限和命令网络不会因为重复充值自动修复。

查看套餐与价格