30 秒分流:先看被拒绝的是哪一种操作
| 错误或现象 | 优先范围 | 第一步 |
|---|---|---|
permission denied / EACCES | OS 权限、执行位、ACL,也可能是沙箱 | 记录命令、目标路径和同终端对照 |
operation not permitted / EPERM | 沙箱、系统保护、企业安全策略 | 确认目标和当前 sandbox / host |
read-only file system | read-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 只会取消提示,不会自动赋予写入工作区外或联网的能力;命令可能直接失败。
用 /permissions 和 /status 确认真实工作区
/permissions
/status非版本控制目录可能默认建议 read-only;未受信任的工作目录也可能保持只读,直到你明确选择权限。/status 可帮助确认当前工作目录与 workspace roots;临时目录通常也在工作区范围内,但应以当前会话显示为准。
| 情况 | 为什么会失败 | 正确方向 |
|---|---|---|
| 目标在仓库父目录 | 不属于 writable root | 让用户明确授权或切换到正确项目 |
| 仓库内符号链接指向外部 | 真实目标越出工作区 | 核对真实路径,不用链接绕过边界 |
| Local 终端成功,WSL/SSH 失败 | 不是同一 host、路径或用户 | 从实际运行侧检查 workspace 与属主 |
| 项目未受信任 | 可能保持 read-only,项目配置也不加载 | 确认目录来源后再信任 |
| 只读挂载或容器 volume | OS 层不允许写,即使 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 命令仍能按工具和审批边界工作。
如果不是 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 指南。
最小权限恢复顺序
- 保存完整错误与目标
记录命令、脱敏路径、发生环境和首次失败时间。
- 查看 /permissions 和 /status
确认 sandbox、approval、workspace roots 与项目是否受信任。
- 判断是否命中受保护路径
.git、.agents、.codex不应通过链接或 chmod 绕过。 - 在同 host 做 OS 对照
确认属主、ACL、执行位、挂载与企业安全策略。
- 只申请任务需要的权限
优先 workspace-write 与 on-request,不把 full access 设成长期默认。
- 网络按域名和时段收窄
区分安装阶段、测试阶段与运行阶段,完成后回收。
- 保留可回滚记录
一次改变一个变量,记录前后结果和仍失败的第一条错误。
一份可处理的权限故障报告
permission denied、EPERM、read-only 或 sandbox denied 的原文。
最小命令、脱敏真实路径、是否符号链接或受保护目录。
Codex 与 OS 版本,Local / WSL / SSH / 容器 / IDE host。
sandbox mode、approval policy、workspace roots 与 network_access。
同用户终端是否成功,属主、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、符号链接绕过或共享凭证。