Claude Code キャッシュヒット率の実測
2026-11-03 の週の実測では、Claude モデルを使う Claude Code の継続会話のキャッシュヒット率の中央値は 98.1%(343 人)、全リクエストでは 94.6% でした。ミスの主な原因:キャッシュ期限切れ(37%)、進行中の会話の新規内容(23%)、新しい会話(17%)。
データ週:2026-11-03 – 2026-11-09(UTC)
要点
- 正常値: 98.1%, 343 人のユーザーの継続会話の中央値。中間の半数は 96.9%〜98.8%
- 全リクエスト: 94.6%, ルーティング、期限切れ、新しいチャットを含む
- 最大のミスの原因: キャッシュ期限切れ, ミスの 37%
- 形態間の差: 1.7 ポイント差, CLI(ターミナル)、デスクトップアプリ、デスクトップのローカルエージェント
クライアントごとの正常なキャッシュヒット率
データ週:2026-11-03 – 2026-11-09(UTC)
- 継続会話のヒット率(ユーザー中央値): 98.1%
- 中間の半数のユーザー: 96.9%–98.8%
- 対象ユーザー: 343 (週に継続ターンが 20 回以上)
- 全リクエストのヒット率: 94.6%
Claude Code の形態別ヒット率
同じクライアントの CLI、IDE 拡張機能、デスクトップアプリはほぼ同じリクエストを送るため、ヒット率も近い値になるはずです。
- CLI(ターミナル): 98.2% (147)
- デスクトップアプリ: 98.4% (114)
- デスクトップのローカルエージェント: 98.0% (78)
- VS Code 拡張機能: 97.8% (50)
- Agent SDK(CLI): 96.7% (43)
- Agent SDK(TypeScript): 97.8% (16)
- t3-code: 97.9% (5)
Claude Code のバージョン別ヒット率
リクエストのプレフィックスを変えたリリースは、公開されたその週のうちに、他のバージョンより明らかに低いヒット率になります。
- 2.1.321: 97.6% (5)
- 2.1.319: 98.4% (77)
- 2.1.318: 98.3% (92)
- 2.1.317: 97.9% (133)
- 2.1.316: 98.4% (44)
- 2.1.314: 98.5% (25)
- 2.1.312: 98.0% (20)
- 2.1.311: 98.4% (13)
- 2.1.310: 97.4% (14)
- 2.1.309: 98.3% (98)
- 2.1.308: 98.0% (30)
- 2.1.302: 96.4% (7)
- 2.1.299: 97.6% (6)
- 2.1.296: 98.0% (8)
- 2.1.295: 97.6% (14)
- 2.1.292: 99.0% (5)
- 2.1.284: 97.0% (6)
- 2.1.280: 98.2% (11)
週ごとの中央値
- 2026-09-29: 96.8% (120 人)
- 2026-10-06: 97.8% (220 人)
- 2026-10-13: 98.0% (256 人)
- 2026-10-20: 98.0% (250 人)
- 2026-10-27: 98.0% (259 人)
- 2026-11-03: 98.1% (343 人)
Claude Code のキャッシュヒット率が低いのはなぜ?原因別のキャッシュミス
今週の入力のうち 5.4% はキャッシュから読み取られませんでした。以下に原因別の内訳と、それぞれの対処法を示します。
- 5 分以上の間隔があり、キャッシュが期限切れ: ミスの 37%, 全入力の約 2.0%
- キャッシュの保持時間はデフォルトで 5 分で、ヒットするたびに無料で延長されます。もっと長く手を止めることが多いなら CLAUDE_CODE_PROMPT_CACHE_TTL=1h を設定してください(v2.1.242 以降)。その場合、キャッシュ書き込みは入力価格の 1.25 倍ではなく 2 倍になります。
- 進行中の会話での新規内容とプレフィックスの変化: ミスの 23%, 全入力の約 1.2%
- そのターンで新しい内容は書き込みのみで、読み取りはできません。MCP サーバーの接続や削除、MCP サーバーを含むプラグインの有効化はツール定義を変え、キャッシュを無効にします。
- 新しい会話、または 1 時間以上のアイドル: ミスの 17%, 全入力の約 0.9%
- 新しい会話の最初のリクエストや、1 時間アイドルの後のリクエストは、キャッシュを書き直す必要があります。
- モデルを切り替えた: ミスの 12%, 全入力の約 0.6%
- モデルごとにキャッシュは別々です。/model の後の次のリクエストは、内容がまったく同じでも、キャッシュヒットなしで履歴全体を読み込みます。
- 並列リクエスト(前のリクエストがまだ実行中): ミスの 10%, 全入力の約 0.5%
- サブエージェントと並列ツール呼び出しは、前のリクエストが終わる前に次のリクエストを送ります。Claude Code の fork は親セッションのキャッシュを読みますが、通常のサブエージェントは独自のシステムプロンプトとツールを持ち、自分のキャッシュを構築します。
- 別の上流アカウントまたはエンドポイントにルーティングされた: ミスの 2%, 全入力の約 0.1%
- プロンプトキャッシュは、リクエストを処理した上流アカウントに保存されます。Relay や複数アカウントのゲートウェイが会話の次のターンを別のアカウントに送ると、コンテキスト全体が再び書き込まれます。ベンダーへの直接接続ではこの原因は発生しません。
ヒット率が数ポイント違えば、請求額は数倍違う
Claude Opus 5.5 の公式価格で、ミス分を 5 分キャッシュに書き込むとした場合の、入力 100 万トークンあたりの実質コスト:
- 今週の中央値 98.1%: $0.29 (×1.0)
- 90%: $0.68 (×2.3)
- 80%: $1.16 (×4.0)
- 50%: $2.60 (×9.0)
Claude Code のキャッシュ TTL:保持時間と料金
- デフォルトで 5 分保持され、ヒットするたびに無料で延長されます。
- CLAUDE_CODE_PROMPT_CACHE_TTL=1h で 1 時間に変更できます(v2.1.242 以降。サブエージェントは CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL)。古いバージョンでは ENABLE_PROMPT_CACHING_1H=1 を使います。
- キャッシュ書き込みは入力価格の 1.25 倍(5 分)または 2 倍(1 時間)、読み取りは通常 0.1 倍で、Opus 5.5 と Sonnet 5.5 では 0.05 倍です。
- 最小長に満たないプロンプトは、エラーなしでキャッシュされません。モデルにより 512〜4,096 トークンです。
Anthropic プロンプトキャッシュ · Claude Code プロンプトキャッシュ · Claude Code 環境変数
Claude Code のキャッシュヒット率を確認する方法
- Claude Code で /usage を実行します。Session ブロックの Prompt cache (main) 行に、リクエスト数、キャッシュから提供された入力の割合、キャッシュミス数、キャッシュがまだ有効かどうかが表示されます。
- ステータスラインのスクリプトは prompt_cache フィールドを読めます。OpenTelemetry エクスポーターは、キャッシュ読み取りと作成のトークンをユーザーとセッションごとに報告します。
- API から:cache_read_input_tokens ÷(input_tokens + cache_read_input_tokens + cache_creation_input_tokens)。
- Wokey では、コンソールのリクエストログで各リクエストのキャッシュ読み取りとキャッシュ書き込みを確認できます。
Relay 経由でヒット率が下がる理由
- アカウント切り替え:キャッシュは上流アカウントに属するため、別のアカウントに送られたターンはすべて書き直されます。Relay で最も多い原因で、直接接続では起こりません。
- 形式変換:Anthropic 形式と OpenAI 形式の相互変換で、プレフィックスが変わったり cache_control ブレークポイントが失われたりすることがあります。
- v2.1.181 より前の Claude Code は、カスタム Base URL 使用時にシステムプロンプト先頭の帰属ブロックへリクエストごとに異なるトークンを入れていたため、リクエスト本文でキャッシュするゲートウェイではヒットしません。アップデートするか、CLAUDE_CODE_ATTRIBUTION_HEADER=0 を設定してください。
- セルフテスト:最小キャッシュ長を超える同じプレフィックスのリクエストを 2 回送ります。2 回目のキャッシュ読み取りはプレフィックスの長さに近くなるはずです。
Wokey は、可能な限り会話の後続リクエストを同じ上流アカウントにルーティングします。2026-10-04 から 2026-10-10 の期間、Wokey の一般ユーザーは Claude Opus 5.5 の全リクエストで 92.8% のヒット率で、OpenRouter 全体は 87.8% でした。
OpenRouter のキャッシュヒット率と比較 · ライブ:Wokey 公開キャッシュヒット率 API(直近 7 日間)
測定方法
- Wokey ゲートウェイを通る実際のユーザーリクエストが対象です。毎週月曜日 05:00 UTC に、前週(月曜日〜日曜日)を集計します。
- クライアントはリクエストの User-Agent から識別します。実際のクライアントがわからない SDK、HTTP ライブラリ、下流の Relay からのリクエストは除外し、エンタープライズアカウントも除外します。
- 継続ターンとは、同じ会話の前のリクエストと同じモデル・同じ上流アカウントで、その終了から 5 分以内に始まったリクエストです。各ユーザーのヒット率は、これらのターンにおけるキャッシュ読み取り ÷ 入力(入力にはキャッシュの読み取りと書き込みを含む)で、週に 20 回以上の継続ターンがあるユーザーの中央値を公開しています。
- 各セルは対象ユーザーが 5 人以上いる場合に公開し、前週から 3 ポイントを超える変化があった場合は先に手作業で確認します。
- 既知の偏り:Wokey ユーザーのみが対象です。利用習慣は人によって大きく異なります。全リクエストのヒット率には、ゲートウェイ自体のルーティング損失(「別の上流アカウントにルーティングされた」原因)が含まれます。
よくある質問
Claude Code の正常なキャッシュヒット率はどのくらいですか?
今週、343 人のユーザーの継続会話の中央値は 98.1% で、中間の半数は 96.9%〜98.8% でした。全リクエストでは 94.6% です。
Claude Code のキャッシュヒット率が低いのはなぜですか?
今週のミスの主な原因:キャッシュ期限切れ(37%)、進行中の会話の新規内容(23%)、新しい会話(17%)。ページでは原因ごとの対処法を紹介しています。
キャッシュヒット率が低いと Claude プランの使用制限を早く使い切りますか?
はい。Claude プランの使用制限に関する当社の実測では、キャッシュ読み取りは制限をほとんど消費せず、キャッシュ書き込みはキャッシュなしの入力とほぼ同じようにカウントされます。キャッシュ済みのコンテキストはほぼ消費ゼロですが、ミスすると再び全量がカウントされます。プラン別の制限は Claude 使用制限ページ(/claude-usage-limits)をご覧ください。
Claude Code の cache read tokens とは?
キャッシュから提供された入力部分で、cache_read_input_tokens として報告されます。長いセッションでは通常入力の 90% 以上を占め、入力価格の 0.1 倍(Opus 5.5 と Sonnet 5.5 では 0.05 倍)で課金されます。cache_creation_input_tokens は、そのリクエストで新たにキャッシュに書き込まれた部分です。
1 時間キャッシュにする価値はありますか?
通常はありません。Wokey 上の実際の Claude トラフィック 1 日分で再計算すると、すべてを 1 時間キャッシュに切り替えた場合、総支出は差し引きで約 15〜25% 増えました。書き込みが入力価格の 1.25 倍から 2 倍に上がり、期限切れが減る分の節約を上回るためです。得になるのは、コンテキストが長く、5〜60 分の中断が頻繁な使い方に限られます。
Claude Code のキャッシュはどのくらい保持されますか?
デフォルトで 5 分で、ヒットするたびに無料で延長されます。CLAUDE_CODE_PROMPT_CACHE_TTL=1h(v2.1.242 以降)で 1 時間になり、キャッシュ書き込みは入力価格の 1.25 倍ではなく 2 倍になります。
モデルの切り替えやサブエージェントでキャッシュは無効になりますか?
はい。モデルごとにキャッシュは別々なので、/model の後のリクエストはすべてを読み直します。通常のサブエージェントは独自のシステムプロンプトとツールを持ち自分のキャッシュを構築しますが、fork は親のキャッシュを再利用します。
cache creation(キャッシュ作成)はなぜ高いのですか?
キャッシュ書き込みは入力価格の 1.25 倍(5 分)または 2 倍(1 時間)です。長い会話の最初のリクエストや、アカウント切り替え・期限切れ後のリクエストはコンテキスト全体を一度書き込むため、通常のターンより明らかに高くなります。
Claude Code を Relay 経由で使ってもキャッシュは効きますか?
はい。Relay が cache_control をそのまま渡し、1 つの会話を 1 つの上流アカウントに固定していれば有効です。カスタム Base URL を使う v2.1.181 より前のバージョンは、アップデートするか CLAUDE_CODE_ATTRIBUTION_HEADER=0 を設定してください。