6 6
7> Claude Code はプロンプトキャッシングを自動的に管理します。モデル切り替えがキャッシュなしの遅いターンをトリガーする理由、`/compact` のコスト、CLAUDE.md の編集がセッション中に適用されない理由、キャッシュヒット率を確認する方法を確認してください。7> Claude Code はプロンプトキャッシングを自動的に管理します。モデル切り替えがキャッシュなしの遅いターンをトリガーする理由、`/compact` のコスト、CLAUDE.md の編集がセッション中に適用されない理由、キャッシュヒット率を確認する方法を確認してください。
8 8
9プロンプトキャッシングにより、Claude Code はより高速で費用効率的になります。キャッシングがなければ、API はターンごとに完全な履歴を再処理します。キャッシングがあれば、既に処理したものを再利用し、変更されたものに対してのみ新しい作業を行います。9プロンプトキャッシングにより、Claude Code はより高速で費用効率的になります。キャッシングがなければ、API はターンごとに完全な履歴を再処理します。キャッシングがあれば、既に処理したものを再利用し、再読み込みを[キャッシュされたトークンレート](https://platform.claude.com/docs/en/about-claude/pricing)で請求し、変更されたものに対してのみ完全に処理します。
10 10
11Claude Code はプロンプトキャッシングを自動的に処理します。ただし、[無効にする](#disable-prompt-caching)ことはできます。プロンプトキャッシングの仕組みを理解することは依然として有用です。キャッシュを無効にするアクションがあり、次の応答が遅くなり、再構築中により高くなるためです。このページでは、どのアクションがそうであるか、一部の設定が再起動を待つ理由、使用量が高く見える場合にキャッシュパフォーマンスを確認する方法について説明します。11Claude Code はプロンプトキャッシングを自動的に処理します。ただし、[無効にする](#disable-prompt-caching)ことはできます。プロンプトキャッシングの仕組みを理解することは依然として有用です。キャッシュを無効にするアクションがあり、次の応答が遅くなり、再構築中により高くなるためです。このページでは、どのアクションがそうであるか、一部の設定が再起動を待つ理由、使用量が高く見える場合にキャッシュパフォーマンスを確認する方法について説明します。
12 12
16 16
17Claude Code でメッセージを送信するたびに、新しい API リクエストが行われます。モデルはリクエスト間で何も記憶しないため、Claude Code は完全なコンテキストを再送信します。システムプロンプト、プロジェクトコンテキスト、すべての以前のメッセージとツール結果、および新しいメッセージです。新しいコンテンツは最後に追加されます。つまり、各リクエストのほとんどは前のリクエストと同じです。プロンプトキャッシングは、API が変更されなかった部分を再処理しないようにする方法です。17Claude Code でメッセージを送信するたびに、新しい API リクエストが行われます。モデルはリクエスト間で何も記憶しないため、Claude Code は完全なコンテキストを再送信します。システムプロンプト、プロジェクトコンテキスト、すべての以前のメッセージとツール結果、および新しいメッセージです。新しいコンテンツは最後に追加されます。つまり、各リクエストのほとんどは前のリクエストと同じです。プロンプトキャッシングは、API が変更されなかった部分を再処理しないようにする方法です。
18 18
19API は、プリフィックスと呼ばれる各リクエストの開始を、最近処理したコンテンツと照合することでキャッシュします。通常のターンでは、プリフィックスは前のリクエスト全体であり、最新の交換のみが新しいものです。一致は正確であるため、プリフィックスのどこかの変更は、その後のすべてを再計算します。ファイルごとまたはセグメントごとのキャッシングはありません。API リファレンスの[プロンプトキャッシングの仕組み](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching#how-prompt-caching-works)を参照して、基礎となるメカニズムを確認してください。19API は、プリフィックスと呼ばれる各リクエストの開始を、最近処理したコンテンツと照合することでキャッシュします。通常のターンでは、プリフィックスは前のリクエスト全体であり、最新の交換のみが新しいものです。一致は正確であるため、プリフィックスのどこかの変更は、その後のすべてを再計算します。ファイルごとまたはセグメントごとのキャッシングはありません。API リファレンスの[プロンプトキャッシングの仕組み](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#how-prompt-caching-works)を参照して、基礎となるメカニズムを確認してください。
20 20
21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="4 つのターンが成長する水平バーとして表示されます。各ターンのリクエストには、前のターンのすべてと最新の交換が最後に追加されたものが含まれます。ターン 2 と 3 では、変更されていないプリフィックスはキャッシュから読み取られ、新しい交換のみが処理されます。ターン 4 では、システムプロンプトが変更されたため、プリフィックスは一致しなくなり、リクエスト全体が再処理されて書き込まれます。" width="720" height="454" data-path="images/prompt-caching-prefix.svg" />21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="4 つのターンが成長する水平バーとして表示されます。各ターンのリクエストには、前のターンのすべてと最新の交換が最後に追加されたものが含まれます。ターン 2 と 3 では、変更されていないプリフィックスはキャッシュから読み取られ、新しい交換のみが処理されます。ターン 4 では、システムプロンプトが変更されたため、プリフィックスは一致しなくなり、リクエスト全体が再処理されて書き込まれます。" width="720" height="454" data-path="images/prompt-caching-prefix.svg" />
22 22
25プリフィックスマッチングを最大限に活用するために、Claude Code は各リクエストを順序付けして、ターン間で変更されることがめったにないコンテンツが最初に来るようにします。25プリフィックスマッチングを最大限に活用するために、Claude Code は各リクエストを順序付けして、ターン間で変更されることがめったにないコンテンツが最初に来るようにします。
26 26
27| レイヤー | コンテンツ | 変更される場合 |27| レイヤー | コンテンツ | 変更される場合 |
28| ------------ | -------------------------- | ---------------------------------------------- |28| ------------ | -------------------------- | ------------------------------------------------------------ |
29| システムプロンプト | コア命令、ツール定義、出力スタイル | 読み込まれたツール定義のセットが変更されるか、Claude Code がアップグレードされる |29| システムプロンプト | コア命令、ツール定義、出力スタイル | 読み込まれたツール定義のセットが変更されるか、出力スタイルを切り替えるか、Claude Code がアップグレードされる |
30| プロジェクトコンテキスト | CLAUDE.md、自動メモリ、スコープなしのルール | セッション開始時、または `/clear` または `/compact` の後 |30| プロジェクトコンテキスト | CLAUDE.md、自動メモリ、スコープなしのルール | セッション開始時、または `/clear` または `/compact` の後 |
31| 会話 | メッセージ、Claude の応答、ツール結果 | すべてのターン |31| 会話 | メッセージ、Claude の応答、ツール結果 | すべてのターン |
32 32
33会話レイヤーへの変更は、システムプロンプトとプロジェクトコンテキストをキャッシュしたままにします。システムプロンプトへの変更は、すべての後続コンテンツが異なるプリフィックスの後ろに配置されるため、すべてを無効にします。3 番目の列は、完全なリストではなく一般的なトリガーを示しており、以下のセクションでは、セッション開始時に固定される出力スタイルなどのコンテンツを含む完全なセットについて説明します。33会話レイヤーへの変更は、システムプロンプトとプロジェクトコンテキストをキャッシュしたままにします。システムプロンプトへの変更は、すべての後続コンテンツが異なるプリフィックスの後ろに配置されるため、すべてを無効にします。3 番目の列は、完全なリストではなく一般的なトリガーを示しており、以下のセクションでは完全なセットについて説明します。
34 34
35プリフィックスマッチルールは、このページのほとんどの動作を説明しています。たとえば、[Plan mode](/docs/ja/permission-modes#analyze-before-you-edit-with-plan-mode) と[スキル読み込み](/docs/ja/skills)は、会話メッセージとして命令を追加するため、キャッシュされたプリフィックスはそのままです。35プリフィックスマッチルールは、このページのほとんどの動作を説明しています。たとえば、[Plan mode](/docs/ja/permission-modes#analyze-before-you-edit-with-plan-mode) と[スキル読み込み](/docs/ja/skills)は、会話メッセージとして命令を追加するため、キャッシュされたプリフィックスはそのままです。
36 36
372 つの設定はプロンプトテキストの一部ではないため、レイヤーテーブルに表示されません。ただし、どちらもキャッシュキーの一部です。372 つの設定はレイヤーテーブルに表示されませんが、キャッシュされたままのものに影響を与えます。
38 38
39* **モデル**: 各モデルは独自のキャッシュを持ちます。モデルを切り替えると、コンテンツが同じであっても、リクエスト全体が再計算されます。以下の[モデルの切り替え](#switching-models)を参照してください。39* **モデル**: 各モデルは独自のキャッシュを持ちます。モデルを切り替えると、コンテンツが同じであっても、リクエスト全体が再計算されます。以下の[モデルの切り替え](#switching-models)を参照してください。
40* **努力レベル**: 各努力レベルは同じモデルに対して独自のキャッシュを持ちます。セッション中に変更すると、リクエスト全体が再計算され、Claude Code は変更を適用する前に確認を求めます。以下の[努力レベルの変更](#changing-effort-level)を参照してください。40* **努力レベル**: ほとんどのモデルでは、各努力レベルは独自のキャッシュを持つため、セッション中に変更するとリクエスト全体が再計算されます。API キーまたは Claude サブスクリプションを使用する Fable 5.1 では、デフォルトでキャッシュはそのままです。以下の[努力レベルの変更](#changing-effort-level)を参照してください。
41 41
42<Tip>42<Tip>
43 セッションの最初にモデルと努力レベルを選択してから、タスク間の自然な区切りのために `/compact` を保存します。タスク中に行う変更が少ないほど、キャッシュヒット率が高くなります。43 セッションの最初にモデルと努力レベルを選択してから、タスク間の自然な区切りのために `/compact` を保存します。タスク中に行う変更が少ないほど、キャッシュヒット率が高くなります。
51 51
52* **API キー、Claude サブスクリプション、または[Claude Platform on AWS](/docs/ja/claude-platform-on-aws)**: キャッシュは Anthropic のインフラストラクチャに存在し、[Claude API](https://platform.claude.com/docs) を通じてアクセスされます52* **API キー、Claude サブスクリプション、または[Claude Platform on AWS](/docs/ja/claude-platform-on-aws)**: キャッシュは Anthropic のインフラストラクチャに存在し、[Claude API](https://platform.claude.com/docs) を通じてアクセスされます
53* **Amazon Bedrock または Google Cloud の Agent Platform**: キャッシュはクラウドプロバイダーのサービングインフラストラクチャに存在します53* **Amazon Bedrock または Google Cloud の Agent Platform**: キャッシュはクラウドプロバイダーのサービングインフラストラクチャに存在します
54* **Microsoft Foundry**: リクエストは Anthropic のインフラストラクチャにルーティングされます54* **Microsoft Foundry**: デプロイメントの[ホスティングオプション](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)に依存します。Azure にホストされているデプロイメントは Azure インフラストラクチャで提供されます。Anthropic にホストされているデプロイメントは Anthropic のインフラストラクチャで提供されます
55* **カスタム `ANTHROPIC_BASE_URL` または[LLM gateway](/docs/ja/llm-gateway)**: キャッシュはリクエストが転送される場所に存在し、キャッシングが機能するかどうかはゲートウェイに依存します55* **カスタム `ANTHROPIC_BASE_URL` または[LLM gateway](/docs/ja/llm-gateway)**: キャッシュはリクエストが転送される場所に存在し、キャッシングが機能するかどうかはゲートウェイに依存します
56 56
57Claude Code は会話の途中でシステムコンテキスト(ファイル変更通知など)を追加し、すべてのプロバイダーと接続でそのブロックをキャッシング用にマークします。
58
59プロバイダー自身のエンドポイントでは、Amazon Bedrock とその[Mantle エンドポイント](/docs/ja/amazon-bedrock#use-the-mantle-endpoint)、Google Cloud の Agent Platform、および Microsoft Foundry は、Claude API と同じ方法でブロックをキャッシュします。
60
61リクエストが[LLM gateway](/docs/ja/llm-gateway)、カスタム `ANTHROPIC_BASE_URL`、または [`ANTHROPIC_BEDROCK_BASE_URL`](/docs/ja/env-vars) などのクラウドプロバイダーベース URL オーバーライドを通じて渡される場合、キャッシュされたままのものは、ゲートウェイが Claude Code が送信する[`cache_control` マーカー](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints)をどのように処理するかに依存します。
62
63* **変更されずに転送する**: ブロックと会話は、プロバイダー自身のエンドポイントと同じようにキャッシュされます。
64* **`cache_control` を名前に含む `400` エラーでマークされたリクエストを拒否する**: Claude Code はマーカーをブロックから最後の会話メッセージに移動させてリクエストを再送信し、会話の残りの部分でそこに保持します。ブロックはキャッシュされていない入力として請求されます。会話はキャッシュされたままです。
65* **成功を返しながらマーカーを削除する**: 会話履歴全体は、すべてのターンでキャッシュされていない入力として請求されます。ブロック形式のシステムコンテンツをプレーンな文字列に変換するゲートウェイは、同じ方法でマーカーを削除します。
66
57各プロバイダーが保存および処理するものについては、[データ使用](/docs/ja/data-usage)を参照してください。キャッシュがどこに存在するかに関わらず、エントリは非アクティブ期間後に期限切れになり、以下の[キャッシュライフタイム](#cache-lifetime)は TTL とそれを延長する方法について説明します。67各プロバイダーが保存および処理するものについては、[データ使用](/docs/ja/data-usage)を参照してください。キャッシュがどこに存在するかに関わらず、エントリは非アクティブ期間後に期限切れになり、以下の[キャッシュライフタイム](#cache-lifetime)は TTL とそれを延長する方法について説明します。
58 68
59<h2 id="actions-that-invalidate-the-cache">69<h2 id="actions-that-invalidate-the-cache">
68* [MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)78* [MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)
69* [プラグインの有効化または無効化](#enabling-or-disabling-a-plugin)79* [プラグインの有効化または無効化](#enabling-or-disabling-a-plugin)
70* [ツール全体の拒否](#denying-an-entire-tool)80* [ツール全体の拒否](#denying-an-entire-tool)
81* [出力スタイルの変更](#changing-output-style)
71* [会話のコンパクト化](#compacting-the-conversation)82* [会話のコンパクト化](#compacting-the-conversation)
83* [多くの画像の蓄積](#accumulating-many-images)
72* [Claude Code のアップグレード](#upgrading-claude-code)84* [Claude Code のアップグレード](#upgrading-claude-code)
73 85
74<h3 id="switching-models">86<h3 id="switching-models">
77 89
78各モデルは独自のキャッシュを持ちます。[`/model`](/docs/ja/model-config#setting-your-model) で切り替えると、次のリクエストはコンテンツが同じであっても、キャッシュヒットなしで会話履歴全体を読み取ります。90各モデルは独自のキャッシュを持ちます。[`/model`](/docs/ja/model-config#setting-your-model) で切り替えると、次のリクエストはコンテンツが同じであっても、キャッシュヒットなしで会話履歴全体を読み取ります。
79 91
92ターミナルで `/model` を実行すると、Claude Code はキャッシュがまだ温かい間のみ切り替えを確認するよう求めます。キャッシュは、Claude Code がこの会話で最後にリクエストを送信した後、または Claude が最後に応答した後、1 つの[キャッシュ TTL](#cache-lifetime) の間、温かいままです。その時間が経過すると、キャッシュは期限切れになるため、Claude Code は確認なしに切り替えます。
93
94v2.1.238 より前では、Claude Code はキャッシュ TTL をチェックせず、キャッシュが期限切れになった後でも確認を求めていました。
95
96[PreModelSwitch フック](/docs/ja/hooks#premodelswitch-decision-control)を使用して、この確認を必須にするか、スキップすることもできます。
97
80[`opusplan` モデル設定](/docs/ja/model-config#opusplan-model-setting)は、Plan Mode 中に Opus に、実行中に Sonnet に解決されるため、各 Plan Mode トグルはモデル切り替えであり、新しいキャッシュを開始します。98[`opusplan` モデル設定](/docs/ja/model-config#opusplan-model-setting)は、Plan Mode 中に Opus に、実行中に Sonnet に解決されるため、各 Plan Mode トグルはモデル切り替えであり、新しいキャッシュを開始します。
81 99
82[Fable 5 での自動モデルフォールバック](/docs/ja/model-config#automatic-model-fallback)もモデル切り替えです。安全性分類器がリクエストにフラグを立てると、Claude Code はデフォルトの Opus モデルで再実行し、セッションはそこで続行されます。100[Fable モデルと Opus 5 での自動モデルフォールバック](/docs/ja/model-config#automatic-model-fallback)もモデル切り替えです。安全性分類器がフォールバックモデルを持つカテゴリーでリクエストにフラグを立てると、Claude Code はそのモデルでリクエストを再実行し、セッションはそこで続行されます。
101
102スキルまたはコマンドのフロントマターがセッションの現在のモデル以外の[`model`](/docs/ja/skills#frontmatter-reference)を指定する場合、そのターンもモデル切り替えです。次のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。セッションモデルは次のプロンプトで再開されます。`context: fork` スキルは、代わりに[フォークされたサブエージェントのモデル](/docs/ja/skills#run-skills-in-a-subagent)を設定します。
83 103
84<h3 id="changing-effort-level">104<h3 id="changing-effort-level">
85 努力レベルの変更105 努力レベルの変更
86</h3>106</h3>
87 107
88キャッシュは[努力レベル](/docs/ja/model-config#adjust-effort-level)とモデルの両方によってキー付けされるため、`/effort` で切り替えると、次のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。会話が開始されたら、Claude Code はキャッシュを無効にする努力レベルの変更を適用する前に確認ダイアログを表示します。モデルのデフォルトを明示的に設定するなど、既に有効な同じレベルに解決される変更は、ダイアログをスキップしてキャッシュを保持します。108ほとんどのモデルでは、セッション中に[努力レベル](/docs/ja/model-config#adjust-effort-level)を変更すると、次のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。キャッシュがまだ温かい間、Claude Code は最初に変更を確認するよう求めます。
109
110API キーまたは Claude サブスクリプションを使用した Fable 5.1 では、努力レベルを変更するとキャッシュが保持され、Claude Code は確認なしに新しいレベルを適用します。これは Amazon Bedrock、Google Cloud の Agent Platform、または[Claude アプリゲートウェイ](/docs/ja/claude-apps-gateway)には適用されません。また、[`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/ja/llm-gateway-protocol#disable-pre-release-capabilities)を設定した場合、または組織が HIPAA 設定を持つ場合にも適用されません。
111
112v2.1.260 より前では、API キーまたは Claude サブスクリプションを使用した Fable 5.1 での努力レベルの変更もキャッシュを無効にしていました。
89 113
90<h3 id="turning-on-fast-mode">114<h3 id="turning-on-fast-mode">
91 高速モードの有効化115 高速モードの有効化
92</h3>116</h3>
93 117
94[高速モード](/docs/ja/fast-mode)を有効にすると、キャッシュキーの一部であるリクエストヘッダーが追加されるため、次のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。これらのキャッシュされていない入力トークンは[高速モードレート](/docs/ja/fast-mode#understand-the-cost-tradeoff)で課金されます。これが、セッションの開始時に有効にする方が、長いセッションの深くで有効にするよりもコストが低い理由です。非 Opus モデルから高速モードを有効にすると、[モデルも切り替わります](#switching-models)。これにより、独自に新しいキャッシュが開始されます。118[高速モード](/docs/ja/fast-mode)を有効にすると、キャッシュキーの一部であるリクエストヘッダーが追加されるため、Claude Code が高速モードで送信する最初のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。Claude Code はターンが開始されるときにそのヘッダーを 1 回設定し、ターン全体でそれを保持するため、Claude が作業中に高速モードをオンにすると、ヘッダーからのキャッシュミスは次のターンの最初のリクエストで発生します。これらのキャッシュされていない入力トークンは[高速モードレート](/docs/ja/fast-mode#understand-the-cost-tradeoff)で課金されます。これが、セッションの開始時に有効にする方が、長いセッションの深くで有効にするよりもコストが低い理由です。現在のモデルが高速モードをサポートしていない場合、高速モードを有効にすると[モデルも切り替わります](#switching-models)。その切り替えは、実行中のターンの次のリクエストから独自に新しいキャッシュを開始します。
95 119
96コストはキャッシュごとに 1 回適用されます。最初の高速モードターンの後、Claude Code はヘッダーを送信し続け、リクエストの速度設定のみを変更します。これはキャッシュキーの一部ではありません。高速モードをオフにする、[レート制限後の標準速度への自動フォールバック](/docs/ja/fast-mode#handle-rate-limits)、および後で再度有効にすることはすべてキャッシュを保持します。`/clear` と `/compact` はこれをリセットします。これらはとにかくそれらのポイントでキャッシュを再構築するためです。120コストはキャッシュごとに 1 回適用されます。最初の高速モードターンの後、Claude Code はヘッダーを送信し続け、リクエストの速度設定のみを変更します。これはキャッシュキーの一部ではありません。高速モードをオフにする、[レート制限後の標準速度への自動フォールバック](/docs/ja/fast-mode#handle-rate-limits)、および後で再度有効にすることはすべてキャッシュを保持します。[使用クレジットが不足した](/docs/ja/fast-mode#handle-rate-limits)場合、Claude Code は各拒否された高速モードリクエストを標準速度で同じ方法で再試行するため、このフォールバックもキャッシュを保持します。`/clear` と `/compact` はこれをリセットします。これらはとにかくそれらのポイントでキャッシュを再構築するためです。
97 121
98<h3 id="connecting-or-disconnecting-an-mcp-server">122<h3 id="connecting-or-disconnecting-an-mcp-server">
99 MCP サーバーの接続または切断123 MCP サーバーの接続または切断
102ツール定義はシステムプロンプトレイヤーに存在するため、リクエスト間でリクエスト内のツール定義のセットが変更されるとキャッシュが無効になります。[advisor ツール](/docs/ja/advisor)のトグルは例外です。その定義はキャッシュブレークポイントの後に存在するため、`/advisor` を有効化または無効化してもキャッシュされたプリフィックスはそのままです。[MCP サーバー](/docs/ja/mcp)の変更がこれを行うかどうかは、そのツールが[ツール検索](/docs/ja/mcp#scale-with-mcp-tool-search)によって遅延されるか、プリフィックスに読み込まれるかによって異なります。126ツール定義はシステムプロンプトレイヤーに存在するため、リクエスト間でリクエスト内のツール定義のセットが変更されるとキャッシュが無効になります。[advisor ツール](/docs/ja/advisor)のトグルは例外です。その定義はキャッシュブレークポイントの後に存在するため、`/advisor` を有効化または無効化してもキャッシュされたプリフィックスはそのままです。[MCP サーバー](/docs/ja/mcp)の変更がこれを行うかどうかは、そのツールが[ツール検索](/docs/ja/mcp#scale-with-mcp-tool-search)によって遅延されるか、プリフィックスに読み込まれるかによって異なります。
103 127
104* **遅延ツール**、サポートされているモデルのデフォルト:サーバーの接続、切断、またはツールリストの変更は、新しいコンテンツのみを追加し、既にキャッシュされているものを妨害しません。128* **遅延ツール**、サポートされているモデルのデフォルト:サーバーの接続、切断、またはツールリストの変更は、新しいコンテンツのみを追加し、既にキャッシュされているものを妨害しません。
105* **プリフィックスに読み込まれるツール**:それらへの変更はキャッシュを無効にします。これは[ツール検索が利用不可または無効](/docs/ja/mcp#configure-tool-search)な場合に発生します。Google Cloud の Agent Platform またはカスタム `ANTHROPIC_BASE_URL` ゲートウェイなど。また、[`alwaysLoad`](/docs/ja/mcp#exempt-a-server-from-deferral)とマークされたサーバーまたはツール、および[しきい値ベースの読み込み](/docs/ja/mcp#configure-tool-search)によって前もって保持される定義についても発生します。129* **プリフィックスに読み込まれるツール**:それらへの変更はキャッシュを無効にします。これは[ツール検索が利用不可または無効](/docs/ja/mcp#configure-tool-search)な場合に発生します。Google Cloud の Agent Platform モデルが Claude 4.5 世代より前の場合、カスタム `ANTHROPIC_BASE_URL` ゲートウェイ、または Claude Code がデプロイメントがツール検索を拒否することを検出した Microsoft Foundry [Azure でホストされているデプロイメント](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)など。また、[`alwaysLoad`](/docs/ja/mcp#exempt-a-server-from-deferral)とマークされたサーバーまたはツール、および[しきい値ベースの読み込み](/docs/ja/mcp#configure-tool-search)によって前もって保持される定義についても発生します。
106 130
107ツールがプリフィックスに読み込まれる場合、無効化の最も一般的な原因は、セッション中にサーバーが接続または切断されることです。これはアクションなしで発生する可能性があります。stdio サーバーのプロセスが終了するか、HTTP セッションが期限切れになるか、サーバーが[一時的な障害後に自動的に再接続](/docs/ja/mcp#automatic-reconnection)します。接続されたサーバーは、ツールリストを変更する[動的ツール更新](/docs/ja/mcp#dynamic-tool-updates)をプッシュすることもできます。131ツールがプリフィックスに読み込まれる場合、無効化の最も一般的な原因は、セッション中にサーバーが接続または切断されることです。これはアクションなしで発生する可能性があります。stdio サーバーのプロセスが終了するか、HTTP セッションが期限切れになるか、サーバーが[一時的な障害後に自動的に再接続](/docs/ja/mcp#automatic-reconnection)します。接続されたサーバーは、ツールリストを変更する[動的ツール更新](/docs/ja/mcp#dynamic-tool-updates)をプッシュすることもできます。
108 132
112 プラグインの有効化または無効化136 プラグインの有効化または無効化
113</h3>137</h3>
114 138
115[プラグイン](/docs/ja/plugins)は複数のコンポーネントタイプをバンドルし、変更のコストはプラグインが提供するコンポーネントによって異なります。Skills、commands、agents、hooks、LSP サーバー、monitors、themes は決してキャッシュを無効にしません。リクエストに追加するものはすべて既存の会話の後に追加されるため、次のリクエストは新しいコンテンツに対して支払いますが、それでもその前のすべてをキャッシュから読み取ります。139[プラグイン](/docs/ja/plugins)を有効化または無効化する場合、変更のコストはプラグインが提供するコンポーネントタイプによって異なります。以下のケースは、各コンポーネントタイプ、Claude Code が変更を適用するタイミング、および同じセッションでプラグインを再度無効化するときに何が起こるかをカバーしています。
140
141<h4 id="plugin-components-that-keep-the-cache">
142 キャッシュを保持するプラグインコンポーネント
143</h4>
144
145Claude Code は、プラグインのスキル、コマンド、エージェント、フック、モニター、またはテーマのキャッシュを無効にしません。それらのコンテンツは既存の会話の後に追加されるため、次のリクエストはそのコンテンツに対して支払いますが、それでもその前のすべてをキャッシュから読み取ります。
146
147<h4 id="plugins-that-provide-mcp-servers">
148 MCP サーバーを提供するプラグイン
149</h4>
116 150
117例外は[MCP サーバー](/docs/ja/plugins-reference#mcp-servers)を提供するプラグインです。1 つを有効化または無効化することは、[MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)と同じルールに従います。サーバーのツールが遅延されるとキャッシュが保持され、プリフィックスに読み込まれると次のリクエストは会話全体を再度読み取ります。151[MCP サーバー](/docs/ja/plugins-reference#mcp-servers)を提供するプラグインを有効化または無効化する場合、Claude Code は[MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)時と同じルールに従います。
118 152
119プラグインの変更は、[`/reload-plugins`](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)を実行するか、新しいセッションを開始するときに適用されます。コスト(追加されたアナウンスメントまたは完全な再読み取り)は、`/plugin install`、`/plugin enable`、または `/plugin disable` を実行するときではなく、リロード後の最初のターンに表示されます。v2.1.163 以降、リロードが完全な再読み取りをトリガーする場合、`/reload-plugins` は警告を表示し、リロードを適用しません。`--force` を渡して、とにかく適用します。153* Claude Code がサーバーのツールを遅延させる場合、キャッシュが保持されます。
154* Claude Code がそれらをプリフィックスに読み込む場合、次のリクエストは会話全体を再度読み取ります。
120 155
121セッションの前半で有効にしたプラグインを無効にすると、以前のリクエスト形状が復元されます。そのプリフィックスがまだ[キャッシュライフタイム](#cache-lifetime)内にある場合、次のリクエストは再構築するのではなく、古いキャッシュエントリを読み取ります。156<h4 id="code-intelligence-plugins">
157 コード インテリジェンス プラグイン
158</h4>
159
160[コード インテリジェンス プラグイン](/docs/ja/discover-plugins#code-intelligence)を有効化すると、Claude は[LSP ツール](/docs/ja/tools-reference#lsp-tool-behavior)を取得します。
161
162<h4 id="when-plugin-changes-apply">
163 プラグイン変更が適用されるタイミング
164</h4>
165
166Claude Code は、[`/reload-plugins`](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)を実行するか、新しいセッションを開始するときにプラグイン変更を適用します。コスト(追加されたアナウンスメントまたは完全な再読み取り)は、`/plugin enable` または `/plugin disable` を実行するときではなく、変更が適用された後の最初のターンに表示されます。Claude Code は 3 つのケースで独自に変更を適用することもできます。
167
168* `command` ソースを持つプラグインの場合、Claude Code は[プラグイン自体を再度読み込むことができます](/docs/ja/plugin-marketplaces#when-claude-code-re-runs-the-command)。
169* [`/plugin` インターフェースからプラグインをインストール](/docs/ja/discover-plugins#install-plugins)する場合、Claude Code はインストール中にそれを有効化できます。Claude Code はインストール概要でそれを行ったかどうか、または `/reload-plugins` を実行するかどうかを通知します。
170* v2.1.246 以降で[`/cd`](/docs/ja/permissions#move-the-session-to-another-directory)でセッションを移動する場合、Claude Code は移動の一部として新しいディレクトリの設定が有効にするプラグインを適用します。これは `/reload-plugins` を保持する完全な再読み取り警告なしです。
171
172`/reload-plugins` を実行してリロードが完全な再読み取りをトリガーする場合、Claude Code は警告を表示し、リロードを適用しません。`--force` を使用して再実行して、とにかくリロードを適用します。
173
174`/reload-plugins` は、デスクトップアプリ、Agent SDK、および[非対話型モード](/docs/ja/headless)(`-p` 付き)など、対話型ターミナルがないセッションでも実行されます。セッションに直接入力する場合。Claude Code v2.1.260 以降が必要です。
175
176これらのセッションではリロードはプラグイン MCP サーバー変更以外のすべてを適用します。これは[次のセッションで有効になり](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)、セッション中に完全な再読み取りのコストが発生することはありません。
177
178<h4 id="plugins-you-enable-and-then-disable-in-one-session">
179 1 つのセッションで有効化してから無効化するプラグイン
180</h4>
181
182セッションの前半で有効にしたプラグインを無効化すると、Claude Code は以前のリクエスト形状を復元します。そのプリフィックスがまだ[キャッシュライフタイム](#cache-lifetime)内にある場合、次のリクエストは再構築するのではなく、古いキャッシュエントリを読み取ります。
122 183
123<h3 id="denying-an-entire-tool">184<h3 id="denying-an-entire-tool">
124 ツール全体の拒否185 ツール全体の拒否
125</h3>186</h3>
126 187
127`Bash` や `WebFetch` のような裸のツール名を[拒否ルール](/docs/ja/permissions#manage-permissions)として追加すると、そのツールは Claude のコンテキストから完全に削除されます。組み込みツール定義はシステムプロンプトレイヤーに読み込まれるため、これらのルールの 1 つを追加または削除するとセッション中にキャッシュが無効になります。変更は、`/permissions` を通じて追加するか、[設定ファイルを直接編集](/docs/ja/settings#when-edits-take-effect)するかにかかわらず、次のターンで有効になります。188`Bash` や `WebFetch` のような裸のツール名を[拒否ルール](/docs/ja/permissions#manage-permissions)として追加すると、そのツールは Claude のコンテキストから完全に削除されます。Claude Code は組み込みツール定義をシステムプロンプトレイヤーに読み込むため、セッション中にこれらのルールの 1 つを追加または削除するとキャッシュが無効になります。Claude Code は、`/permissions` を通じてルールを追加するか、[設定ファイルを直接編集](/docs/ja/settings#when-edits-take-effect)するかにかかわらず、次のリクエストで変更を適用します。これには、ターンの途中で `/permissions` を通じて追加するルールが含まれます。
128 189
129ツール名位置で一致する拒否ルールのみがこの効果を持ちます。裸のツール名、同等の `Bash(*)` 形式、または[ツール名グロブ](/docs/ja/permissions#tool-name-wildcards)(`"*"` など)。`"mcp__*"` のような MCP ツールのみに一致するグロブは、それらのツールを同じ方法で削除しますが、一致したツールが[遅延](#connecting-or-disconnecting-an-mcp-server)されている場合、デフォルトではキャッシュはそのままです。遅延定義はキャッシュされたプリフィックスに含まれていなかったため。`Bash(rm *)` のようなスコープ付き拒否ルール、およびすべての許可ルールと質問ルールは、Claude が見るツールを変更しません。Claude Code は Claude が呼び出しを試みるときにそれらをチェックし、プリフィックスをそのままにします。190ツール名位置で一致する拒否ルールのみがこの効果を持ちます。裸のツール名、同等の `Bash(*)` 形式、または[ツール名グロブ](/docs/ja/permissions#tool-name-wildcards)(`"*"` など)。`"mcp__*"` のような MCP ツールのみに一致するグロブは、それらのツールを同じ方法で削除しますが、一致したツールが[遅延](#connecting-or-disconnecting-an-mcp-server)されている場合、デフォルトではキャッシュはそのままです。遅延定義はキャッシュされたプリフィックスに含まれていなかったため。`Bash(rm *)` のようなスコープ付き拒否ルール、およびすべての許可ルールと質問ルールは、Claude が見るツールを変更しません。Claude Code は Claude が呼び出しを試みるときにそれらをチェックし、プリフィックスをそのままにします。
130 191
192<h3 id="changing-output-style">
193 出力スタイルの変更
194</h3>
195
196[出力スタイル](/docs/ja/output-styles)はシステムプロンプトの一部です。`/config` または `outputStyle` 設定でセッション中にスタイルを切り替えると、Claude は次のメッセージから新しいスタイルを使用し、そのリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。そのコストを小さく保つには、セッションの最初のメッセージの前、または `/clear` または `/compact` の直後にスタイルを切り替えます。このときは会話履歴がほとんどまたはまったくありません。
197
198v2.1.251 より前では、セッション中のスタイル切り替えはキャッシュを保持していましたが、`/clear` を実行するか新しいセッションを開始するまで適用されませんでした。
199
131<h3 id="compacting-the-conversation">200<h3 id="compacting-the-conversation">
132 会話のコンパクト化201 会話のコンパクト化
133</h3>202</h3>
134 203
135[コンパクト化](/docs/ja/context-window#what-survives-compaction)は、メッセージ履歴を要約に置き換えます。設計上、これは会話レイヤーを無効にします。次のリクエストには、古いものとプリフィックスを共有しない新しい、より短い履歴があるためです。Claude Code はシステムプロンプトレイヤーを再利用し、ディスクからプロジェクトコンテキストを再度読み込みます。これは、セッション開始以降 CLAUDE.md とメモリが変更されていない場合にのみキャッシュヒットします。204[コンパクト化](/docs/ja/context-window#what-survives-compaction)は、メッセージ履歴を要約に置き換えます。設計上、これは会話レイヤーを無効にします。次のリクエストには、古いものとプリフィックスを共有しない新しい、より短い履歴があるためです。Claude Code はシステムプロンプトレイヤーを再利用し、ディスクからプロジェクトコンテキストを再度読み込みます。これは、セッション開始以降 CLAUDE.md とメモリが変更されていない場合にのみキャッシュヒットします。
136 205
137要約を生成するために、Claude Code は、会話と同じシステムプロンプト、ツール、履歴を持つ 1 回限りのリクエストを送信し、最終ユーザーメッセージとして要約命令を追加します。プリフィックスを共有するため、そのリクエストは既存のキャッシュを読み取り、完全な履歴を再処理しません。コンパクト化の時間のほとんどは、キャッシュミスではなく、要約の生成に費やされます。その後のターンは、はるかに短い要約に対してのみ会話キャッシュを再構築するため、コンパクト化後のターンは遅い部分ではありません。206要約を生成するために、Claude Code は、会話と同じシステムプロンプト、ツール、履歴を持つ別のリクエストを送信し、最終ユーザーメッセージとして要約命令を追加します。キャッシュがまだ温かい間、そのリクエストはキャッシュからプリフィックスを読み取るため、セッション中の `/compact` はコンテキストサイズが示唆するコストのほんの一部であり、ほとんどの時間を要約の生成に費やします。
207
208[キャッシュライフタイム](#cache-lifetime)より長い休止の後、読み取るキャッシュが残っていないため、要約リクエストはキャッシュされていない入力として完全な履歴を再処理します。これが、[古いセッションを再開](/docs/ja/sessions#resume-from-a-summary)するときに `/compact` のコストが最も高い理由です。温かいケースと冷たいケースの両方で、コンパクト化後のターンは、はるかに短い要約に対してのみ会話キャッシュを再構築するため、そのターンは遅い部分ではありません。
138 209
139<Tip>210<Tip>
140 コンパクト化は、不要になったコンテンツを破棄する場合に有利に機能します。オーバーヘッドが発生するタイミングを選択するには、タスク間などの作業の自然な区切りで `/compact` を実行します。完全に放棄したいパスに進んだ場合は、代わりに[`/rewind`](#rewinding-the-conversation)を使用して以前のターンに戻ります。巻き戻しは、コンパクト化が行うように新しいものを構築するのではなく、既にキャッシュされているプリフィックスに切り詰めます。211 コンパクト化は、不要になったコンテンツを破棄する場合に有利に機能します。オーバーヘッドが発生するタイミングを選択するには、タスク間などの作業の自然な区切りで `/compact` を実行します。完全に放棄したいパスに進んだ場合は、代わりに[`/rewind`](#rewinding-the-conversation)を使用して以前のターンに戻ります。巻き戻しは、コンパクト化が行うように新しいものを構築するのではなく、既にキャッシュされているプリフィックスに切り詰めます。
141</Tip>212</Tip>
142 213
214<h3 id="accumulating-many-images">
215 多くの画像の蓄積
216</h3>
217
218API は、各リクエストが実行できる画像と PDF の数を制限します。現在の数については、API ドキュメントの[リクエスト制限](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits)を参照してください。Claude Code はリクエスト内の画像と PDF の合計サイズもキャップするため、大きなスクリーンショットは小さいものより少ない画像でリミットに達します。
219
220次のリクエストがいずれかのリミットを超える場合、Claude Code は送信する最も古い画像と PDF のバッチを削除します。これにより、再度削除する必要があるまでさらに多くのスペースが確保されます。Claude はもう削除された画像を見ることができません。Claude が再度それらの 1 つが必要な場合は、再度共有してください。
221
222画像を削除すると、それらを保持していたメッセージが変更されるため、次のリクエストはそれらのメッセージの最も早いものから会話を再処理します。Claude Code はバッチごとに削除するため、新しいスクリーンショットごとに 1 つではなく、バッチごとに 1 つの遅いターンが表示されます。
223
143<h3 id="upgrading-claude-code">224<h3 id="upgrading-claude-code">
144 Claude Code のアップグレード225 Claude Code のアップグレード
145</h3>226</h3>
147新しい Claude Code バージョンは通常、システムプロンプトまたはツール定義を更新するため、アップグレード後の最初のリクエストはキャッシュを最初から再構築します。[自動更新](/docs/ja/setup#auto-updates)は新しいバージョンをバックグラウンドでダウンロードしますが、次の起動時に適用され、セッション中には適用されません。そのため、セッション中のサプライズではなく、再起動後のキャッシュなしの最初のターンとして表示されます。`DISABLE_AUTOUPDATER=1` を設定して、アップグレードが適用されるタイミングを制御します。228新しい Claude Code バージョンは通常、システムプロンプトまたはツール定義を更新するため、アップグレード後の最初のリクエストはキャッシュを最初から再構築します。[自動更新](/docs/ja/setup#auto-updates)は新しいバージョンをバックグラウンドでダウンロードしますが、次の起動時に適用され、セッション中には適用されません。そのため、セッション中のサプライズではなく、再起動後のキャッシュなしの最初のターンとして表示されます。`DISABLE_AUTOUPDATER=1` を設定して、アップグレードが適用されるタイミングを制御します。
148 229
149<Note>230<Note>
150 アップグレード後に[セッションを再開](/docs/ja/sessions#resume-a-session)すると、履歴が異なるシステムプロンプトの後ろに配置されるため、キャッシュヒットなしで会話履歴全体が再処理されます。コストは再開された会話の長さに応じてスケーリングされるため、長いセッションに戻る最初のターンは、送信する最も高価なリクエストになる可能性があります。231 [セッションを再開](/docs/ja/sessions#resume-a-session)すると、履歴が異なるシステムプロンプトの後ろに配置されるため、キャッシュヒットなしで会話履歴全体が再処理されます。コストは再開された会話の長さに応じてスケーリングされるため、長いセッションに戻る最初のターンは、送信する最も高価なリクエストになる可能性があります。
151</Note>232</Note>
152 233
153<h2 id="actions-that-keep-the-cache">234<h2 id="actions-that-keep-the-cache">
154 キャッシュを保持するアクション235 キャッシュを保持するアクション
155</h2>236</h2>
156 237
157これらのアクションは、会話の最後に追加するか、リクエストにまったく触れません。CLAUDE.md の編集や出力スタイルの変更など、一部は、設定変更が再起動を待つ理由でもあります。238これらのアクションは、会話の最後に追加するか、リクエストにまったく触れません。CLAUDE.md の編集など、一部は、`/clear`、`/compact`、または再起動を待つ理由でもあります。
158 239
159* [リポジトリ内のファイルの編集](#editing-files-in-your-repository)240* [リポジトリ内のファイルの編集](#editing-files-in-your-repository)
160* [セッション中の CLAUDE.md の編集](#editing-claude-md-mid-session)241* [セッション中の CLAUDE.md の編集](#editing-claude-md-mid-session)
161* [出力スタイルの変更](#changing-output-style)
162* [権限モードの変更](#changing-permission-mode)242* [権限モードの変更](#changing-permission-mode)
163* [スキルとコマンドの呼び出し](#invoking-skills-and-commands)243* [スキルとコマンドの呼び出し](#invoking-skills-and-commands)
164* [`/recap` の実行](#running-%2Frecap)244* [`/recap` の実行](#running-%2Frecap)
179 259
180[サブディレクトリ内のネストされた CLAUDE.md ファイル](/docs/ja/memory)と[`paths:` frontmatter を持つルール](/docs/ja/memory#path-specific-rules)は、Claude が最初に一致するファイルを読むときに後で読み込まれます。読み込まれる前に編集すると、有効になります。読み込まれた後、コンテンツは会話履歴の一部であるため、セッション中の編集は遡及的に変更されません。260[サブディレクトリ内のネストされた CLAUDE.md ファイル](/docs/ja/memory)と[`paths:` frontmatter を持つルール](/docs/ja/memory#path-specific-rules)は、Claude が最初に一致するファイルを読むときに後で読み込まれます。読み込まれる前に編集すると、有効になります。読み込まれた後、コンテンツは会話履歴の一部であるため、セッション中の編集は遡及的に変更されません。
181 261
182<h3 id="changing-output-style">
183 出力スタイルの変更
184</h3>
185
186[出力スタイル](/docs/ja/output-styles)はシステムプロンプトの一部であり、Claude Code はセッション開始時に 1 回読み取ります。`/config` または `outputStyle` 設定を使用してセッション中に変更してもキャッシュは無効になりませんが、変更も適用されません。Claude はセッション開始時に読み込まれたスタイルを使用し続けます。新しいスタイルは次の `/clear` または再起動時に読み込まれます。
187
188<h3 id="changing-permission-mode">262<h3 id="changing-permission-mode">
189 権限モードの変更263 権限モードの変更
190</h3>264</h3>
191 265
192[権限モード](/docs/ja/permission-modes)間の切り替え(デフォルトから編集受け入れへなど)は、システムプロンプトまたはツール定義を変更しないため、モード変更はキャッシュセーフです。例外は、[`opusplan`](/docs/ja/model-config#opusplan-model-setting) モデル設定を使用した Plan mode です。これは、Plan mode に入るか出るときにモデルを Opus と Sonnet の間で切り替えます。これにより、モード切り替えは[モデル切り替え](#switching-models)になります。266[権限モード](/docs/ja/permission-modes)間の切り替え(Manual から編集受け入れへなど)は、システムプロンプトまたはツール定義を変更しないため、モード変更はキャッシュセーフです。例外は、[`opusplan`](/docs/ja/model-config#opusplan-model-setting) モデル設定を使用した Plan Mode です。これは、Plan Mode に入るか出るときにモデルを Opus と Sonnet の間で切り替えます。これにより、モード切り替えは[モデル切り替え](#switching-models)になります。
193 267
194<h3 id="invoking-skills-and-commands">268<h3 id="invoking-skills-and-commands">
195 スキルとコマンドの呼び出し269 スキルとコマンドの呼び出し
196</h3>270</h3>
197 271
198[スキル](/docs/ja/skills)と[コマンド](/docs/ja/commands)は、呼び出しポイントでユーザーメッセージとして命令を注入します。会話内の以前のものは何も変わりません。272[スキル](/docs/ja/skills)と[コマンド](/docs/ja/commands)は、呼び出しポイントでユーザーメッセージとして命令を注入します。会話内の以前のものは何も変わりません。frontmatter で `model` を指定するスキルまたはコマンドは、そのターンの[モデル切り替え](#switching-models)になる可能性があります。
199 273
200<h3 id="running-/recap">274<h3 id="running-/recap">
201 `/recap` の実行275 `/recap` の実行
217 291
218キャッシュされたプリフィックスは、非アクティブ期間後に期限切れになります。キャッシュにヒットするすべてのリクエストはタイマーをリセットするため、作業を続ける限りキャッシュは温かく保たれます。十分に長いギャップの後、次のリクエストは完全な入力を再計算し、キャッシュを再確立します。これが、立ち去った後の最初のターンが顕著に遅い理由です。292キャッシュされたプリフィックスは、非アクティブ期間後に期限切れになります。キャッシュにヒットするすべてのリクエストはタイマーをリセットするため、作業を続ける限りキャッシュは温かく保たれます。十分に長いギャップの後、次のリクエストは完全な入力を再計算し、キャッシュを再確立します。これが、立ち去った後の最初のターンが顕著に遅い理由です。
219 293
220Time to Live(TTL)は、キャッシュが生き残るギャップの長さを制御します。API は 2 つを提供します。5 分の TTL と、より長い休憩を通じてキャッシュを温かく保つ[1 時間の TTL](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching#1-hour-cache-duration)ですが、[キャッシュ書き込みをより高いレートで請求](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching#pricing)します。Claude Code は認証方法に基づいて TTL を選択し、環境変数でオーバーライドできます。294Pro または Max プランでは、長い休止後に大規模なセッションを再開する場合、Claude Code は[サマリーから再開する](/docs/ja/sessions#resume-from-a-summary)ことを提案するため、後続のリクエストは完全な履歴を保持する必要がありません。
221 295
222<h3 id="on-a-claude-subscription">296Time to Live(TTL)は、キャッシュが生き残るギャップの長さを制御します。API は 2 つを提供します。5 分の TTL と、より長い休止を通じてキャッシュを温かく保つ[1 時間の TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration)ですが、[キャッシュ書き込みをより高いレートで請求](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing)します。より長い TTL は、セッションをアイドル状態のままにして戻ってくる場合に役立ちます。期限切れのプリフィックスが発生する再処理をスキップできるためです。5 分を超えてアイドル状態にならない短いバースト作業では、より高い書き込みレートが適用され、より長いキャッシュライフタイムが未使用のままになるため、コストが高くなります。
223 Claude サブスクリプション上297
298<h3 id="which-ttl-each-request-gets">
299 各リクエストが取得する TTL
224</h3>300</h3>
225 301
226Claude サブスクリプションでは、Claude Code は 1 時間の TTL を自動的にリクエストします。使用量はトークンごとに請求されるのではなく、プランに含まれるため、より長い TTL は追加費用がかからず、キャッシュが温かく保たれる期間にのみ影響します。302Claude Code はリクエストごとに TTL を決定し、すべてのリクエストは 2 つの固定バケットのいずれかに該当します。
227 303
228プランの使用量制限を超えており、Claude Code が[使用クレジット](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)を引き出している場合、その使用量に対して請求されるため、Claude Code は自動的に TTL を 5 分に低下させます。304* **メイン会話**: インタラクティブなターン、非インタラクティブな `-p` 実行、Agent SDK ターン、およびそれらと共にインラインで実行される Claude Code ヘルパー
305* **その他すべて**: [サブエージェント](/docs/ja/sub-agents)、[ワークフロー](/docs/ja/workflows)、プロセス内[チームメイト](/docs/ja/agent-teams)、フォーク、圧縮、セッションタイトルなど、その会話の外で Claude Code が行うリクエスト
229 306
230<h3 id="on-an-api-key-or-third-party-provider">307TTL を自分で選択しない限り、Claude Code は Claude サブスクリプション内でプランに含まれる使用量内でのみ 1 時間の TTL をリクエストします。そこでメイン会話に対して 1 時間をリクエストし、Anthropic がサーバー側で制御する小さなヘルパーリクエストセットをリクエストします。このテーブルは、両方の種類の請求下での各バケットのデフォルト TTL を示しています。
231 API キーまたはサードパーティプロバイダー上
232</h3>
233 308
234API キー、Amazon Bedrock、Google Cloud の Agent Platform、Microsoft Foundry、または Claude Platform on AWS では、トークンごとのレートを支払うため、TTL はデフォルトでより安い 5 分のままです。[1 時間の TTL](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching#1-hour-cache-duration)にオプトインするには、`ENABLE_PROMPT_CACHING_1H=1` を設定します。309| リクエストバケット | Claude サブスクリプション、プラン使用量内 | 使用クレジット、API キー、またはクラウドプロバイダー |
310| --------- | ------------------------------- | ---------------------------- |
311| メイン会話 | 1 時間 | 5 分 |
312| その他すべて | 5 分(ただし、サーバー制御のヘルパーリクエストは 1 時間) | 5 分 |
235 313
236Amazon Bedrock では、プロンプトキャッシングサポート、最小キャッシュ可能プリフィックス長、および 1 時間の TTL 可用性はすべてモデルによって異なります。キャッシュトークン数がゼロのままの場合は、Amazon Bedrock ドキュメントの[サポートされているモデル、リージョン、制限](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)を確認してください。314プランの使用量制限を超えて、Claude Code が[使用クレジット](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans)を引き出すと、その使用量に対して請求されるため、Claude Code はメイン会話をより安い 5 分の TTL に低下させます。そこで 1 時間の TTL を保つには、[TTL を自分で選択](#choose-the-ttl-yourself)してください。
237 315
238<h3 id="override-the-ttl">316<h3 id="choose-the-ttl-yourself">
239 TTL をオーバーライドする317 TTL を自分で選択する
240</h3>318</h3>
241 319
242`FORCE_PROMPT_CACHING_5M=1` を設定して、認証に関わらず 5 分の TTL を強制します。これは、キャッシング動作をデバッグする場合、2 つの TTL を比較する場合、または[管理設定](/docs/ja/settings#settings-files)で設定された `ENABLE_PROMPT_CACHING_1H` をオーバーライドする場合に便利です。320どちらのバケットに対しても TTL を設定できます。各コントロールは `5m` または `1h` を取り、Claude Code は他の値を無視します。
321
322* **メイン会話**: [`promptCacheTtl`](/docs/ja/settings-reference#promptcachettl) 設定、または `CLAUDE_CODE_PROMPT_CACHE_TTL` [環境変数](/docs/ja/env-vars)
323* **その他すべて**: [`subagentPromptCacheTtl`](/docs/ja/settings-reference#subagentpromptcachettl) 設定、または `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` 環境変数
324
325両方の設定と両方の環境変数には Claude Code v2.1.242 以降が必要です。API キーで署名するか、クラウドプロバイダーを使用する場合は、`promptCacheTtl` を `1h` に設定して、メイン会話に 1 時間のキャッシュを与えます。その外のリクエストは、そのバケットに対しても TTL を選択するまで 5 分のデフォルトを保ちます。
326
327複数のコントロールが適用される場合、Claude Code はこの順序で最初にマッチするものを取ります。
328
3291. `FORCE_PROMPT_CACHING_5M=1`。両方のバケットに対して 5 分を強制します
3302. バケットの環境変数
3313. バケットの設定
3324. サブエージェントのリクエストの場合、サブエージェントの [`experimental` frontmatter フィールド](/docs/ja/sub-agents#supported-frontmatter-fields)の `cacheTtl` 値。Claude Code v2.1.248 以降が必要です。Claude サブスクリプションが使用クレジットを使用している間、Claude Code はそこの `1h` を無視します
3335. `ENABLE_PROMPT_CACHING_1H=1`。両方のバケットに対して 1 時間をリクエストします
3346. [リクエストのバケットのデフォルト](#which-ttl-each-request-gets)
335
336キャッシング動作をデバッグする場合、2 つの TTL を比較する場合、または[管理設定](/docs/ja/managed-settings)で設定された長い TTL をオーバーライドする場合は、`FORCE_PROMPT_CACHING_5M=1` を設定します。
337
338メイン会話のキャッシュ書き込みが使用した TTL を確認するには、`claude -p "hello" --output-format json` を実行し、結果の `usage.cache_creation` を読みます。Claude Code は 1 時間のキャッシュ書き込みを `ephemeral_1h_input_tokens` の下で報告し、5 分のキャッシュ書き込みを `ephemeral_5m_input_tokens` の下で報告します。
339
340`ANTHROPIC_BASE_URL` で設定した LLM ゲートウェイを通じて、1 時間のリクエストの一部は `anthropic-beta` ヘッダーで移動するため、ゲートウェイを[そのヘッダーを変更されずに転送](/docs/ja/llm-gateway-protocol#request-headers)するように設定します。1 時間の TTL は[Claude アプリゲートウェイ](/docs/ja/claude-apps-gateway#availability-and-limitations)を通じて利用できません。Amazon Bedrock では、プロンプトキャッシングサポート、最小キャッシュ可能プリフィックス長、および 1 時間の TTL 可用性はすべてモデルによって異なります。キャッシュトークン数がゼロのままの場合は、Amazon Bedrock ドキュメントの[サポートされているモデル、リージョン、制限](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)を確認してください。
243 341
244<h2 id="cache-scope">342<h2 id="cache-scope">
245 キャッシュスコープ343 キャッシュスコープ
264 362
265読み取りから作成への比率が高いほど、キャッシングが機能しています。作成がターンごとに高いままの場合、プリフィックスで何かが変更されています。[キャッシュを無効にするアクション](#actions-that-invalidate-the-cache)セクションは、通常の原因をリストします。363読み取りから作成への比率が高いほど、キャッシングが機能しています。作成がターンごとに高いままの場合、プリフィックスで何かが変更されています。[キャッシュを無効にするアクション](#actions-that-invalidate-the-cache)セクションは、通常の原因をリストします。
266 364
365セッションごとのサマリーについては、`/usage` を実行してください。メインの会話の最初の応答の後、Claude Code はセッションブロックに[`Prompt cache (main)` 行](/docs/ja/costs#prompt-cache-statistics)を追加し、セッションのヒット率、ミス数、およびキャッシュが現在ウォームであるかどうかを表示します。statusline スクリプトは、[`prompt_cache` オブジェクト](/docs/ja/statusline#prompt-cache-fields)から同じ数値を読み取ることができます。どちらも Claude Code v2.1.251 以降が必要です。
366
367`Prompt cache (main)` 行は、Claude Code が識別できる場合、最後のミスの可能性のある原因も名前を付けます。例えば `likely cause: tool definitions changed` のようにです。可能性のある原因テキストには Claude Code v2.1.260 以降が必要です。
368
267組織全体の可視性については、OpenTelemetry エクスポーターはユーザーとセッションごとにキャッシュ読み取りと作成トークンを報告します。メトリックとイベント属性リファレンスについては、[使用状況の監視](/docs/ja/monitoring-usage)を参照してください。369組織全体の可視性については、OpenTelemetry エクスポーターはユーザーとセッションごとにキャッシュ読み取りと作成トークンを報告します。メトリックとイベント属性リファレンスについては、[使用状況の監視](/docs/ja/monitoring-usage)を参照してください。
268 370
269<h2 id="subagents-and-the-cache">371<h2 id="subagents-and-the-cache">
270 サブエージェントとキャッシュ372 サブエージェントとキャッシュ
271</h2>373</h2>
272 374
273[サブエージェント](/docs/ja/sub-agents)は、親とは別に、独自のシステムプロンプトとツールセットを持つ独自の会話を開始します。独自のキャッシュを構築し、最初の呼び出しでキャッシュヒットなしで開始し、独自のターン全体で温まります。サブエージェントは、サブスクリプション上でも 5 分の TTL を使用します。自動 1 時間の TTL はメイン会話に適用されるためです。375[サブエージェント](/docs/ja/sub-agents)は、親とは別に、独自のシステムプロンプトとツールセットを持つ独自の会話を開始します。最初のリクエストは親のキャッシュを読み取りません。2 つのプリフィックスが異なるためです。また、独自のターン全体で独自のキャッシュを温めます。サブエージェントはメイン会話の [TTL バケット](#which-ttl-each-request-gets)の外にあるため、サブスクリプション上でも 5 分間の TTL を取得します。[より長い TTL を選択](#choose-the-ttl-yourself)するまでです。
274 376
275親のキャッシュは影響を受けません。親の側から、サブエージェントの呼び出しと結果は会話に追加され、親のプリフィックスはそのままです。377親のキャッシュは影響を受けません。親の側から、サブエージェントの呼び出しと結果は会話に追加され、親のプリフィックスはそのままです。
276 378
277一方、[フォーク](/docs/ja/sub-agents#fork-the-current-conversation)は、親のシステムプロンプト、ツール、会話履歴を正確に継承するため、最初のリクエストは親のキャッシュを読み取ります。[会話のコンパクト化](#compacting-the-conversation)で説明されているコンパクト化要約呼び出しは、同じプリフィックス共有アプローチを使用します。379一方、[フォーク](/docs/ja/sub-agents#fork-the-current-conversation)は、親のシステムプロンプト、ツール、会話履歴を正確に継承するため、最初のリクエストは親のキャッシュを読み取ります。
380
381他のリクエストも、以前のリクエストがキャッシュしたプリフィックスを読み取ることができます。
382
383* **セッションコピー**: [`/fork`](/docs/ja/agent-view#copy-the-session-with-%2Ffork)でコピーしたセッションは、コピーされた会話の最後にメッセージとして分離命令を受け取るため、元の会話が構築したキャッシュはそのままです。
384* **コンパクト化**: [会話のコンパクト化](#compacting-the-conversation)で説明されている要約呼び出しは、同じプリフィックス共有アプローチを使用します。
385* **ワークフローファンアウト**: [ワークフローファンアウト](/docs/ja/workflows#prompt-caching-in-a-fan-out)の同じプリフィックスエージェントでは、Claude Code はデフォルトで最初のエージェント以外をすべて最大 5 秒間保持するため、最初のエージェントがキャッシュしたプリフィックスを読み取ることができます。
278 386
279<h2 id="disable-prompt-caching">387<h2 id="disable-prompt-caching">
280 プロンプトキャッシングを無効にする388 プロンプトキャッシングを無効にする
290| `DISABLE_PROMPT_CACHING_OPUS` | Opus のみに対して無効にする |398| `DISABLE_PROMPT_CACHING_OPUS` | Opus のみに対して無効にする |
291| `DISABLE_PROMPT_CACHING_FABLE` | Fable のみに対して無効にする |399| `DISABLE_PROMPT_CACHING_FABLE` | Fable のみに対して無効にする |
292 400
293組織全体でキャッシングポリシーを設定するには、これらのいずれかまたは [TTL 変数](#cache-lifetime)を [管理設定](/docs/ja/settings#settings-files)の `env` ブロックに入れます。通常の使用では、キャッシングを有効のままにしてください。401組織全体でキャッシングポリシーを設定するには、これらのいずれかまたは [TTL 変数](#cache-lifetime)を [管理設定](/docs/ja/managed-settings)の `env` ブロックに入れます。通常の使用では、キャッシングを有効のままにしてください。
294 402
295<h2 id="related-resources">403<h2 id="related-resources">
296 関連リソース404 関連リソース