Skip to content

Translation in progress Some entries still include text in the original language.

arXiv:越狱、提示注入、投毒与防御· arXiv:2609.01677· Ziwei Zhao·Indexed by this site · Originally published

Skill-as-API:面向智能体软件工程的机密多智能体协作协议

Skill-as-API: Confidential Multi-Agent Coordination for Agentic Software Engineering

Quick read

Defenses

Based on 论文 PDF (AI 生成); refer to the original

Skill-as-API把skill正文留在所有者进程;代码质量智能体上Table 2的10/10返回值未见系统提示词。

Threat modelTable 1:honest-but-curious 与 adversarial caller 为 in(读 schema、发输入,OWASP 注入)。

Questions
跨组织编程智能体互相调用时,协调通道可能泄露 skill 的代码和系统提示词。MCP 与 A2A 不传实现,但仍公开描述和类型化 schema,也不能隐藏 skill 是否存在。内容过滤发生在模型已经决定输出敏感文本之后。
Methods
Skill-as-API 让 body 以闭包留在所有者进程。线上视图只有名称、描述、路由提示、版本、类型化 schema、最低信任层级和 16 字节哈希。四层做信任门控、结束后降权、隐藏与不存在技能同一错误,以及不把输入拼进系统提示词。
Experiments and results
三智能体经 XMTP 评审 PR。code_review 约 1200 字符清单与发现日志零重叠。Table 2 上 10/10 未见系统提示词;作者称不是上界。OKR 后 INTERNAL 降到 KNOWN。热重连 1.8–2.9 秒(N=30,两洲际 XMTP)。
Limitations and future work
§6 列出跨步转发未清洗、返回值中的主动泄密、隐藏与执行的时序差、信任只按对等方、合谋与 schema 推断未被消除。案例未写 LLM 名称;Table 2 是 10 条预设注入。失败计数器按 §3.6 只在内存里。
Experimental setupthree-agent PR review over XMTP、OWASP-style injection classes (Table 2) · Absorbed、hot-reconnect latency et al.
Threat model
Table 1:honest-but-curious 与 adversarial caller 为 in(读 schema、发输入,OWASP 注入)。保护 callee 代码与系统提示词。colluding callees、schema-inference 为 partial。OS/物理攻击与调用方 LLM 劫持为 out。
Benchmarks
three-agent PR review over XMTPOWASP-style injection classes (Table 2)
Metrics
Absorbedhot-reconnect latencycold-start latencytrust-tier transition
AI summarySkill-as-API 是一种协议层协调方案,让 AI 编程智能体在互相调用技能时只公开技能名称、描述、类型化输入/输出 schema 和信任层级,技能本体以闭包形式留在所有者进程内、永不跨网络传输。该协议通过四层机制实现访问控制,并从结构上收窄提示注入面,而非依赖内容过滤。作者在 XMTP 上给出开源 Python 实现,跨洲热重连延迟为 1.8-2.9 s,并以三个智能体协作完成 pull-request 审查为案例,验证各方可保留其专有分析提示词的所有权。

Skill-as-API 是一种协议层协调方案,让 AI 编程智能体在互相调用技能时只公开技能名称、描述、类型化输入/输出 schema 和信任层级,技能本体以闭包形式留在所有者进程内、永不跨网络传输。该协议通过四层机制实现访问控制,并从结构上收窄提示注入面,而非依赖内容过滤。作者在 XMTP 上给出开源 Python 实现,跨洲热重连延迟为 1.8-2.9 s,并以三个智能体协作完成 pull-request 审查为案例,验证各方可保留其专有分析提示词的所有权。

Paper analysis

