权限、沙箱与安全
Codex approval_policy、sandbox_mode、网络访问、自动审批审查、Rules、危险模式和 Passion8 场景下的安全边界。
Codex 的安全边界由两层组成:沙箱决定命令和文件系统能做什么,审批策略决定什么时候必须停下来问你。
AGENTS.md 是工作建议,不是安全边界。真正限制命令、文件、网络和高风险动作的是 sandbox、approval、rules、hooks、MCP 工具权限和系统/企业策略。
#核心概念
| 层 | 控制什么 | 常用字段 |
|---|---|---|
| Sandbox | 技术边界:读写路径、命令、网络 | sandbox_mode、sandbox_workspace_write |
| Approval | 什么时候暂停并请求确认 | approval_policy |
| Reviewer | 谁审批准入请求 | approvals_reviewer |
| Rules | 哪些命令可在 sandbox 外放行/提示/禁止 | .codex/rules/*.rules |
| Hooks | 生命周期检查、通知、阻断 | .codex/hooks.json 或 [hooks] |
#常用模式
| 组合 | 适合场景 | 风险 |
|---|---|---|
read-only + on-request | 陌生项目、审查、规划 | 需要手动批准改动 |
workspace-write + on-request | 日常开发默认 | 工作区内可自动读写 |
workspace-write + never | 受控自动化 | 失败时不会问你,要有日志和 git 兜底 |
danger-full-access + never | 外部隔离容器或一次性 VM | 本机边界基本放开 |
启动示例:
codex --sandbox read-only --ask-for-approval on-request
codex --sandbox workspace-write --ask-for-approval on-request配置示例:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
approvals_reviewer = "user"#Sandbox 模式
| 模式 | 行为 |
|---|---|
read-only | 可检查文件;写文件和命令需要审批 |
workspace-write | 可在工作区内读写并运行常规命令;出界、联网等需要审批 |
danger-full-access | 不做沙箱限制;只在外部环境已经隔离时使用 |
在 workspace-write 下,部分路径仍会被保护,例如 .git/、.codex/ 和 .agents/。这能降低代理误改版本库元数据、配置和能力文件的风险。
#Approval 策略
| 策略 | 行为 |
|---|---|
untrusted | 非可信命令需要询问 |
on-request | 在沙箱内自动执行,越界时询问 |
never | 不弹出审批,在现有权限内尽力完成 |
approval_policy = "never" 不等于无限权限。它只是不问你;如果 sandbox 不允许某个动作,动作仍可能失败。
#网络访问
本地 workspace-write 默认不开命令网络访问。需要显式打开:
[sandbox_workspace_write]
network_access = true如果需要限制访问域名,再启用 network proxy:
[features.network_proxy]
enabled = true
domains = { "api.openai.com" = "allow", "example.com" = "deny" }
[sandbox_workspace_write]
network_access = true网络规则是 allowlist-first。deny 优先于 allow。* 代表非常宽的网络访问,生产环境尽量不用。
Web search 是另一层设置:
web_search = "cached"
# web_search = "live"
# web_search = "disabled"Live search 和联网命令都会增加 prompt injection 风险。网页、issue、README、日志里的指令都应视为不可信输入。
#自动审批审查
Codex 支持把符合条件的审批请求交给 automatic review:
approval_policy = "on-request"
approvals_reviewer = "auto_review"它只审查本来就需要审批的动作,例如 sandbox escalation、被阻止的网络请求、side-effecting MCP/app tool。已经在 sandbox 内允许的动作不会额外走 review。
自动审查会增加模型调用和用量。团队场景下应结合 managed configuration 限制可用 reviewer。
#Rules
Rules 用来控制命令在 sandbox 外的放行、提示或禁止。它适合处理“只允许这几个命令越界”的场景。
prefix_rule(
pattern = ["gh", "pr", "view"],
decision = "prompt",
justification = "Viewing PRs is allowed with approval",
match = ["gh pr view 123"],
not_match = ["gh pr --repo org/repo view 123"],
)测试:
codex execpolicy check --pretty \
--rules ~/.codex/rules/default.rules \
-- gh pr view 123 --json title,bodyRules 对 shell wrapper 会尽量拆分简单命令链。复杂 shell 特性无法安全拆分时,会保守地按整个 shell 调用处理。
#危险模式检查表
开启 full access 或 --dangerously-bypass-approvals-and-sandbox 前先确认:
| 检查 | 标准 |
|---|---|
| Git | 当前目录有干净可恢复的 git 状态 |
| 密钥 | .env、生产凭据、SSH key 不在可误读范围 |
| 网络 | 不会访问未知网页或运行来自 issue 的脚本 |
| 目录 | 只在一次性 worktree、容器、VM 或可信项目 |
| 回滚 | 有明确的 diff review 和 revert 方式 |
#Passion8 场景
使用 Passion8 时,模型请求走 https://passion8.cc/v1,但本机文件、命令、网络和 MCP 权限仍由 Codex 本地安全模型控制。不要把“Provider 换成 Passion8”理解成“本机风险降低”。
建议默认:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
web_search = "cached"
[sandbox_workspace_write]
network_access = false需要联网安装依赖时,临时开权限并让 Codex解释原因;完成后恢复默认。
#官方参考
Support / 支持
Need help? / 需要帮助?
接入、计费与模型异常可邮件联系;服务可用性以状态页为准。
For setup, billing, or model issues, email us. Check the status page for uptime.
也可使用右下角微信 / QQ 客服 · WeChat / QQ support is available at the bottom right

