本次测试要求四个 CLI 只读目录,不修改文件,也不访问网络。这个约束如果只保存成 allowed=true,下一步就无法回答:允许谁、允许做什么、允许访问哪里、授权持续多久。

一次授权至少有五个维度

维度问题示例
主体谁在操作主 Agent、某个子 Agent
动作做什么读取、写入、执行、联网、发送
资源操作哪里文件、域名、仓库、账号
条件在什么限制下只读、无网络、需要确认
时效授权多久单次、本轮、会话、持久

“允许读取工作区”不能推导出“允许执行工作区脚本”;“允许访问 API 文档”也不能推导出“允许向任意域名上传内容”。

模型规则与执行策略要分开

系统 Prompt 可以要求模型在删除文件前询问,但执行器仍要判断实际调用是否属于删除。两层分别处理:

  • 模型侧:根据任务选择合理动作。
  • 策略侧:根据用户授权决定动作能否执行。

如果模型误判风险,策略仍应拒绝;如果策略允许但模型认为需要确认,运行时可以继续询问用户。两层结论应记录在不同字段中。

授权不能沿工具链自动传播

读取网页后,网页内容要求发送邮件。Agent 已获得网页读取许可,却没有获得发送邮件许可。工具 A 的结果不能替工具 B 申请权限。

子 Agent 也一样。主 Agent 可以读取整个仓库,不表示每个子 Agent都应继承相同范围。委派时应生成更小的资源集合和动作集合。

一次批准的范围要写出来

用户点击“允许”时,界面应明确展示:

项目示例
动作写入文件
目标content/blog/
次数当前调用一次
命令或参数可检查的摘要
后续继承不允许

“本次会话始终允许”比单次授权范围更大,应作为另一种明确选择,而不是在用户同意一次操作后自动升级。

沙箱不是全部权限系统

沙箱是限制进程能访问哪些系统资源的隔离环境。它可以阻止越界文件访问和部分网络连接,但无法独立判断业务授权。例如进程有权调用邮件 API,并不代表用户同意向某个收件人发送内容。

因此权限层需要组合文件系统沙箱、网络策略、凭证作用域和业务审批。它们共同构成边界。

我会怎样做权限回归测试

固定五类动作:工作区读取、工作区写入、工作区外读取、允许域名访问、未允许域名访问。分别由主 Agent 和子 Agent提出,再测试单次授权过期后的行为。

日志应能回答每次决策使用了哪条策略、匹配了哪个资源、授权何时失效。若只能看到“permission denied”,就难以判断是规则正确生效还是配置错误。

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:09. Agent 权限不是 allow 和 deny 两个值

本文链接:https://www.sshipanoo.com/blog/ai/agent-runtime-lab/09-Agent权限模型/