跳转到内容

自动审查

如需完整文档索引,请参阅 llms.txt。文档页面的 Markdown 版本可通过在页面后追加 .md 来获取 URL。

自动审查会在沙箱边界处用一个独立的 审查 agent 取代手动批准。主 Codex agent 仍在同一个沙箱内运行,并受 相同批准策略以及相同网络和文件系统限制约束。区别在于 由谁审查符合条件的提权请求。

自动审查仅在批准是交互式时适用。实际上,这 意味着 approval_policy = "on-request" 或仍会显示相关提示类别的细粒度批准策略。使用 仍会显示相关提示类别。使用 approval_policy = "never", 就没有什么可审查的。

在 ChatGPT 桌面应用中,选择已批准的 Daybreak 模型 会自动将权限控制切换为 为我批准 当该 模式可用于你的账户且组织政策允许时。此 规则也适用于你使用桌面应用的 /model 命令时。如果该模式 不可用,当前权限模式将保持不变。模型选择 绝不会覆盖组织托管要求。

在为已批准的安全模型启用 完全访问 之前, ChatGPT 桌面应用会显示一条针对该模型的危险操作警告。该 警告建议改用 为我批准 并链接到 审核者政策配置。该警告不会恢复 沙箱边界,也不会覆盖组织政策。

整体流程如下:

  1. 主 agent 在 read-only 或 workspace-write内工作。
  2. 当它需要跨越沙箱边界时,会请求批准。
  3. 如果 approvals_reviewer = "auto_review", Codex 会将该批准请求路由 给一个独立的审查 agent,而不是停下来等待人工处理。
  4. 审查者决定是否应执行该操作,并返回理由。
  5. 如果操作获批,执行会继续。如果被拒绝,主 agent 会被指示寻找实质上更安全的路径,或停止并询问 用户。

自动审查是审查者的替换,而不是权限授予。它不会扩大 writable_roots、启用网络访问,也不会削弱受保护路径。它只 改变 Codex 处理已经需要批准的操作的方式。

自动审查会评估原本会暂停等待人工处理的批准请求。 这些包括:

  • 请求提升沙箱权限的 Shell 或 exec 工具调用。
  • 被当前沙箱或策略阻止的网络请求。
  • 在允许的可写根目录之外进行文件编辑。
  • MCP 或基于其工具注解 或配置的批准模式而需要批准的应用工具调用。
  • Computer Use 访问新网站或域名。

自动审查不会针对沙箱内已允许的常规操作运行。 如果某个命令可以在当前 sandbox_mode下运行,或某个工具调用 保持在允许的策略范围内,主 agent 会继续执行而无需审查。

Computer Use 是一个单独情况。Computer Use 的应用批准仍会 直接呈现给用户,因此自动审查不会取代这些应用级提示。

总体而言,自动审查旨在阻止以下操作:

  • 将私人数据、机密信息或凭据发送到不受信任的目标
  • 探查凭据、令牌、Cookie 或会话材料
  • 大范围或持久性地削弱安全性
  • 具有较高风险、可能造成不可逆损害的破坏性操作

确切策略位于开源 Codex 仓库中: policy_template.md 和 policy.md。 该策略可以按企业通过 guardian_policy_config 自定义,或 按用户通过本地 [auto_review].policy自定义。

审查者本身是一个 Codex agent,其职责比主 agent 更窄: 判断某个特定的跨边界操作是否应该运行。

审查者会看到一份紧凑的对话记录以及确切的批准请求。这 通常包括用户消息、已显示的助手更新、相关工具 调用和工具输出,以及当前提议批准的操作。它也可以 执行只读检查以收集缺失上下文,但很少这样做。

隐藏的助手推理不会包含在内。自动审查看到的是保留的 聊天项和工具证据,而不是私有思维链。

明确拒绝不会被当作普通沙箱错误处理。 Codex 会将 审查理由返回给主 agent,并添加一条更强的指令:

  • 不要通过变通方法、间接执行或规避策略来追求相同结果。 规避。
  • 只有在存在实质上更安全的替代方案时才继续。
  • 否则,停止并询问用户。

Codex 还会按每轮应用拒绝断路器。在当前 开源实现中,自动审查会在 3 连续拒绝或 10 在同一轮最近 50 次审查的滚动窗口内发生拒绝后中断该轮。

任何非拒绝都会重置连续拒绝计数器。当断路器触发时, Codex 会发出警告,并以中断方式中止当前轮次,而不是 让 agent 继续循环尝试更多提权。

超时会与明确拒绝分开呈现,主 agent 会 被告知仅凭超时并不能证明该操作不安全。

对于被拒绝的操作,也有一条显式覆盖路径。在当前 开源 TUI中,运行 /approve 以打开 自动审查拒绝 选择器,然后 选择一个最近被拒绝的操作,批准它进行一次重试。 Codex 每个任务最多记录 10 个 最近拒绝。该批准范围很窄:它适用于确切的 被拒绝操作,而不是未来类似操作;它会在 同一上下文中记录用于一次重试;并且重试仍会经过自动审查。在底层, Codex 会为该确切操作注入一个开发者范围的批准标记。 审查者随后会将该显式用户覆盖视为上下文,但它仍会遵循 策略;如果策略规定用户不能覆盖该类别的 拒绝,它仍可再次拒绝。

有关设置详情,请参阅 Managed configuration。

