← 所有文章

代理密钥需要风险预算

Shuriken 的 shuriken-skills 仓库打包了面向 Claude Code、Codex CLI、GitHub Copilot CLI、Gemini CLI、Cursor、OpenCode 以及兼容 AGENTS.md 的代理的说明。1该仓库还会把这些代理引向一个平台。在该平台上,代理密钥可以读取市场数据、检查钱包、请求报价,并在用户授予相应能力后执行交易。2

重点不在交易本身。重点在于这种模式:代理如今需要凭证,才能使用那些会产生真实外部影响的工具。代理密钥不应像普通 API 密钥那样运行。它应当像一份风险预算。

代理密钥是一种有边界的授权对象。它应说明代理能做什么、不能做什么、最多能制造多大风险、操作者如何检查其行为,以及有人能以多快的速度暂停、轮换或撤销它。提示词说明有帮助,但真正划定边界的是服务器端限制。

摘要

MCP 和可移植技能让代理更容易连接外部系统。34这种可移植性也提高了凭证的重要性。Shuriken 的文档描述了危险工具应采用的正确控制形态:创建代理密钥,只授予必要权限,在服务器端强制执行限制,记录活动,并在集成不再需要时撤销密钥。256近期关于最小权限的研究也指向同一方向:技能可能执行超出特定任务最小范围的操作,因此权限必须感知任务,而不是按整个软件包一刀切。9

这条经验并不限于金融领域。任何会转账、发布内容、修改基础设施、向客户发送消息或接触私有数据的代理工具,都需要带有风险预算的限定范围密钥。预算应位于模型之下,也应位于技能文件之下。即使代理非常自信地提出请求,服务器也应拒绝未授权操作。

关键要点

  • 对代理工具构建者:应把凭证设计成能力预算,而不是通用的持有者令牌。
  • 对安全团队:将读取范围与写入或执行范围分开,再在执行侧施加支出、速率和对象限制。
  • 对产品团队:活动日志和撤销控制应放在主 UI 中,而不是埋在设置页深处。
  • 对 MCP 构建者:将工具分发与凭证授权视为不同层面。技能可以传授方法。密钥必须施加约束。
  • 对操作者:先从只读开始,验证集成路径,再在具备响应预案后添加写入访问。

技能分发说明,密钥分发权限

shuriken-skills 仓库展示了一种新的分发模式。一个源代码树中包含技能 Markdown、面向 Claude 和 Codex 的插件清单、Cursor 插件清单、Gemini 扩展文件、OpenCode 插件、Rust crate,以及 AGENTS.md 后备路径。17

这种打包方式很重要,因为代理说明现在会跨客户端流动。供应商可以教 Codex、Claude Code、Cursor、Gemini 以及其他工具如何接入同一个 API。MCP 文档将代理技能描述为可移植的说明集,可为编码助手提供领域知识,包括围绕部署模型、认证流程和工具模式的设计决策。4我在代理技能需要包管理器中讨论过分发侧;安全侧则从这些软件包请求真实权限时开始。

可移植说明解决了一个问题,也制造了另一个问题。它们能帮助代理学习正确的集成路径,却不能保证最终操作安全。技能可以告诉模型使用最小权限。提示词可以说“请谨慎”。README 可以解释推荐的权限范围。但在模型决定发出请求之后,这些控制都无法拦截已认证请求。

这种张力与MCP 服务器正在成为新的攻击面中更广泛的 MCP 问题一致:工具访问扩展操作面的速度,已经超过了旧式审批习惯所能跟上的速度。代理技能让说明路径变得可移植。密钥系统则必须让权限路径保持狭窄。

因此,凭证需要自己的设计。技能文件位于说明层。代理密钥位于授权层。混淆这两个层面会让系统变得脆弱:同一段文本既负责教代理该做什么,又试图阻止代理做得过多。

边界应由服务器承担。

Shuriken 模式是一份风险预算

