Appearance
ExecPolicy 定义了代理在不同操作模式下的命令执行策略,通过规则匹配决定每个命令的权限等级。
为什么需要 ExecPolicy
AI 代理生成的命令可能包含高风险操作(如删除文件、安装包、访问网络)。ExecPolicy 在命令执行前进行策略评估,将命令分类为允许(自动执行)、需审批(等待用户确认)或禁止(直接拒绝),在自动化和安全之间取得平衡。
核心原理
- 规则匹配:
Policy::check()遍历rules_by_program中的前缀规则,匹配命令字符串 - 三级决策:
Decision枚举 —Allow(自动执行)、Prompt(请求审批)、Forbidden(直接拒绝) - 规则合并:多个匹配规则取最高权限(Forbidden > Prompt > Allow),
Policy::merge_overlay()支持策略叠加 - 网络规则:
NetworkRule单独控制网络访问,支持按域名和协议过滤
在源码中的实现
codex-rs/execpolicy/src/policy.rs—Policy、Rule、Evaluation、Decision、NetworkRule完整定义codex-rs/core/src/lib.rs—load_exec_policy()和check_execpolicy_for_warnings()公共接口codex-rs/core/src/session/mod.rs— Session 在执行命令前调用Policy::check()进行权限评估codex-rs/sandboxing/src/policy_transforms.rs— ExecPolicy 到沙箱策略的转换