7月13日、systima.aiが「Claude Code Sends 4.7x More Tokens Than OpenCode Before Reading Your Prompt」と題した記事を公開した。Claude CodeとOpenCodeを同一モデル・同一環境で動かし、APIレベルでトークン消費を実測比較した結果、ユーザーが一言も入力する前の段階で両者の間に4.7倍の差が存在することが明らかになった。コスト管理ダッシュボードの数値が予想を上回っていた場合、その原因がどこにあるかを解き明かす調査だ。
ユーザーが何も入力する前に、Claude Codeは3.3万トークンを消費している
systima.aiは、Claude CodeとOpenCodeの間にロギングプロキシを挟み、両ツールが実際にAPIへ送信するリクエストペイロードと、APIが返すusageブロックを完全に記録するという実測調査を行った。
「Reply with exactly: OK」という22文字のプロンプトを送るだけのタスクで、両者の初回リクエストを比較すると以下の通りだ。
| コンポーネント | Claude Code | OpenCode |
|---|---|---|
| システムプロンプト | 27,344文字(3ブロック) | 9,324文字(1ブロック) |
| ツールスキーマ | 27ツール、99,778文字 | 10ツール、20,856文字 |
| 初回メッセージへの追加scaffolding | 7,997文字(<system-reminder>ブロック) |
なし |
| 初回リクエスト合計 | 約32,800トークン | 約6,900トークン |
表中のトークン数はAnthropicのAPIが返したusageブロックの実測値であり、文字数からの推定換算ではない。約4.7倍の差がある。Claude Codeの27ツールには、コーディング機能だけでなく、CronCreate、Monitor、Taskファミリー、ワークツリー管理、プッシュ通知といったバックグラウンドエージェント・オーケストレーション向けの機能群が含まれる。
一方のOpenCodeは、GitHubで公開されているオープンソースのCLIコーディングエージェントだ。「You are OpenCode, the best coding agent on the planet」から始まるシステムブロック1つと10ツールのみという、対照的にシンプルな構成を採っている。
トークン内訳を見ると、Claude Codeの約3.3万トークンのうち約2.4万トークンがツール定義であり、OpenCodeも同様に約4,800トークンがツール定義だ。
キャッシュ安定性という「決定的な差」
コスト面で見逃せないのが、プロンプトキャッシュの使われ方の違いだ。
Anthropicのプロンプトキャッシュは、同一のプレフィックスが繰り返し送信される場合、初回書き込み時に1.25倍のプレミアムが発生するが、以降の読み出しは通常の1/10の価格になる仕組みだ。
systima.aiがすべてのリクエストのツール配列とシステムブロックをハッシュ化して比較したところ、両者の挙動は明確に異なっていた。
- OpenCode:全セッション・全リクエストでバイト単位の同一プレフィックスを送信。同一タスクの3回の別セッションでキャッシュ書き込みがゼロになり、すべてキャッシュ読み出しで処理された。
- Claude Code:セッション内で複数の異なるリクエストクラスが存在し、会話の進行に伴って
<system-reminder>ブロックが追記される。初回ターンで3ブロック、最初のツールラウンドトリップで4ブロックへと増加する。これによりキャッシュが無効化されるたびにフルペイロードが再書き込みされる。
同一タスクでのキャッシュ書き込みトークン数は、Claude CodeがOpenCodeの最大54倍に達した。コスト管理ダッシュボードの数値が予想以上に上昇していたとしたら、この仕組みが原因である可能性が高い。
現実の設定では7.5〜9万トークンがスタート地点になる
「固定オーバーヘッド」の上に乗るコスト乗数についても実測されている。なお、以下の数字はすべて単一エージェントによる直接実行の条件で計測されたものだ。
CLAUDE.md / AGENTS.mdファイル:本番リポジトリの72KBのインストラクションファイルを追加すると、両ツールとも1リクエストあたり約2万トークン増加した。なお、Claude Code 2.1.207はAGENTS.mdを無視し、CLAUDE.mdに改名して初めてインジェストすることも確認された。
MCPサーバー:小規模な公開MCPサーバーを1台追加すると約1,000〜1,400トークンの増加。5台構成ではClaude Codeで約4,900トークン、OpenCodeで約6,967トークン増加した。
サブエージェント:同一タスクを直接実行した場合は約121,000トークンだったが、2つのサブエージェントに並列委譲すると約513,000トークンとなり、4.2倍に膨らんだ。各サブエージェントが独自のブートストラップコストを持ち、その実行ログをペアレントが再消費するためだ。このサブエージェント計測はClaude Codeでの実験値であり、上記の単一エージェント条件とは別の実験として扱う必要がある。
すべての乗数を組み合わせた「実際の作業環境」での計測では、OpenCodeは11台のMCPサーバーと72KBの指示ファイルで初回リクエストだけで90,817トークン(ツール数179、スキーマ277KB)。Claude Codeは4台のMCPサーバーとプラグイン、同じ指示ファイルで約75,000トークンだった。いずれもユーザーが一言も入力する前の数字だ。
ただし、マルチステップタスクでは逆転する
Claude Codeが一方的に不利なわけではない。書き込み・実行・テスト・修正のループタスク(T3)では結果が逆転した。
| 指標 | Claude Code | OpenCode |
|---|---|---|
| モデルリクエスト数 | 3 | 9(+タイトル用1) |
| ツール呼び出し方式 | 並列バッチ(1ラウンドトリップ) | 1ターンに1ツール |
| 累積入力トークン | 約121,000 | 約132,000 |
Claude Codeは2つのファイル書き込みと2つのスクリプト実行を1回の並列ツールラウンドトリップにまとめた。OpenCodeは1ターン1ツール呼び出しで9リクエストを要した。ベースラインが大きくても、それを少ないリクエスト回数で割り切れるなら累積コストは抑えられる。逆に言えば、OpenCodeのリクエスト数が増えるほど「小さいベースライン」の優位性は薄れていく。
この逆転は単なる例外ではなく、設計の本質を突いている。Claude Codeのオーバーヘッドはバックグラウンドエージェント・オーケストレーション向けの機能群——すなわち複雑なマルチステップ処理を前提とした設計の産物だ。単純なタスクではそのコストが無駄になるが、複数ファイルにまたがる並列処理が発生するシナリオでは、そのオーバーヘッドが帳消しになる。ベースラインが高くても積極的なバッチ処理でカバーできる。逆に、ベースラインが低くても逐次的なツール呼び出しが続けばコストは収束する。
まとめ:測定なしにコストは語れない
この調査が示すのは、AIエージェントのコストは「モデルの価格表」だけでは説明できないという事実だ。ハーネス設計、キャッシュ安定性、サブエージェント構成、MCP台数、指示ファイルのサイズ——これらすべてが乗算的に効いてくる。
Claude Code is far more cache inefficient: OpenCode's request prefix was byte-identical in every run we captured; it paid to cache its payload once per session and read it back for pennies.
(Claude Codeのキャッシュ効率は大きく劣る。OpenCodeのリクエストプレフィックスは全キャプチャで完全一致しており、1セッションにつき1回の書き込みで済み、以降は微少なコストで読み出せる。)
AIエージェントを本番運用している組織、特に利用コストの内訳を把握する必要がある環境では、「実際に何を送っているか」をAPIバウンダリで計測することが出発点になる。
詳細はClaude Code Sends 4.7x More Tokens Than OpenCode Before Reading Your Promptを参照していただきたい。