Shuriken 的 Agent Kit 文档将代理密钥描述为控制 AI 工具能做什么的对象,范围从读取代币价格到执行交易不等;在代理开始行动前,限制会先在服务器端强制执行。5权限页面列出了 6 类权限,并说明超出已授予范围的调用会因授权错误而失败。6

这种表述也避免了公开代理演示中的一个常见错误:把开放代码、可见说明或可读插件清单当作边界。开放性有助于审查,但开源不是安全边界。真正的边界存在于未授权操作会失败的地方。

这种模式包含 5 个部分:

控制 为什么重要
限定范围的权限 只读密钥可以检查。交易密钥可以行动。二者的区别会改变影响半径。
对象限制 钱包访问可以保持狭窄,而不是覆盖所有已连接资产。
支出限制 买入、卖出、每日、每小时、滑点、gas 和并发交易上限,会把权限变成可度量预算。
活动日志 操作者可以检查工具调用、报价、时间戳和状态,而不是只相信最终回答。
撤销 一个密钥可以失效,而不会终止用户的主会话或其他所有集成。

这正是高风险代理工具应有的形态。该设计并不依赖模型变得明智。它假设模型可能出错、过度自信、被输入攻陷,或只是收到了一条糟糕指令。服务器仍然会强制执行密钥限制。

我会复制这种控制模式,而不是复制它的领域。部署密钥、发布密钥、客户消息密钥、Stripe 退款密钥和交易密钥都需要回答同一个问题:在真人察觉之前,这个密钥最多能造成多大损害?

服务器端限制胜过提示词承诺

OpenAI Agents SDK 文档将护栏描述为可围绕代理运行的检查,包括带触发器的输入护栏和输出护栏。8护栏有价值,因为它们能在模型执行前后捕获风险。但它们与凭证权限仍处在不同层级。

输出护栏可以标记一项糟糕的拟议操作。即使护栏漏掉了,服务器端密钥限制仍可拒绝该操作。当操作超越文本本身时,这一区别至关重要。

设想一个工具可以发布文章、发送电子邮件、修改 DNS 记录、合并 pull request 或执行交易。提示词规则可以写着“请先询问”。护栏可以检查高风险文本。服务器端密钥则可以执行真正的限制:

高风险操作 提示词层规则 密钥层边界
发送电子邮件 “未经批准不得发送” 密钥只能起草,不能发送
发布内容 “先检查引用” 密钥只能写入预发布环境,不能写入生产环境
修改基础设施 “避免破坏性操作” 密钥可以读取配置,不能变更资源
执行交易 “保持保守” 密钥限制支出、速率、滑点和钱包访问
向客户发送消息 “使用获批文案” 密钥在正式提升前只能触达测试受众

提示词规则可能悄无声息地失效。密钥层边界会产生可观察的拒绝。这个拒绝就是证据。代理试图超出范围。服务器拒绝了。操作者可以检查失败请求,并决定该集成需要新的密钥、更窄的工作流,还是人工审批步骤。

这也是证据关口背后的同一逻辑:信任应来自可观察证明,而不是自信。最终回答说“我遵守了限制”,不如服务器日志显示哪条限制被触发来得有分量。

它也会把最终回答变成更接近审查包的东西。审查包正在成为新的最终回答认为,严肃的代理工作需要证据工件。凭证拒绝、活动日志和限定范围密钥变更,就是这种工件在安全领域的版本。

代理凭证的最低形态

任何会影响外部世界的代理凭证,都应具备 6 项属性。

属性 最低要求
目的 每个集成或任务使用一个密钥,而不是到处复用同一个密钥
范围 明确授予读取、写入、执行、通知和管理权限
预算 在领域允许时,设置支出、速率、数量、对象、受众和时间限制
可见性 活动日志包含请求类型、目标对象、时间戳、状态和失败原因
生命周期 可轮换、暂停和撤销,且不破坏无关集成
提升路径 从只读开始,只有在本地测试、预发布证明和操作者审查之后才扩大范围

