Codex 沙箱机制:让文件写入、命令和网络访问保持可控
了解 Codex 沙箱的基本作用,学习如何判断任务需要哪些文件、命令和网络权限,避免把安全边界开得过大。
适用场景
这篇手册适合遇到 Codex 权限提示、命令受限或文件写入失败的用户。理解沙箱后,你可以更准确地判断哪些限制应该保留,哪些操作可以临时批准。
OpenAI 官方 Sandbox 文档介绍了 Codex 沙箱相关概念。不同运行环境的具体限制可能不同,实际行为以当前客户端、CLI 或云端环境为准。
步骤 1:理解沙箱保护什么
沙箱的目标是限制 Codex 的副作用。
它通常会约束:
- 可读取的文件范围。
- 可写入的目录。
- 命令执行能力。
- 网络访问。
- 外部应用或系统资源。
这能避免 Codex 在不相关目录里写文件、访问敏感数据,或运行超出任务需要的命令。
步骤 2:按任务声明需要的范围
如果你知道任务范围,直接写清楚。
示例:
你只需要读取 src/app/manual、src/components 和 content/manual。
只允许修改 content/manual 和 manual-sidebar.tsx。
如果需要构建:
修改完成后可以运行 next build。
如果构建需要联网安装依赖,请先停止并说明原因。
这样 Codex 不需要猜测权限边界。
步骤 3:遇到沙箱错误先判断必要性
沙箱错误不一定代表需要放权。
先问三件事:
- 这个命令是否必要?
- 它为什么要访问受限路径或网络?
- 有没有更小范围的替代方式?
例如,只是检查文章 frontmatter,不需要联网;只是读取当前项目,不需要访问用户主目录。
步骤 4:临时授权要尽量窄
如果确实需要放权,授权范围越小越好。
建议:
- 只授权当前命令。
- 只授权当前目录。
- 只授权必要域名。
- 避免给删除、移动、上传类操作宽权限。
高风险操作前,让 Codex 先解释它要做什么。
步骤 5:把常见沙箱策略写进项目规则
项目可以在 AGENTS.md 里写常见边界。
示例:
## 沙箱与命令
- 修改内容后运行 lint 和 build。
- 不要访问项目外目录。
- 不要联网下载非官方资源。
- 删除文件前必须等待确认。
这能让 Codex 更稳定地选择命令。
常见错误
不要把沙箱错误当成必须绕过的障碍。很多时候是任务范围不清。
不要为了跑一个命令开放整个文件系统。
不要让 Codex 在没有说明用途时访问网络。
不要把敏感文件加入可写范围。
小结
沙箱让 Codex 的文件、命令和网络访问保持可控。正确做法是先写清任务范围,遇到限制时判断必要性,再用最小授权解决真正需要的操作。
相关教程
常见问题
沙箱是不是会降低 Codex 能力?
沙箱会限制 Codex 的访问范围,但这是为了让任务更可控。真正需要更高权限时,可以按任务申请,而不是默认全部开放。
沙箱报错时应该怎么处理?
先判断命令是否真的需要越过当前边界,再决定是否授权。不要为了消除报错直接关闭所有限制。