本文へスキップ
sobolewski.pro今日の AI を毎晩お届け登録する

1日1回。ワンクリックで配信停止できます。 プライバシーポリシー

Claude Code のトークン消費:リクエストの5回に1回はエージェントの状態表示

Claude Code のトークン消費を押し上げているのは隠れたエージェント要約。ユーザーの計測ではセッションコストの16〜22%。その仕組みを確認します。

1 分で読めます

この記事の他の言語版:العربيةDeutschEnglishEspañolFrançaisItalianoPolski简体中文

この記事の内容
  1. Claude Code のトークン消費はどこから来るのか?
  2. コストはどれくらい?
  3. 新しい問題なのか?
  4. 自分の環境で確認するには?
  5. 無効にできるのか?
  6. FAQ

Flamerix AI が公開した計測結果の gist によると、Claude Code はエージェントパネルに表示する3〜5語の短いステータスのために、**セッションコストの16.4%**を使っています。10月29日、この投稿は Hacker News のトップページに載り、1時間で130ポイント以上を集めました。Claude Code のトークン消費が気になる人、特にバックグラウンドで多数のエージェントを動かしている人には見過ごせない話です。

Claude Code のトークン消費はどこから来るのか?

原因は agent_summary という仕組みです。gist の作者によると、次のように動作します。

  1. 約30秒ごとに、バックグラウンドのエージェントごとに個別に、Claude Code がそのエージェントのトランスクリプト全体をモデルに送ります。
  2. 直近のアクションを「3〜5語で」説明するようモデルに依頼します(原文は “describe your most recent action in 3-5 words”)。
  3. 結果はエージェントパネルの短いステータス行にしか使われません。

この仕組みはバージョン 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%からゼロになりました。

使う前に、制約を知っておきましょう。

  1. スクリプトは Linux でしかテストされておらず、macOS と Windows では未検証です。
  2. ソースコードとのマッチングで動作するため、Claude Code のアップデートのたびに知らないうちに効かなくなる可能性があります (アップデートのたびに動作を確認してください)。
  3. エージェントパネルにステータスが表示されなくなります。
  4. 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 ごとにグループ化することです。

  • AI
  • Claude
  • Claude Code
  • AIエージェント

今日の AI を毎晩お届け

その日の AI の重要ニュースとブログの新着記事を、毎晩お届けします。簡潔に、出典付きで。

1日1回。ワンクリックで配信停止できます。 プライバシーポリシー