Codex 权限设置

Codex 能在本地执行 Shell、读写文件、联网、甚至操控你的电脑,因此权限是产品核心,而非可选装饰。本章讲清楚桌面应用的三个权限预设,以及它们背后的沙箱 + 审批两个维度。命令级的精细控制见 规则与钩子


两个独立维度

维度配置键 / CLI回答的问题
沙箱(Sandbox)sandbox_mode, -s技术上允许读写/联网的范围
审批(Approval)approval_policy, -a越界时是否必须停下来问人

二者组合使用。例如「工作区内自动执行 + 越界暂停询问」:

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

桌面应用的三个权限预设

输入框下方的权限选择器把上面两个维度打包成易懂的预设:

预设大致等价于含义
Read-only(只读)read-only + 询问只读:规划、审查、问答,不改文件、不联网
Default / Auto(默认)workspace-write + on-request工作区内自动改与跑命令,越界(写工作区外/联网/不可信命令)才询问
Full access(完全访问)danger-full-access + never高权限、几乎不打断,风险大,仅在可随时销毁的隔离环境用

日常开发的甜点是 Default / Auto:既能流畅干活,又在危险动作前停下来。


sandbox_mode 取值

行为
read-only只读,适合规划、审查、问答
workspace-write可写当前工作区(及配置的 writable_roots
danger-full-access高权限,仅隔离环境使用
# ~/.codex/config.toml
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
# 可写根目录扩展,见官方 Protected paths 文档
# writable_roots = ["..."]

扩展可写目录优先用 --add-dir,而非直接放开到 danger-full-access


approval_policy 取值

行为
untrusted仅信任的命令自动跑,其余需批准
on-request沙箱内自动,超出边界再询问(推荐
never不弹审批(CI 脚本常用,风险自负)

会话中可临时切换(TUI/IDE 斜杠命令 /approvals/permissions,App 用权限下拉)。


网络访问

  • 本地执行时网络默认关闭或受限(取决于 OS 沙箱实现)
  • 需要 npm install、拉 API 时会触发审批或被规则拦截
  • 可用 规则(Rules)具体命令/域名做 allowlist
  • Cloud 环境的网络策略独立配置

常见组合速查

场景沙箱审批App 预设
日常本地开发workspace-writeon-requestDefault / Auto
只读分析 / 审查read-onlyon-requestRead-only
受信 CI(只读 checkout)workspace-writenever
隔离 VM 内放手跑danger-full-accessneverFull access

⚠️ 关于 --yolo

--dangerously-bypass-approvals-and-sandbox(俗称 --yolo)会同时跳过沙箱与审批

  • 禁止在主开发机默认使用
  • 仅在「可一键销毁的隔离 VM / 容器」里使用

调试沙箱是否拦了某命令

# macOS
codex sandbox macos [--permissions-profile <name>] [--log-denials] -- echo test
# Linux
codex sandbox linux [--permissions-profile <name>] -- echo test
# Windows
codex sandbox windows [--permissions-profile <name>] -- echo test

用于验证某条命令是否会被沙箱拒绝。


企业强制底线

托管设备上,组织可用 requirements.toml 禁止危险组合(如禁止 approval_policy = "never"、禁止 danger-full-access)。详见 安全与企业管理


下一步