6 questions; open one to read the full answer

  1. What problem does this paper attempt to solve?

    跨组织协作会泄露 skill 代码与系统提示词,Skill-as-API 把 body 留在所有者进程。

    跨组织协作时,协调通道会泄露被调用 skill 的代码与系统提示词。

    • 场景: 作者把 SE 3.0 写成人类编排跨组织自主智能体,例如调用封装漏洞模式库的安全扫描智能体。作者认为协作通道本身是负债。
    • 现有缺口: MCP 与 A2A 不传输实现代码,但仍向每个对等方公开名称、描述和类型化 schema,不能隐藏 skill 是否存在,也不能把封装的系统提示词挡在发现面之外。作者转述 PrivacyChecker 在其报告设置下残留约 7–8%,且干预发生在模型已决定输出敏感内容之后。
    • 作者的归纳: T1 与 T2 都指向 skill body,T3 扩大能尝试提取的对等方。作者写:除加密信道和事后过滤之外,还要控制可见内容、谁可见和可见多久。
    • 本文做法: Skill-as-API 的公开视图不含 body;代码与系统提示词在注册时被闭包捕获,留在所有者进程。四层为信任档、自动降权、skill 隐藏和函数边界。作者称其定位是补充 MCP 与 A2A。
    • 威胁模型:
      • 目标: 经通道取得代码或系统提示词,或枚举命名空间。统计克隆被作者放在范围外。
      • Table 1: honest-but-curious caller 与 adversarial caller(另加 OWASP 注入载荷)为 in;colluding callees 与 schema-inference attacker 为 partial;OS/物理攻击与调用方 LLM 被劫持为 out。
      • 假设: 作者假定所有者机器未被攻破;若被攻破,作者写没有协议能保护 body。协议不保护调用方自己的 LLM。
      • 系统: 跨组织、短暂协作的 SE 智能体。作者称 partial 两类只被降低,并未消除(§6 L4–L5)。
  2. What related research exists?

    作者把本文放在 ABI 层,与加密一切、IAM 门控和内容过滤并列,并称可以叠加。

    智能体隐私策略

    • AgentCrypt(Karthikeyan 等, 2026):用 HE/MPC 加密智能体间流量。作者称这类技术的通用开销是 2–3 个数量级。
    • A2A:用 IAM 限制谁可以通信,发现时仍公开 schema 与描述。
    • PrivacyChecker(Wang 等, 2025):在推理时做内容过滤。作者转述其报告设置下约 7–8% 残留。

    协调协议

    • MCP(论文引 Li 与 Gao, 2025):把智能体接到工具服务器,并传输描述与 schema。
    • AgentNet(Yang 等, 2025):做去中心化协调。作者称其不处理 skill-IP 保护。

    软件工程智能体

    • SWE-agent(Yang 等, 2024)、OpenHands(Wang 等, 2024)与 Copilot Workspace:作者称这些系统可以自主处理 issue、评审 PR 并生成补丁,并假定单智能体或全信任的多智能体环境。

    安全与能力系统

    • ARGUS(Weng 等, 2026)训练内容层注入判别器;MCPTox(Wang 等, 2025)编目 MCP 攻击面。作者称本文在协议层收窄提示词提取面。
    • Capsicum(Watson 等, 2010)在语言和 OS 边界限制可触及资源。作者称 Skill-as-API 把同一直觉用到智能体 ABI。
    • Agent Skills for LLMs(Xu 与 Yan, 2026)给出生命周期防御模型。作者在 §2.1 引用其调查:约四分之一 skill 带有可利用的安全风险。

    基线

    • Table 3 以 MCP、A2A、AgentCrypt 为对照,比较代码是否上线、描述/schema、系统提示词机密性、存在性隐藏、信任寿命、注入防御和开销。论文未把该表对应到某个任务数据集。

    作者将 Skill-as-API 称为 ABI 层的第四种策略,改变线上有什么。作者称四类做法正交:本协议去掉过滤器碰不到的暴露路径,过滤器处理协议约束不到的模型行为;加密和 IAM 仍可叠加。作者称相对 TEE enclave,选择 ABI 是为了可移植性、零基础设施成本,且不把 body 绑到硬件厂商。

  3. How does the paper address this problem?

    公开视图不含 body;四层管信任档、降权、skill 隐藏和函数边界。

    Skill-as-API 用公开视图把 body 挡在线路之外,再用四层决定谁能调用、权限如何到期、输入能否碰到系统提示词。作者列出 G1 代码与提示词不上线,G2 隐藏、禁止与不存在返回同一错误,G3 一次协作的权限会衰减,G4 调用方输入不进入系统提示词,G5 热重连维持在低个位数秒。

    抽象与不变量

    skill 为元组 S = (name, d, w, v, σ_in, σ_out, t_min, B)。d 是描述,w 是自然语言路由提示,v 是版本,σ 是类型化 schema,t_min 是最低信任层级,B = (c, p) 是代码与系统提示词,只存在于所有者进程。

    公开视图为 view(S)=(name, d, w, v, σin, σout, tmin, h)。h 是 SHA256(name ∥ v ∥ σ_in ∥ σ_out ∥ t_min) 的前 16 字节,用于快速重连。调用为 call(S, x)=c(filter(x, σin)),filter 丢掉不在 σ_in 中的键。p 在注册时被 c 闭包捕获,不是参数,输入路径到不了它。不变量是 B 不属于 view(S)。

    信任档与自动降级

    • 四档: UNTRUSTED=0、KNOWN=1、INTERNAL=2、PRIVILEGED=3。调用要求对等方层级 t ≥ S.t_min。
    • 消息门控: ping 与 trust_request 的最低档为 UNTRUSTED;discover 为 KNOWN;collab_request 为 INTERNAL;未知类型默认 PRIVILEGED,即 deny-by-default。
    • Algorithm 1: 失败则连续计数加 1,满 3 次降一档并把计数清零,下限为 0;成功则清零。okr_done 时降一档,下限为 KNOWN。作者称之为 throw-away trust:留下的是以后再提升的证据,不是常设权限。

    隐藏与函数边界

    • Skill hiding: 隐藏、被禁止与不存在的 skill 返回同一错误字符串。所有者日志可以区分,该区分不上线,对应 G2。作者指出隐藏技能与已执行技能的时序差仍是侧信道。
    • 函数边界: 调用方输入只以 schema 过滤后的具名 kwargs 到达,参考执行器只把它们绑定到 user turn,不拼进 p。作者分开两种性质:结构上 p 不上线,输入也不是 system-role 参数;行为上,模型仍可能在 user turn 中背诵 p。作者把后者标为 L2,称不消除,§4 只作示例性检查。
    • 保护对象: 该层只保护被调用方。返回值若再送入调用方自己的 LLM,该栈仍面对普通注入。

    实现与信息流

    • 代码形态: Python 3.10+。贡献 C2 写除标准库外无 Python 侧依赖;§3.6 写运行时还有可选的 LLM 供应商 SDK。传输为 Node.js sidecar 上的 XMTP v3(MLS),Python 经本机 HTTP/SSE 接桥,密码实现不在 Python TCB 内。h 同时作为重连缓存键。
    • §3.6 写明: Algorithm 1 的失败计数只在内存,重启即清零;层级变化用临时文件、fsync 与 os.replace 写入 trust.json。版本 v 用字符串精确相等,不做语义范围匹配。
    • Figure 1: MCP/A2A 一侧的文字列出 schema、工具或 skill 描述、任务消息、带提示词的消息和对话上下文,远程侧写这些内容可能被暴露或推断,并列出 System Prompt 与 Internal Assets。Skill-as-API 一侧列出 Name、Description、When-to-use、Input/Output Schema、Minimum Trust Tier、Version、Schema Hash;远程侧写只接收 schema 视图、只发送输入、只接收输出,以及 Cannot Access Code or Prompt。图注称 body 留在所有者进程。
  4. What experiments did the paper conduct?

    三智能体 PR 评审:Table 2 为 10/10,热重连 1.8–2.9 秒(N=30)。

    实验设置

    • 对象: 三个独立进程经实时 XMTP 做一次 PR 评审:编排器、代码质量智能体(清单写成系统提示词)、安全智能体(模式库提示词)。两名专家的 t_min 都是 1(KNOWN)。论文未说明 LLM 名称。
    • G1: 记录编排器侧全部 XMTP 消息,核对是否与被调用方 system_prompt 字符串重叠。文中写出的 code_review 输入为 diff: str,输出为 findings: list[str]。
    • G4: 10 条输入覆盖 Table 2 的八类 OWASP-style 注入,每条前接一段 PR diff,只发给代码质量智能体。Absorbed 指系统提示词不出现在返回值中且输出 schema 保持;同时看返回字段里有无逐字或改写的系统提示词。论文未写评审模型、阈值或人工一致性。
    • G3: 同一次运行中先把两名专家升到 INTERNAL,再在 OKR 完成时检查 Algorithm 1 第 10 行;另在测试对等方上检查 PRIVILEGED→INTERNAL。
    • 时延: 热重连是已连接对等方的第二次及以后调用,N=30;两个洲际 XMTP 中继、commodity Linux、100 Mbps。冷启动另报。全部计时含密钥棘轮。
    • 对照: Table 3 把 MCP、A2A、AgentCrypt 与 Skill-as-API 做定性对照,没有同一任务上的数值基线。

    主结果

    Swipe horizontally to read the table

    项目条件结果出处
    schema 视图code_review 发现之后只有 name、description 与输入/输出 schema;与约 1,200 字符清单零重叠§4
    注入吸收code-quality agent,八类,N=1010/10Table 2
    OKR 降权两名专家INTERNAL→KNOWN§4
    降权后再调用INTERNAL 层 skill被拒绝,须重新请求提升§4
    热重连N=30,洲际 XMTP,100 Mbps1.8–2.9 s§4
    冷启动首次建立信道30–60 s§4
    • 作者把 10/10 写成 illustrative spot-check:N=10 的零泄露不能紧致界定残留率。Absorbed 把“输入不拼进 p”和“模型没有背诵 p”合在一起,后者按 L2 不在声称范围内。作者在 §4 写,后续要把二者分开量化,并加入把输入拼进提示词的对照技能。
    • 作者称 INTERNAL→KNOWN 是测到的降档,不是停在下限上的空操作。PRIVILEGED→INTERNAL 发生在同一运行的测试对等方上。作者据此称一次 PR 评审不会变成永久技能通道。
    • 作者称编排器看到的是两名专家的 schema 而不是提示词;写出零重叠核对的是 code_review 及其约 1,200 字符清单。摘要与 C3 写案例展示 skill hiding;§4 的演练清单是 G1、G4、G3,正文没有隐藏技能与不存在技能的返回比对。

    协议定性对照

    • Table 3 的记号: ✓ 为结构性保护,✗ 为无或暴露,app 为留给应用,enc 为经由加密。
    • 分项: 实现代码上线为 none、none、enc、none (closure)。描述/schema 为 public、public、enc、public。系统提示词机密性为 app、app、enc、✓ (closure)。存在性隐藏为 ✗、✗、✗、✓。信任寿命为 none、IAM、PKI、4-tier + decay。注入防御为 app、app、n/a、ABI structural。开销为 low、low、high、low (XMTP)。顺序均为 MCP、A2A、AgentCrypt、Skill-as-API。
    • 作者的用法: 这是结构对照。论文没有在同一负载上测量开销。Figure 1 的图注称 MCP/A2A 暴露工具描述、schema 与提示词上下文,Skill-as-API 只暴露 schema 视图。

    案例中的跨步转发

    • 观察: 编排器把代码质量智能体的输出当作上下文传给安全智能体,中间没有清洗。作者称恶意的代码质量智能体可以在响应中放入有毒内容,并在 §6 记为 L1。论文未报告这条路径的成功率。

    其他消融与分析

    • Table 2 各类分母:direct instruction override 2/2,role reversal 1/1,markdown/fence escape 1/1,prompt-leak request 2/2,base64 wrapper 1/1,multilingual paraphrase 1/1,indirect via comment 1/1,recursive self-call 1/1。
    • Algorithm 1:连续 3 次失败降一档、下限 0;OKR 完成降一档、下限 KNOWN。论文未报告 3 次失败这条路径的运行记录。
    • §3.6:失败计数只在内存并随重启清零;层级写入 trust.json;版本比较为精确字符串相等。
    • §4:两名专家注册时 t_min=1,评审中升到 INTERNAL,OKR 后回到 KNOWN。
    • 冷启动 30–60 s,作者称主要由 XMTP MLS 建组造成;热重连与冷启动都含密钥棘轮。
  5. What are some points that can be further explored?

    作者在 §6 列出跨步投毒、行为层泄露、时序侧信道、按 peer 的信任和合谋推断。

    作者指出的局限与后续方向

    • L1: 智能体 A 的输出未经过滤就转给 B,即跨步输入投毒,协议没有处理;编排器层清洗是后续工作(§6)。
    • L2: 被调用 LLM 在返回值中主动发出敏感内容,作者称与 Skill-as-API 正交,仍属于内容层过滤器的范围(§6)。
    • L3: 隐藏技能与已执行技能之间的时序侧信道仍在;作者计划使用随机延迟(§6)。
    • L4: 信任按对等方,不按 skill;更细粒度 ACL 是后续工作(§6)。
    • L5: colluding callees 与 schema-inference 探测只被 schema-only 视图缓解,没有消除;随机输出扰动和限速发现是后续工作(§6)。

    实验覆盖范围

    • 案例是 3 个进程的 1 次 PR 评审,两名专家 t_min=1(§4)。论文未报告所用 LLM。
    • 注入检查是代码质量智能体上的 10 条、八类各 1 或 2 条(Table 2)。作者在 §4 称该结果不能紧致界定残留率,且没有把结构吸收与行为上的不背诵分开测量。论文未报告重复次数、评审模型或与人工的一致性。
    • 热重连样本为 N=30,主机为 commodity Linux、100 Mbps、两个洲际 XMTP 中继;冷启动写为 30–60 s,计时含密钥棘轮(§4)。
    • 信任演练包含两名专家的 INTERNAL→KNOWN,以及测试对等方的 PRIVILEGED→INTERNAL 和随后的拒绝(§4)。论文未报告连续 3 次失败降级的运行记录。
    • Table 3 是定性对照。§2.1 将统计克隆标为范围外,理由是它是任何可调用 skill 的根本限制。§6 称合谋与 schema 推断只被缓解;论文未报告这两类的定量结果。§3.6 写明失败计数器只在内存、版本用精确字符串相等。
  6. Summarize the main content of the paper

    协议把 skill 正文留在所有者侧,四层限制发现内容、权限期限和注入拼接。

    Skill-as-API 是面向智能体软件工程的协调协议,用来在跨组织调用时把 skill 的代码和系统提示词留在所有者进程。

    作者针对三条威胁:经通道或命名空间抽取专有方法,用注入让被调用模型输出系统提示词,以及协作结束后权限继续保留。线上只放名称、描述、路由提示、版本、类型化 schema、最低信任层级和 16 字节哈希;body 在注册时被闭包捕获。信任分四档,连续失败和 OKR 完成都会降档;隐藏技能与不存在技能共用同一错误;输入只进入 user turn 的 kwargs,不拼进系统提示词。参考实现是 Python 包加 XMTP v3 的 Node.js sidecar。

    三个进程的 PR 评审中,code_review 的发现消息与约 1,200 字符清单没有字符串重叠。Table 2 里,代码质量智能体上 10/10 条注入的返回值中没有系统提示词,输出 schema 仍在;作者称这不是残留率的界。OKR 结束后两名专家从 INTERNAL 降到 KNOWN,再调用 INTERNAL 技能会被拒绝。已连接对等方的热重连为 1.8–2.9 秒(N=30,洲际 XMTP,100 Mbps),冷启动为 30–60 秒。

    作者的结论是:该协议补在 MCP 与 A2A 旁边,使协作中的智能体仍各自持有工程方法。跨步投毒、模型在返回值中主动泄密、时序侧信道、按 skill 的授权,以及合谋和 schema 推断的残留,作者写在 §6。

Read originalarxiv.org