幽灵工具调用:智能体的推测式执行泄露用户意图
2026 年 6 月的一篇 arXiv 论文(2606.02483)表明,为掩盖延迟而推测式预先发出工具调用的智能体,会把推断出的用户意图泄露给外部服务——而且这是一个时序问题,任何白名单都无法撤销。
这是什么?
《Ghost Tool Calls: Issue-Time Privacy for Speculative Agent Tools》 是 Bardia Mohammadi、Lars Klein、Akhil Arora 与 Laurent Bindschaedler 于 2026 年 6 月 1 日发表在 arXiv 上的论文(2606.02483)。它研究了一种在智能体运行时中日益普及的性能优化所带来的隐私副作用:推测式工具执行。
为了掩盖一次工具往返的延迟,某些智能体框架会预测模型可能接下来要发出的工具调用,并在推理的同时提前派发它们,而此时智能体尚未真正确定要走这一分支。论文的观察简单却令人不安:当智能体随后放弃这条推测分支时,预测被丢弃了——但它触发的网络请求并没有。作者将这些已放弃但已发送的调用称为幽灵工具调用(ghost tool calls)。
工作原理
一次推测式派发会把真实的参数发送给真实的外部服务。这些参数编码了推断出的用户意图:智能体认为你想要的是哪个文件、它正准备给哪个联系人写信、它将要对第三方 API 发起哪条查询。目标服务在请求到达的那一刻就接收并记录了它。
核心发现是:问题在于时序,而非授权。论文直言不讳地指出:“任何提交时的清理、只读限制或访问控制白名单都无法撤回观察者已经持有的东西。“一旦请求到达外部观察者,无论智能体之后如何决定,该观察者都会保留这次泄露。回滚分支回滚的是智能体的状态,而非第三方的日志。
作者通过将确定之前的观察视为一等效应(与状态变更相区分)来重新表述该问题,并提出 Speculative Tool Privacy Contracts(推测式工具隐私契约)——一种运行时抽象,用于在推测调用被发出的那一刻管控它被允许透露的内容。他们在一个原型运行时中实现了这些契约,并在三个语料库上评估了十二种策略。
结果是最具实践价值的部分。与非推测式执行相比,推测式派发可测量地增加了外部观察者能够推断出的用户意图。更关键的是,运维人员通常采用的防御并不奏效:事后过滤、只读限制和访问控制白名单都让这种推断原封不动,因为它们都在字节已经上网之后才动作。只有发出时的策略——即在派发之前改变或抑制推测调用的参数或目的地投影——才能真正减少观察者所获知的内容。
为何重要
这是一种比提示注入或工具滥用更隐蔽的失效模式,而且根本不需要攻击者出现在你的提示中。“观察者”可以仅仅是你的智能体所对话的普通第三方服务:搜索 API、CRM、邮件网关、MCP 工具服务器。每一条从未执行的推测分支,仍然把你用户大概想做什么的快照交给了那个服务。
它直接对应 OWASP 的 LLM02:2025 敏感信息泄露(通过模型驱动行为无意中暴露用户数据),并被 **LLM06:2025 过度代理权(Excessive Agency)**放大——智能体能够推测性触及的工具越多,接收意图泄露的外部方集合就越大。对于受监管的数据而言,一条针对外部端点的、已被放弃的推测查询,可能构成需要上报的泄露事件,即便从智能体的角度看”什么都没发生”。
防御
论文的核心教训是:你无法在派发之后修复此问题,因此防御必须在流水线中更早介入。
- 在发出时对推测加以限制。 应用论文的框架:在推测调用离开运行时之前、而非分支解析之后,决定它可以透露什么。抑制或重写低置信度推测调用的参数与目的地投影。
- 不要依赖回滚或白名单来保护隐私。 提交时清理、只读模式和访问控制白名单是有效的完整性控制,但根据研究结果,它们丝毫无法撤销外部观察者已经收到的泄露。
- 将推测限定于可信、幂等、低敏感度的工具。 本地或第一方工具不会泄露给任何第三方;把推测式预派发保留给这类工具,并对那些把用户内容送往外部端点的工具禁用它。
- 尽量减少推测式参数所携带的内容。 推测时发送占位值或粗化后的参数,仅在提交时替换为真实值,使被放弃的分支几乎不透露任何信息。
- 将推测式派发视为可记录、可审计的事件。 应用最小代理权原则(OWASP LLM06),并记录哪些外部方收到了推测调用,以便意图泄露至少是可观察的。
状态
这是已发表的学术研究,描述了智能体推测式执行中的一种结构性隐私弱点以及一种提出的运行时缓解方法,而非某个具名产品中的漏洞;不涉及任何利用代码。关键日期:arXiv 预印本 2606.02483,第 1 版,提交于 2026 年 6 月 1 日(cs.CR / cs.AI / cs.CL)。文中描述的 Speculative Tool Privacy Contracts 是研究原型;请把”在发出时缓解”这一原则当作可落地的要点,而非一个已交付的库。