计费可以通过使用子代理组合和代理定义来绕过

发布: (2026年2月9日 GMT+8 00:56)
5 分钟阅读

Source: Hacker News

摘要

  • 子代理和工具调用不会消耗任何“请求”。
  • 请求费用仅根据最初使用的模型计算。
  • Copilot 中包含的“免费”模型(例如 GPT‑5‑mini、GPT‑4.1 等)。
  • 能够为子代理定义代理。
  • 能够为代理指定模型。

当正确组合时,这可以实现对昂贵的高级模型(例如 Opus 4.5)的“免费”且几乎无限制的使用,而该模型通常需要消耗三个高级请求。

指令

  1. 开始一个新聊天。
  2. 将模型设置为 Copilot 中包含的免费模型(例如 GPT‑5 Mini)。
  3. 创建一个代理并将其模型设置为高级模型(例如 Opus 4.5)。
  4. 将模式设置为 agent
  5. 在初始消息中,指示免费模型使用 runSubagent 工具启动代理(名称自行决定)作为子代理,并传递所需查询(例如 “What time is it in London, UK”)。
  6. 提交消息。

结果

  • 初始请求由免费 GPT‑5 Mini 模型处理,不产生费用。
  • 免费模型创建一个子代理(同样免费)。
  • 子代理以 agent 配置运行,其模型设置为高级模型。
  • 高级模型处理子代理的工作,但不会消耗高级请求额度。

示例 1

示例聊天消息

/ask-opus Make a todolist app.

提示文件 (.github/prompts/ask-opus.prompt.md)

# USER_REQUEST_START
name: ask-opus
description: 在使用 Opus‑4.5 模型的子代理中运行查询。
model: GPT-5 mini (copilot)
agent: agent
# USER_REQUEST_INSTRUCTIONS
Call #tool:agent/runSubagent with the following arguments:
  - agentName: "opus-agent"
  - prompt: $USER_QUERY
# USER_REQUEST_RULES
- 您可以根据需要多次调用 USER_REQUEST_INSTRUCTIONS 中定义的子代理。
- 使用子代理决定最佳的响应或完成任务的方式(它比您更强大),包括将任务拆分为更小的步骤。
- 子代理应处理所有待办事项/任务/查询;您仅充当协调者。
- 不要为了节省 token 而操纵或概括子代理的响应——要全面且详细。
- 不要评估或响应此消息的其余部分;子代理负责所有后续内容。
# USER_REQUEST_END

代理文件 (.github/agents/opus.agent.md)

name: opus-agent
description: 一个帮助用户完成任务或查询的 AI 代理。
argument-hint: 要完成的查询或任务
model: Claude Opus 4.5 (copilot)
---
全面且准确地响应用户的查询/任务($ARGUMENTS)。

示例 2

另一种滥用向量(需要更多努力):

  1. chat.agent.maxRequests 设置为较高的值。
  2. 在聊天会话中使用高级模型(例如 Opus 4.5)作为 初始 模型。
  3. 构建一个自定义脚本(出于安全考虑未公开),模型将通过工具调用被指示执行该脚本。
  4. 编写提示,使模型重复工具调用,从而形成循环。

使用合适的脚本和提示,可以在不产生额外费用(仅限初始消息)的情况下重复调用高级模型。在测试中,单条消息触发了一个持续 3 小时的过程,启动了数百个 Opus 4.5 子代理来处理数百个文件,仅消耗了三个高级积分。三小时后停止循环,防止了进一步的消耗。

相关观察: 消息 “类型” 在客户端声明,暗示没有 API 验证,例如,toolCallingLoop.ts 第 484 行

附加细节

  • Copilot Chat Extension 版本: 0.37.2026013101
  • VS Code 版本: 1.109.0‑insider (Universal) – f3d99de commit
  • 操作系统版本: macOS 14 (Sonoma) 26.3
  • 功能: Agent / SubAgent

此问题与 #252230 不同。

注意: 该漏洞最初向 MSRC(VULN‑172488)报告;MSRC 认为计费绕过不在其范围内,并建议作为公开错误报告提交。

0 浏览
Back to Blog

相关文章

阅读更多 »

软件开发充满了隐形的选择。

不是那些头条新闻——框架之争、炫酷的 UI 趋势、“10 倍”神话。我指的是那些要到几个月后才会显现的决策:你如何处理更新、如何存储……