Shuriken 技能也用集成语言表达了同一个核心原则:每个集成创建一个密钥,授予最低权限,妥善保管密钥,疑似泄露后轮换,并撤销已退役集成。7它们的范围界定技能还将读取范围与交易范围分开,并警告不要创建宽泛的“以防万一”密钥。7

研究语汇正在追上产品模式。SkillScope 论文将过度授权描述为受任务条件影响:同一个技能操作对某个用户请求可能有效,对另一个请求却可能过度。9作者报告了 7,039 个具备已验证过度授权行为的技能,并称在其框架约束权限后,触发的过度授权操作实例减少了 88.56%。9您无需复制它的具体机制,也能接受其产品层面的经验:代理凭证应反映当前任务,而不是工具能想象到的最大任务。

这应成为常规的代理产品设计。宽泛的 API 密钥在后端服务拥有狭窄代码路径时是合理的。代理不像一条狭窄代码路径。它们会规划、重试、组合工具、总结失败、调用辅助脚本,并响应外部输入。凭证应假设代理行为比普通服务令牌更具变化性。

这种变化性也解释了为什么代理代码搜索存在 token 预算问题即使在凭证文章中也相关。代理常常在上下文不完整时做决定。窄密钥能在上下文窗口漏掉危险细节时,给系统第二次机会。

不要照搬什么

不要照搬营销式乐观。

Shuriken 的公开文档使用了较强的措辞,描述代理可在用户离开时行动并捕捉机会。2这或许适合他们的产品。但它不应成为会产生外部影响的代理工具的默认安全姿态。

对于高风险操作,“在您离开时”需要更窄的操作含义:

  • 代理可以在用户离开时收集信息;
  • 代理可以在用户离开时准备操作草稿;
  • 代理只能在小而明确、由服务器强制执行的预算内执行;
  • 操作者事后可以检查每一次操作;
  • 操作者可以立即暂停或撤销密钥。

这就是自治与放弃责任之间的区别。用户可以委派行动。系统不能委派问责。

同样的谨慎也适用于技能和插件清单。一个仓库可以支持所有代理客户端,同时仍然应采用保守默认值。我检查的 .codex-plugin/plugin.json 在接口元数据中列出了读取能力,而文档说明交易需要显式启用权限和限制。7这是正确方向:分发可以广泛,权限必须从狭窄开始。

决策规则

当新的代理集成请求凭证时,应先对密钥分类,再发放。

集成类型 起始密钥 提升要求
搜索、读取、总结 只读 除非私有数据范围扩大,否则无需提升
起草内容或代码 只能写入预发布环境 人工审查和发布关口
通知或发送消息 仅限测试受众 投递日志和退订路径
修改生产设置 先只读 变更计划、批准、回滚和审计日志
转移资金或资产 起初不授予执行访问 小额服务器端强制预算、活动审查和撤销演练
管理其他密钥 默认避免 通过独立管理流程并取得人工批准

这张表给了代理一条可用路径,同时不假装边界由模型本身持有。工作流仍可改进。密钥则防止改进滑向无边界权限。代理执行追踪是执行环境契约从审计侧提出了同一点:如果系统无法展示发生了什么,就无法证明代理是在预期契约内行动。

我在代理沙箱安全只是一种建议中也写过同样的拆分:模型可能完全在已授予权限内操作,却仍然产生不安全结果。代理密钥需要风险预算,因为权限不等于安全。

FAQ

代理密钥只是换了名字的 API 密钥吗?

不是。普通 API 密钥通常会授予对某项服务的宽泛访问。代理密钥应为单个集成授予一组受边界约束的能力,并配备服务器端限制、活动日志和撤销能力,且撤销不影响用户主会话。

为什么服务器端强制执行很重要?

服务器能看到最终请求。模型说明、技能文件或护栏可能漏掉糟糕操作。若密钥缺少必要范围,或超出已配置限制,服务器端权限检查可以拒绝请求。6

每个代理都应从只读开始吗?

