概要
- Copilot のエージェント・サブエージェント機能を利用した 課金回避手法 の説明
- 無料モデル で初期リクエストを行い、 高額プレミアムモデル をサブエージェントで利用
- リクエスト消費計算 の仕組みとエージェント設定の悪用
- ツール呼び出しループ による無制限利用の可能性
- MSRCへの報告結果 と関連情報の共有
Copilotのエージェント・サブエージェント経由によるプレミアムモデル課金回避
- Copilot の初期リクエストを 無料モデル (例:GPT-5 Mini, GPT-4.1等)で実行
- エージェント を作成し、そのモデルを Opus 4.5 等の プレミアムモデル に指定
- サブエージェント 起動時、無料モデル経由で 高額モデル を無制限利用可能
- リクエスト課金 は初期の無料モデルのみで計算される仕様
- サブエージェント や ツールコール は追加リクエスト消費なし
手順概要
- 新規チャット開始、 モデルを無料モデル に設定
- エージェント作成、 モデルをプレミアムモデル (例:Opus 4.5)に設定
- モードを agent に切り替え
- 初回メッセージで runSubagentツール を使い、サブエージェントにクエリを渡すよう指示
- 実質的に 無料でプレミアムモデル の無制限利用が可能
例:ask-opusプロンプトファイル
- エージェント名 :ask-opus
- モデル :GPT-5 mini(copilot)
- サブエージェント :opus-agent(モデル: Claude Opus 4.5)
- 指示 :全ての処理・応答はサブエージェントのみで実施、オーケストレーターとして振る舞う
例:opus-agentエージェントファイル
- エージェント名 :opus-agent
- モデル :Claude Opus 4.5(copilot)
- 役割 :与えられたクエリ/タスクに包括的・正確に応答
ツール呼び出しループによるさらなる悪用
- chat.agent.maxRequests を高値に設定
- チャットセッション初期モデルを Opus 4.5 等のプレミアムモデルに指定
- カスタムスクリプト(非公開)+プロンプトで ツールコールを繰り返すループ を作成
- 1回のメッセージで 数百回のサブエージェント起動、3時間以上無限実行も可能
- 実際に 3プレミアムクレジット のみ消費で数百ファイル処理実績
APIバリデーションの欠如と追加の悪用ベクトル
- メッセージタイプ がクライアント宣言のみで API側の検証なし
- 例:https://github.com/microsoft/vscode-copilot-chat/blob/main/src/extension/intents/node/toolCallingLoop.ts#L484
- API直接悪用 の余地
報告経緯とMSRC対応
- MSRC(VULN-172488) へ初回報告済み
- 課金回避はMSRCのスコープ外 として却下、公開バグレポート推奨
- Copilot Chat Extension バージョン :0.37.2026013101
- VS Code バージョン :1.109.0-insider (Universal) - f3d99de
- OS :OSX Tahoe 26.3
- 対象機能 :Agent / SubAgent
- 過去Issueとの違い 明記(#252230とは別件)