19-审批策略详解

19 — 审批策略详解

系列导读| 本文是 Codex 安全与权限系列的第五篇(共四篇),深入解析 Codex CLI 的四种审批策略模式,以及如何在不同场景下平衡安全性与生产效率。


一、为什么需要审批策略?

沙盒模式解决了 “Agent 能做什么” 的问题(文件系统、网络、进程等系统级权限),而审批策略解决的是“Agent 做什么需要你同意”的问题(操作级权限)。

简而言之:

  • 沙盒→ 系统级的强制边界
  • 审批→ 用户级的授权决策

两者组合使用,构成 Codex 安全模型的完整纵深防御体系。审批策略决定了当 Agent 想要执行某个操作时,是否需要弹窗等待你的确认。


二、四种审批策略

Codex CLI 定义了四种审批策略,从最严格到最宽松依次排列:

1. untrusted(不信任模式)

特性
安全等级⭐⭐⭐⭐⭐(最高)
读取操作需确认
写入操作需确认
命令执行需确认
网络请求需确认

行为描述:每一次操作都需要用户显式确认。Agent 无法自主执行任何操作,即便是读取一个文件的权限也必须先获得批准。

适用场景

  • 首次使用 Codex CLI 时建立信任
  • 执行来自不可信来源的 Prompt(如从网络粘贴的代码任务)
  • 对系统安全有极端要求的敏感环境
  • 演示和教学场景(让学生理解 Agent 每一步在做什么)

配置方式

{"approval_policy":"untrusted"}
codex run --approval-policy untrusted

用户体验:每次 Agent 需要操作时,终端都会弹出审批对话框:

┌──────────────────────────────────────────┐ │ 🔒 Codex 需要您的确认 │ │ │ │ 操作: 写入文件 │ │ 路径: /home/user/projects/app/main.py │ │ 内容: 新增 42 行, 删除 3 行 │ │ │ │ 差异预览: │ │ + def hello(): │ │ + print("Hello, Codex!") │ │ │ │ [Y] 允许本次 [A] 总是允许当前类型 │ │ [N] 拒绝 [D] 查看差异 │ └──────────────────────────────────────────┘

2. on-failure(失败时确认模式)

</
特性
安全等级⭐⭐⭐⭐
读取操作✅ 自动执行