Skip to content

ExecPolicy 定义了代理在不同操作模式下的命令执行策略,通过规则匹配决定每个命令的权限等级。

为什么需要 ExecPolicy

AI 代理生成的命令可能包含高风险操作(如删除文件、安装包、访问网络)。ExecPolicy 在命令执行前进行策略评估,将命令分类为允许(自动执行)、需审批(等待用户确认)或禁止(直接拒绝),在自动化和安全之间取得平衡。

核心原理

  1. 规则匹配Policy::check() 遍历 rules_by_program 中的前缀规则,匹配命令字符串
  2. 三级决策Decision 枚举 — Allow(自动执行)、Prompt(请求审批)、Forbidden(直接拒绝)
  3. 规则合并:多个匹配规则取最高权限(Forbidden > Prompt > Allow),Policy::merge_overlay() 支持策略叠加
  4. 网络规则NetworkRule 单独控制网络访问,支持按域名和协议过滤

在源码中的实现

  • codex-rs/execpolicy/src/policy.rsPolicyRuleEvaluationDecisionNetworkRule 完整定义
  • codex-rs/core/src/lib.rsload_exec_policy()check_execpolicy_for_warnings() 公共接口
  • codex-rs/core/src/session/mod.rs — Session 在执行命令前调用 Policy::check() 进行权限评估
  • codex-rs/sandboxing/src/policy_transforms.rs — ExecPolicy 到沙箱策略的转换

相关概念