权限也是 Context 的一部分
Agent 能看到什么,本身就是权限问题。Context 管理不能只考虑相关性,也必须考虑可见性、来源边界和派生数据权限。
agent 的权限不只是“能不能执行某个工具”。
能看到什么,本身也是权限。
如果一个 agent 没有权限阅读某份文档,那这份文档不应该进入它的 context。如果一个用户没有权限访问某个项目资料,系统也不应该先把资料检索回来,再靠 prompt 要求模型“不要泄露”。
这件事需要在 context 管理里明确处理。
很多人谈 agent 安全时,会先想到删除文件、执行命令、发邮件、转账这些动作权限。这些当然重要。但在 agent 系统里,读取权限同样重要,因为模型会基于它看到的材料生成回答、计划和工具调用。
只要信息进入了 context,它就已经影响了模型。
所以权限过滤应该尽量发生在检索、读取、组装之前,而不是发生在模型之后。
公司知识库是一个典型例子。
如果知识库有 ACL,检索时就应该带上用户或 agent 身份。不能先全库召回,再把结果扔给模型,然后要求模型自己判断哪些内容不该用。
因为模型不是权限边界。
同样,summary、embedding、cache、memory 这些派生数据也要考虑权限继承。一份敏感文档不能因为被总结成摘要,就突然变成所有人可见。一个由敏感资料生成的 memory,也不能脱离来源权限随便注入别的任务。
权限还和 subagent 有关。
父 agent 有权限,不代表 subagent 应该继承全部权限。一个只负责检查 CSS 的 subagent,不应该自动获得部署权限。一个只负责读公开文档的 subagent,也不应该拿到内部客户资料。
更稳的做法是按任务下发最小权限:
- 能读哪些来源
- 能写哪些位置
- 能调用哪些工具
- 哪些动作必须审批
- 权限什么时候过期
- 结果能不能带回主 context
这里还有一个容易忽略的点:need-to-know。
agent 有权限看,不代表当前轮应该看。一个员工有权限访问公司资料库,不代表每次写邮件都要把整个资料库塞进 context。相关性和权限是两道门:没有权限一定不能进,有权限也要看当前任务是否需要。
所以 context 管理至少要同时回答两个问题:
这条信息和当前任务相关吗?
当前身份、当前任务、当前阶段允许它进入这一轮吗?
把权限看成 context 的一部分后,agent 安全就不再只是“工具调用前要不要确认”。它还包括模型输入层的治理:哪些材料可见,哪些来源可信,哪些派生信息继承原权限,哪些内容只能在隔离环境里使用。
如果 context 是模型这一轮的工作台,那么权限就是决定哪些材料可以被摆上工作台的边界。