Claude Code のトークン消費:リクエストの5回に1回はエージェントの状態表示
Claude Code のトークン消費を押し上げているのは隠れたエージェント要約。ユーザーの計測ではセッションコストの16〜22%。その仕組みを確認します。
この記事の他の言語版:العربيةDeutschEnglishEspañolFrançaisItalianoPolski简体中文
Flamerix AI が公開した計測結果の gist によると、Claude Code はエージェントパネルに表示する3〜5語の短いステータスのために、**セッションコストの16.4%**を使っています。10月29日、この投稿は Hacker News のトップページに載り、1時間で130ポイント以上を集めました。Claude Code のトークン消費が気になる人、特にバックグラウンドで多数のエージェントを動かしている人には見過ごせない話です。
Claude Code のトークン消費はどこから来るのか?
原因は agent_summary という仕組みです。gist の作者によると、次のように動作します。
- 約30秒ごとに、バックグラウンドのエージェントごとに個別に、Claude Code がそのエージェントのトランスクリプト全体をモデルに送ります。
- 直近のアクションを「3〜5語で」説明するようモデルに依頼します(原文は “describe your most recent action in 3-5 words”)。
- 結果はエージェントパネルの短いステータス行にしか使われません。
この仕組みはバージョン 2.1.232(2026年8月)からデフォルトで有効で、無効にする公式の設定はありません。
コストはどれくらい?
gist の数字は、要約を無効化する前の1週間分の OpenTelemetry エクスポートに基づいています。
- **推定コストの16.4%**が
agent_summaryに使われ、メインの会話(15.7%)を上回った - 全 API リクエストの19.7%、つまりおよそ5回に1回
- そのコストの96%は Opus によるもの
- 入力トークンと出力トークンの比は約9000対1
興味深いことに、これらの呼び出しの約98%はプロンプトキャッシュにヒットするため安価です。問題は残りの約2%で、キャッシュなしのこれらの呼び出しが要約コストの3分の1以上を占めています。
コストは Claude Code 自身の推定値(cost_usd フィールド)で、請求書ではないので、割り引いて受け止めるべきでしょう。
新しい問題なのか?
この問題は8月から知られています。8月15日、ユーザーの @rflcrz が Claude Code のリポジトリに issue #86879 を立てました。27個のサブエージェントを使った4時間のセッション(1496リクエスト)で、agent_summary の呼び出しは**リクエストの22.7%、重み付きトークンの18%**を占め、1回あたりの応答は平均約65トークンでした。
コメントでは、他のユーザーも同様の結果を報告しています。サブエージェントが20個を超えるセッションで15〜22%、バージョン 2.1.276 ではキャッシュから読み込まれたトークンの26%。あるユーザーは、環境変数 CLAUDE_CODE_ENABLE_NARRATION=0 でバージョン 2.1.241 では要約を無効にできたものの、2.1.245 では効かなくなったと指摘しています。
この issue には area:cost ラベルが付いていて、現在もオープンです。10月29日時点で、Anthropic からの回答はありません。
自分の環境で確認するには?
Claude Code には OpenTelemetry によるテレメトリのエクスポートが組み込まれています。環境変数 CLAUDE_CODE_ENABLE_TELEMETRY=1 で有効にし、ログのエクスポーターを設定します。すると各 API リクエストが claude_code.api_request イベントとして記録され、query_source 属性でどのサブシステムが送ったかがわかります。イベントを query_source でグループ化して cost_usd を合計するだけで十分です。gist の作者もまさにこの方法で問題を見つけました。
無効にできるのか?
公式にはできません。gist の作者は回避策を公開しています。Bun でプリロードするスクリプト no-agent-summary.js(BUN_OPTIONS="--preload …")で、バイナリを変更せずに要約のタイマーを無効なものに差し替えます。作者の環境では、コストに占める agent_summary の割合が16.4%からゼロになりました。
使う前に、制約を知っておきましょう。
- スクリプトは Linux でしかテストされておらず、macOS と Windows では未検証です。
- ソースコードとのマッチングで動作するため、Claude Code のアップデートのたびに知らないうちに効かなくなる可能性があります (アップデートのたびに動作を確認してください)。
- エージェントパネルにステータスが表示されなくなります。
- MIT ライセンスのコミュニティプロジェクトで、Anthropic とは関係ありません。
Claude Code に何も注入したくないなら、もっと簡単なのは、同時に動かすバックグラウンドのエージェントを減らすことです。要約のコストはエージェントの数に比例して増えるからです。Claude Code の使い方については Claude Code 入門で、Opus で予算がどれだけ早く尽きるかについては fast mode の記事で詳しく書いています。
FAQ
なぜ Claude Code はこれほどトークンを消費するのか?
主な理由は、リクエストのたびに会話のコンテキストをモデルに送るからです。ユーザーの計測では、バックグラウンドのエージェントが多い場合、約30秒ごとにエージェントのトランスクリプト全体を送る隠れた要約 agent_summary も、かなりの部分(コストの16〜22%)を占めています。
agent_summary を設定で無効にできるか?
10月29日時点では公式のスイッチはありません。issue #86879 では、専用のフラグ、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 変数の対象に要約を含めること、または間隔を設定できるようにすることが求められています。
バックグラウンドのエージェントを使っていなくても関係あるか?
要約はバックグラウンドのエージェントに対して生成されるので、問題はその数とともに大きくなります。いちばん簡単な確認方法は、テレメトリでリクエストを query_source ごとにグループ化することです。