06 · 安全与沙箱
05-计划模式与项目开发 | 下一篇 → 07-API-SDK-CICD集成
为什么要沙箱
智能体会自己跑命令、改文件。没有约束的话,一条 rm -rf 或一次误操作就能毁掉环境。Codex 用沙箱 + 审批策略两道闸门来保证「放手但不失控」。
沙箱技术
| 平台 | 沙箱实现 | 作用 |
|---|---|---|
| Linux | Bubblewrap (bwrap) | 隔离文件系统/进程,限制可访问范围 |
| macOS | Seatbelt (sandbox-exec) | 系统级沙箱,限制文件/网络 |
- 沙箱把 Codex 的执行关在一个受控环境里:默认只能动项目目录,碰不到系统其他地方。
- 网络访问默认受限,可按需配置(防止它随便联网拉东西)。
审批策略(Approval Policy)
控制「它执行动作前要不要问你」:
| 策略 | 行为 | 适合 |
|---|---|---|
| Untrusted(最严) | 几乎每个动作都要你批准 | 陌生代码、敏感环境 |
| Request / On-Request | 危险动作才问(写文件外、联网) | 日常默认,平衡 |
| Never / Full-Auto(最松) | 不打断,全自动 | 受控沙箱/CI 里跑可控任务 |
经验:本地探索用 Request;CI/沙箱里跑可控任务用 Full-Auto;碰不熟的仓库用 Untrusted。
配置项(概念)
- 选择沙箱模式 / 审批级别
- 是否允许写项目目录外
- 是否允许网络访问
- 把规则写进配置文件,团队统一
排错
- 「命令被拒绝/卡在审批」→ 检查当前审批策略是不是太严。
- 「它装不上依赖」→ 可能网络被沙箱挡了,按需放开网络。
- 「想全自动但总被打断」→ 切 Full-Auto,但务必在沙箱/可回滚环境里。
与 Claude Code 的对照
| Claude Code | Codex | |
|---|---|---|
| 护栏机制 | 权限提示 + Hooks | 沙箱 + 审批策略 |
| 哲学 | 可编程拦截(Hook 脚本) | 系统级隔离 + 审批分级 |
本节实操
- 看当前用的是哪种审批策略,试着切换观察差别
- 在一个测试目录里开 Full-Auto 跑一个任务,体会「放手」
- 故意让它跑一个写目录外的命令,看沙箱怎么拦
下一篇 → 07-API-SDK-CICD集成