当工具会产生有意义的外部影响时,是的。先从只读访问开始,验证集成路径。只有当团队清楚日志、限制、审批和回滚步骤已经存在后,才添加写入或执行权限。

MCP 会让代理凭证风险更高吗?

MCP 让外部工具更容易跨客户端连接。3这种便利性提高了凭证设计的重要性。可移植工具访问应配套狭窄密钥,而不是更宽泛的信任。

团队应从 Shuriken 复制什么?

复制说明分发与服务器端权限之间的分离:可移植技能可以传授集成方式,而限定范围的密钥、限制、日志和撤销负责约束行动。除非产品、法律和运营控制足以支撑,否则不要复制特定于交易领域的行为。


参考资料


  1. ShurikenTrade,shuriken-skills GitHub 仓库,以及 2026年5月18日当前会话中的克隆检查。该仓库包含 .claude-plugin/plugin.json、.codex-plugin/plugin.json、.cursor-plugin/plugin.json、gemini-extension.json、.opencode/plugins/shuriken-skills.js、skills/*/SKILL.md、GEMINI.md,以及版本为 0.2.0 的包元数据。 ↩↩

  2. Shuriken,“AI Agent Kit,” Shuriken 文档。当前会话验证发现状态为 200,并发现 Agent Kit、MCP、服务器端强制执行、私钥声明和执行限制相关标记。 ↩↩↩

  3. Model Context Protocol,“What is the Model Context Protocol?” MCP 文档。该来源说明 MCP 是一种开放标准,可将 AI 应用连接到数据源、工具和工作流,包括能够代表用户执行操作的系统。 ↩↩

  4. Model Context Protocol,“Build with Agent Skills,” MCP 文档。该来源说明代理技能是可移植说明集,可编码设计决策、认证流程、工具设计模式和操作面发现。 ↩↩

  5. Shuriken,“Create an Agent Key,” Shuriken 文档。该来源说明代理密钥、只读与交易模板、服务器端限制、一次性密钥复制、活动日志、暂停/撤销控制和交易限制设置。 ↩↩

  6. Shuriken,“Permissions & Safety,” Shuriken 文档。该来源说明 6 类权限、服务器端强制执行、交易限制、推荐设置和安全最佳实践。 ↩↩↩

  7. 2026年5月18日当前会话中,对来自 https://github.com/ShurikenTrade/shuriken-skills.git 的浅克隆中的 skills/agent-keys/SKILL.md、skills/scoping/SKILL.md、.codex-plugin/plugin.json、.claude-plugin/plugin.json 和 package.json 进行检查。该来源说明每个集成一个密钥的指导、最低权限、轮换/撤销顺序、读取与交易权限类别,以及 Codex 插件元数据。 ↩↩↩↩

  8. OpenAI Agents SDK,“Guardrails,” OpenAI 文档。该来源说明输入/输出护栏框架、触发器,以及围绕代理执行运行的护栏。 ↩

  9. Jiangrong Wu、Yuhong Nan、Yixi Lin、Huaijin Wang、Yuming Xiao、Shuai Wang 和 Zibin Zheng,“SkillScope: Toward Fine-Grained Least-Privilege Enforcement for Agent Skills,” arXiv,提交于 2026年5月7日。该来源说明代理技能中受任务条件影响的过度授权、7,039 个已验证过度授权技能,以及其评估中触发的过度授权操作实例减少 88.56%。 ↩↩↩

相关文章

MCP工具需要操作级授权

MCP工具需要操作级授权:Bearer令牌验证之后,在代理执行前还必须按工具、角色和操作逐项检查权限能力。

12 分钟阅读

你的Agent中间商你从未审查过

研究人员测试了28个LLM API路由器。17个接触了AWS金丝雀凭证。一个从私钥中抽走了ETH。路由器层是新的攻击面。

13 分钟阅读

Ralph循环:我如何在夜间运行自主AI代理

我构建了一个使用停止钩子、生成预算和文件系统记忆的自主代理系统。以下是失败经验以及真正能交付代码的方法。

8 分钟阅读