给 Agent 装 Skill,5 分钟先看这 5 个权限面
一份公开披露提醒我们,Skill 的风险不只藏在脚本里。给 Agent 接扩展前,把来源、数据、呈现、浏览器和自动化一起验收,才能知道权限到底走到了哪里。
给 Agent 装一个 Skill,很多团队的第一反应都很合理,过一遍 SKILL.md,扫一下脚本,再确认它没偷偷连陌生域名。
然后把开关拨到允许。
这一步不算错,只是还差半张图。
今天 PromptArmor 公布了一份关于 Databricks Genie Code 的公开风险报告。报告描述的场景很扎心,风险未必发生在 Agent 执行脚本的那一刻,而可能发生在它把分析结果交给浏览器显示的那一刻。本文不复述报告里的复现过程,只聊一个更值得带走的工程问题,给 Agent 装上 Skill 后,权限不再只是一张工具调用表。
它会从 Skill 的来源,经过模型、工具和数据,再走到结果页面、浏览器和自动任务。
中间多一段,审计就多一段容易断。
Databricks 自己的 Skill 文档 写得很清楚,Skill 可以带说明、可复用代码和可执行脚本。它还分工作区 Skill 与用户 Skill。前者适合把团队规范固化下来,后者适合个人偏好和原型。
这个设计很方便。方便到一不小心,你会把原型阶段的信任模型带进生产。
PromptArmor 的 公开报告 指向的也是这个缝。报告的具体结论还需要由平台方和独立研究者继续确认,不过它提醒了一件没有争议的事,结果页面、浏览器请求和自动执行都该算在 Agent 的权限账上。只审脚本,等于只审了账本的一页。
我更愿意把上线前的检查拆成五个面。
第一个是来源面。
这份 Skill 从哪里来,谁维护,谁能改,更新后谁知道。用户目录里的 Skill 和工作区治理目录里的 Skill,看起来都叫 Skill,审批含义却完全不同。原型可以放在个人空间里试,碰到真实业务数据前,应该有一个明确动作把它迁到受版本控制、有人负责、能回滚的团队目录。别让一次下载变成一条默认长期生效的供应链。
第二个是数据面。
不要只问它需要读哪张表,还要问它会把哪些字段拼进提示词、日志、工具参数和结果内容。对 Agent 而言,读取权限只是起点。只要数据能进入下一跳,下一跳就该有自己的最小化规则。敏感列尽量在工具层脱敏,凭证不要暴露给模型上下文,结果只返回完成任务必需的那一小块。
很多朋友会把这理解成多写几条提示词。不是哥们,提示词可以提醒模型,不能替权限系统背锅。
第三个是呈现面。
Agent 输出的不只有纯文本。它可能生成表格、链接、图片预览、嵌入式组件和交互页面。每一种显示方式都是一个新的信任边界。这里要问得很具体,结果中是否允许外链资源,是否允许执行脚本,是否允许跳转,页面是否会把用户刚刚看到的数据交给别的上下文。
这部分经常没人写进评审表,因为它既不像数据库权限,也不像代码执行权限。可用户真正看到、点击、复制和授权的,就是这一层。好家伙,Agent 已经替你干活了,结果交付页却还在按普通富文本页面对待,这就有点悬。
第四个是浏览器与网络面。
工程里常见一句话,运行容器没有外网就安全了。听着挺踏实,问题是 Agent 的工作流可能不只跑在容器里。浏览器、桌面客户端、回调地址、预览服务都可能各有一条出站路径。安全策略要按数据的完整旅程画,而不是按某一个进程画。
拿不准时,用一个很笨但管用的办法。把一条敏感数据从被读取开始,画到最终显示、下载、跳转和日志落盘为止。每经过一次格式转换、跨进一个新进程、被一个新页面接住,都标出它还能去哪里。你会发现原来那句「已经禁网」常常只覆盖了其中一个格子。

同一份数据跨过来源、读取、呈现、浏览器和自动任务,边界也要随之重画。
第五个是自动化面。
Databricks 的 Genie Code task 文档 明确说明,任务会自动批准工具调用,同时也提醒自动批准是生产力功能,不是安全边界。这个表述很诚实。模型分类器能帮忙挡掉一部分跑偏动作,却不该成为团队把高权限和不可信扩展绑在一起的理由。
自动任务尤其要收紧三件事。它访问什么数据,它能把结果交给哪些系统,它异常时怎么停。给每个自动任务独立身份和最小权限,给输出目的地做白名单,给异常请求留可追踪的审计记录,再给管理员一个能马上撤销的开关。厉害了,这些听上去都不新,但把它们同时做齐的团队真不多。

运行环境的出口策略,不会自动覆盖浏览器、预览页和自动任务。
如果今天就要接一个新的 Skill,可以用下面这张小验收单过一遍。
- 来源是否受团队管理,有没有版本、负责人和回滚点。
- 它能读到什么,数据离开工具前是否已经最小化。
- 结果会以哪些形式呈现,页面、链接和嵌入内容能不能触发额外请求。
- 同一份数据还会经过哪些客户端、代理和回调服务,出口策略是否覆盖全程。
- 自动运行时谁能叫停,出了事能不能还原它调用过什么、读过什么、交给过谁。
这五项里只要有一项回答不清,就别急着给它更大的权限。把任务降到测试数据,关掉自动批准,或者先把输出限制在一个没有外部动作的环境里。慢一点不丢人,出了事再写复盘才是真的费时间。
Skill 生态会越来越大,这几乎是确定的。大家都想把重复工作装进一个文件夹,然后让 Agent 自己识别、自己调用、自己收尾。棒棒的,生产力确实上来了。
但能力是会流动的。它从文件流到模型,从模型流到工具,从工具流到页面,再从页面流到人的操作。安全设计若只盯着其中一个节点,其他节点迟早会变成暗礁。
下次有人说这个 Skill 已经扫过代码了,不妨再补一句,它的结果会去哪儿?