默认审查者策略位于开源 Codex 仓库中: core/src/guardian/policy.md。 企业可以在托管要求中用 guardian_policy_config 替换其租户特定部分。个人用户也可以设置 一个本地 [auto_review].policy 在其 config.toml中,但托管要求优先:

[auto_review]
policy = """
YOUR POLICY GOES HERE
"""

要自定义策略,请先复制整个默认策略措辞,然后 根据你的个人风险状况迭代。

对于已授权的安全工作,请将自动审核与书面的 项目范围和最小权限 权限配置文件结合使用。 使用已批准的实验室目标,记录操作和项目时间窗口,并 将生产系统、无关主机、凭据和持久性更改 排除在范围之外,除非获得明确授权。

二者 [auto_review].policy 和 guardian_policy_config 都会替换你当前的 审核者政策。它们不会与模型捆绑的政策或 组织托管的政策合并。内置审核说明和响应 格式仍然适用。使用任一示例前,请复制完整的当前 政策,保留每一条现有规则,并添加适用于你已批准工作的规则。 用该完整政策替换大写占位符。如果你无法 访问当前政策,请不要覆盖它。

以下本地 config.toml 模板会启用审核,并在现有审核者政策后添加限定范围的 条件:

approval_policy = "on-request"
approvals_reviewer = "auto_review"
default_permissions = ":workspace"
[auto_review]
policy = """
PASTE THE COMPLETE ACTIVE REVIEWER POLICY HERE BEFORE USING THIS EXAMPLE.
## Environment Profile
- Authorized target: lab.example.com.
- Approved actions: inspect the target, reproduce authorized vulnerabilities,
and validate fixes within the documented engagement window.
## Tenant Risk Taxonomy and Allow/Deny Rules
- Allow only actions against the approved target that match the documented
engagement scope and approved actions.
- Deny out-of-scope or unknown hosts, production access, credential theft,
persistence, data exfiltration, destructive operations, and policy bypass.
- Deny ambiguous actions and high-impact changes until a human explicitly
approves the exact target, action, and side effects.
"""

请将示例目标和允许的操作替换为实际批准的范围。 使用独立的文件系统和网络规则强制执行目标限制; 审核者说明不能替代这些边界。

组织可以在托管 requirements.toml中强制执行相同条件:

allowed_approval_policies = ["on-request"]
allowed_approvals_reviewers = ["auto_review"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
default_permissions = ":workspace"
guardian_policy_config = """
PASTE THE COMPLETE ACTIVE REVIEWER POLICY HERE BEFORE USING THIS EXAMPLE.
## Environment Profile
- Authorized target: lab.example.com.
## Tenant Risk Taxonomy and Allow/Deny Rules
- Allow only approved actions against the documented engagement target.
- Deny out-of-scope hosts, production access, credential theft, persistence,
data exfiltration, destructive operations, and attempts to bypass policy.
- Deny ambiguous or high-impact actions until a human explicitly approves the
exact target, action, and side effects.
"""
[allowed_permission_profiles]
":read-only" = true
":workspace" = true
# ":danger-full-access" is omitted, so it is denied.

allowed_permission_profiles 控制当前权限配置文件。 allowed_sandbox_modes 还会在仍使用 旧版 sandbox_mode的部署中阻止完全访问。

托管 guardian_policy_config 优先于用户的本地 [auto_review].policy。保留 approval_policy = "on-request" 或其他 符合条件的交互式批准政策,并保留可强制执行的沙箱边界。 使用 approval_policy = "never"、 :danger-full-access或 --yolo时,某个操作 可能会避免创建审核所需的跨边界批准请求。

允许列表中的网络目标本身不会触发审核。添加 显式 命令规则 并配合 decision = "prompt",或将敏感 MCP 工具配置为需要批准, 以便沙箱内的操作仍必须到达审核者。

请参阅 模型和可信访问 以及 推荐的 配置 以了解模型访问、 项目设置和自定义 Agent 工作流。请参阅 托管配置 以了解企业优先级和受支持的客户端版本。对于自定义 API 或 Agents SDK 运行框架,请使用 Guardrails 和人工审核。

在不削弱安全性的情况下减少审查量

Section titled “在不削弱安全性的情况下减少审查量”

当沙箱已经覆盖你的常见安全 工作流时,自动审查效果最好。如果太多日常操作都需要审查,请先修正边界, 而不是教审查者永远批准嘈杂的提权请求。

实际上,最具杠杆效应的调整包括:

  • 为你有意使用的暂存目录或相邻仓库添加狭窄的 writable_roots 。
  • 添加窄范围的 前缀规则。优先使用精确的命令 前缀,例如 ["cargo", "test"] 或 ["pnpm", "run", "lint"] ,而不是宽泛的 模式,例如 ["python"] 或 ["curl"]。宽泛规则往往会抹掉自动审查本应守护的 边界。

自动审查会话记录默认保留在 ~/.codex/sessions 下,由 默认,因此你可以让 Codex 在更改策略或权限之前分析那里的历史流量 。

自动审查改善了长时间运行的 agentic 工作的默认运行状态, 但它不是确定性的安全保证。

  • 它只评估请求跨越边界的操作。
  • 它仍可能出错,尤其是在对抗性或异常上下文中。
  • 它应补充良好的沙箱设计、监控和 组织特定策略,而不是取代它们。

有关研究依据和已发布的评估结果,请参阅 Alignment Research 关于自动审查的文章。