14 キャッシュの構成方法14 キャッシュの構成方法
15</h2>15</h2>
16 16
17Claude Code でメッセージを送信するたびに、新しい API リクエストが行われます。モデルはリクエスト間で何も記憶しないため、Claude Code は完全なコンテキストを再送信します。システムプロンプト、プロジェクトコンテキスト、すべての以前のメッセージとツール結果、および新しいメッセージです。新しいコンテンツは最後に追加されます。つまり、各リクエストのほとんどは前のリクエストと同じです。プロンプトキャッシングは、API が変更されなかった部分を再処理しないようにする方法です。17Claude Code でメッセージを送信するたびに、新しい API リクエストが作成されます。モデルはリクエスト間で何も記憶しないため、Claude Code は完全なコンテキストを再送信します。システムプロンプト、プロジェクトコンテキスト、すべての以前のメッセージとツール結果、および新しいメッセージです。新しいコンテンツは最後に追加されるため、各リクエストのほとんどは前のリクエストと同じです。プロンプトキャッシングは、API が変更されなかった部分の再処理を回避する方法です。
18 18
19API は、プリフィックスと呼ばれる各リクエストの開始を、最近処理したコンテンツと照合することでキャッシュします。通常のターンでは、プリフィックスは前のリクエスト全体であり、最新の交換のみが新しいものです。一致は正確であるため、プリフィックスのどこかの変更は、その後のすべてを再計算します。ファイルごとまたはセグメントごとのキャッシングはありません。API リファレンスの[プロンプトキャッシングの仕組み](https://platform.claude.com/docs/en/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
23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="4 つのターンが成長する水平バーとして表示されます。各ターンのリクエストには、前のターンのすべてと最新の交換が最後に追加されたものが含まれます。ターン 2 と 3 では、変更されていないプリフィックスはキャッシュから読み取られ、新しい交換のみが処理されます。ターン 4 では、システムプロンプトが変更されたため、プリフィックスは一致しなくなり、リクエスト全体が再処理されて書き込まれます。" width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="4 つのターンが成長する水平バーとして表示されています。各ターンのリクエストには、前のターンのすべてと、最後に追加された最新の交換が含まれています。ターン 2 と 3 では、変更されていないプリフィックスがキャッシュから読み込まれ、新しい交換のみが処理されます。ターン 4 では、システムプロンプトが変更されたため、プリフィックスが一致しなくなり、リクエスト全体が再処理されてキャッシュに書き込まれます。" width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />
24 24
25プリフィックスマッチングを最大限に活用するために、Claude Code は各リクエストを順序付けして、ターン間で変更されることがめったにないコンテンツが最初に来るようにします。25プリフィックスマッチングを最大限に活用するために、Claude Code は各リクエストを整理して、ターン間で変更されることが少ないコンテンツを最初に配置します。
26 26
27| レイヤー | コンテンツ | 変更される場合 |27| レイヤー | コンテンツ | 変更される場合 |
28| ------------ | -------------------------- | ------------------------------------------------------------ |28| ------------ | ------------------------- | --------------------------------------- |
29| システムプロンプト | コア命令、ツール定義、出力スタイル | 読み込まれたツール定義のセットが変更されるか、出力スタイルを切り替えるか、Claude Code がアップグレードされる |29| システムプロンプト | コア命令、ツール定義 | 読み込まれたツール定義のセットが変更される |
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 つの設定はレイヤーテーブルに表示されませんが、キャッシュされたままのものに影響を与えます。37レイヤーテーブルに表示されないが、キャッシュされたままになるものに影響する 2 つの設定があります。
38 38
39* **モデル**: 各モデルは独自のキャッシュを持ちます。モデルを切り替えると、コンテンツが同じであっても、リクエスト全体が再計算されます。以下の[モデルの切り替え](#switching-models)を参照してください。39* **モデル**:各モデルには独自のキャッシュがあります。モデルを切り替えると、コンテンツが同じであってもリクエスト全体が再計算されます。以下の [モデルの切り替え](#switching-models) を参照してください。
40* **努力レベル**: ほとんどのモデルでは、各努力レベルは独自のキャッシュを持つため、セッション中に変更するとリクエスト全体が再計算されます。API キーまたは Claude サブスクリプションを使用する Fable 5.1 では、デフォルトでキャッシュはそのままです。以下の[努力レベルの変更](#changing-effort-level)を参照してください。40* **エフォートレベル**:ほとんどのモデルでは、各エフォートレベルには独自のキャッシュがあるため、セッション中にエフォートを変更するとリクエスト全体が再計算されます。API キーまたは Claude サブスクリプションを使用した Fable 5.1 では、デフォルトではキャッシュはそのままです。以下の [エフォートレベルの変更](#changing-effort-level) を参照してください。
41 41
42<Tip>42<Tip>
43 セッションの最初にモデルと努力レベルを選択してから、タスク間の自然な区切りのために `/compact` を保存します。タスク中に行う変更が少ないほど、キャッシュヒット率が高くなります。43 セッションの最初にモデルとエフォートレベルを選択し、タスク間の自然な区切りのために `/compact` を保存してください。タスク中に行う変更が少ないほど、キャッシュヒット率が高くなります。
44</Tip>44</Tip>
45 45
46<h3 id="where-the-cache-lives">46<h3 id="where-the-cache-lives">
47 キャッシュが存在する場所47 キャッシュの場所
48</h3>48</h3>
49 49
50キャッシングはサーバー側で行われ、モデルを提供するインフラストラクチャで行われます。その場所は、認証方法によって異なります。50キャッシングはサーバー側で行われ、モデルを提供するインフラストラクチャで行われます。その場所は、認証方法によって異なります。
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**: デプロイメントの[ホスティングオプション](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)に依存します。Azure にホストされているデプロイメントは Azure インフラストラクチャで提供されます。Anthropic にホストされているデプロイメントは 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 ゲートウェイ](/docs/ja/llm-gateway)**:キャッシュはリクエストが転送される場所に存在し、キャッシングが機能するかどうかはゲートウェイに依存します。
56 56
57Claude Code は会話の途中でシステムコンテキスト(ファイル変更通知など)を追加し、すべてのプロバイダーと接続でそのブロックをキャッシング用にマークします。57Claude Code は会話中にシステムコンテキスト(ファイル変更通知など)も追加し、[`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/ja/llm-gateway-protocol#disable-pre-release-capabilities) を設定しない限り、すべてのプロバイダーと接続でそのブロックをキャッシング用にマークします。その場合、そのブロックはキャッシュなしで送信されます。
58 58
59プロバイダー自身のエンドポイントでは、Amazon Bedrock とその[Mantle エンドポイント](/docs/ja/amazon-bedrock#use-the-mantle-endpoint)、Google Cloud の Agent Platform、および Microsoft Foundry は、Claude API と同じ方法でブロックをキャッシュします。59プロバイダー独自のエンドポイント、Amazon Bedrock とその [Mantle エンドポイント](/docs/ja/amazon-bedrock#use-the-mantle-endpoint)、Google Cloud の Agent Platform、および Microsoft Foundry では、Claude API と同じ方法でブロックをキャッシュします。
60 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)をどのように処理するかに依存します。61リクエストが [LLM ゲートウェイ](/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 62
63* **変更されずに転送する**: ブロックと会話は、プロバイダー自身のエンドポイントと同じようにキャッシュされます。63* **変更されずに転送する**:ブロックと会話は、プロバイダー独自のエンドポイントと同じようにキャッシュされます。
64* **`cache_control` を名前に含む `400` エラーでマークされたリクエストを拒否する**: Claude Code はマーカーをブロックから最後の会話メッセージに移動させてリクエストを再送信し、会話の残りの部分でそこに保持します。ブロックはキャッシュされていない入力として請求されます。会話はキャッシュされたままです。64* **`cache_control` という名前の `400` エラーでマークされたリクエストを拒否する**:Claude Code はマーカーをブロックから最後の会話メッセージに移動させてリクエストを再送信し、会話の残りの部分でそこに保持します。ブロックはキャッシュなし入力として請求されます。会話はキャッシュされたままです。
65* **成功を返しながらマーカーを削除する**: 会話履歴全体は、すべてのターンでキャッシュされていない入力として請求されます。ブロック形式のシステムコンテンツをプレーンな文字列に変換するゲートウェイは、同じ方法でマーカーを削除します。65* **マーカーを削除して成功を返す**:会話履歴全体は、毎ターン、キャッシュなし入力として請求されます。ブロック形式のシステムコンテンツをプレーン文字列に変換するゲートウェイは、同じ方法でマーカーをドロップします。
66 66
67各プロバイダーが保存および処理するものについては、[データ使用](/docs/ja/data-usage)を参照してください。キャッシュがどこに存在するかに関わらず、エントリは非アクティブ期間後に期限切れになり、以下の[キャッシュライフタイム](#cache-lifetime)は TTL とそれを延長する方法について説明します。67各プロバイダーが保存および処理するものについては、[データ使用](/docs/ja/data-usage) を参照してください。キャッシュがどこに存在するかに関係なく、エントリは非アクティブ期間後に期限切れになり、以下の [キャッシュの有効期間](#cache-lifetime) では TTL とそれを延長する方法について説明しています。
68 68
69<h2 id="actions-that-invalidate-the-cache">69<h2 id="actions-that-invalidate-the-cache">
70 キャッシュを無効にするアクション70 キャッシュを無効化するアクション
71</h2>71</h2>
72 72
73これらのアクションにより、次のリクエストはキャッシュの一部またはすべてをミスします。1 回限りの遅く、より高価なターンが表示され、その後、新しいプリフィックスがキャッシュされます。ほとんどは、コストがあることを知ったら、タスク中に回避可能です。モデル切り替えは、その後の遅いターンに気付くまで無料に感じることができます。73これらのアクションは、次のリクエストでキャッシュの一部または全部がミスになる原因となります。その後、新しいプレフィックスがキャッシュされるまで、1 回限りの遅く、より高額なターンが表示されます。これらのほとんどは、コストがあることを知ったら、タスク中に回避できます。モデルスイッチは、その後の遅いターンに気付くまで無料に感じられるかもしれません。
74 74
75* [モデルの切り替え](#switching-models)75* [モデルの切り替え](#switching-models)
76* [努力レベルの変更](#changing-effort-level)76* [努力レベルの変更](#changing-effort-level)
78* [MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)78* [MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)
79* [プラグインの有効化または無効化](#enabling-or-disabling-a-plugin)79* [プラグインの有効化または無効化](#enabling-or-disabling-a-plugin)
80* [ツール全体の拒否](#denying-an-entire-tool)80* [ツール全体の拒否](#denying-an-entire-tool)
81* [出力スタイルの変更](#changing-output-style)
82* [会話のコンパクト化](#compacting-the-conversation)81* [会話のコンパクト化](#compacting-the-conversation)
83* [多くの画像の蓄積](#accumulating-many-images)82* [多くの画像の蓄積](#accumulating-many-images)
84* [Claude Code のアップグレード](#upgrading-claude-code)83* [Claude Code のアップグレード](#upgrading-claude-code)
87 モデルの切り替え86 モデルの切り替え
88</h3>87</h3>
89 88
90各モデルは独自のキャッシュを持ちます。[`/model`](/docs/ja/model-config#setting-your-model) で切り替えると、次のリクエストはコンテンツが同じであっても、キャッシュヒットなしで会話履歴全体を読み取ります。89各モデルには独自のキャッシュがあります。[`/model`](/docs/ja/model-config#setting-your-model) で切り替えると、コンテンツが同じであっても、次のリクエストはキャッシュヒットなしで会話履歴全体を読み込みます。
91 90
92ターミナルで `/model` を実行すると、Claude Code はキャッシュがまだ温かい間のみ切り替えを確認するよう求めます。キャッシュは、Claude Code がこの会話で最後にリクエストを送信した後、または Claude が最後に応答した後、1 つの[キャッシュ TTL](#cache-lifetime) の間、温かいままです。その時間が経過すると、キャッシュは期限切れになるため、Claude Code は確認なしに切り替えます。91ターミナルで `/model` を実行すると、キャッシュがまだ温かい間は、Claude Code はスイッチの確認を求めます。キャッシュは、Claude Code がこの会話で最後にリクエストを送信した後、または Claude が最後に応答した後、1 つの[キャッシュ TTL](#cache-lifetime) の間、温かいままです。その時間が経過すると、キャッシュは期限切れになるため、Claude Code は確認を求めずに切り替えます。
93 92
94v2.1.238 より前では、Claude Code はキャッシュ TTL をチェックせず、キャッシュが期限切れになった後でも確認を求めていました。93v2.1.238 より前では、Claude Code はキャッシュ TTL をチェックせず、キャッシュが期限切れになった後でも確認を求めていました。
95 94
96[PreModelSwitch フック](/docs/ja/hooks#premodelswitch-decision-control)を使用して、この確認を必須にするか、スキップすることもできます。95[PreModelSwitch フック](/docs/ja/hooks#premodelswitch-decision-control) を使用して、この確認を必須にするか、スキップすることもできます。
97 96
98[`opusplan` モデル設定](/docs/ja/model-config#opusplan-model-setting)は、Plan Mode 中に Opus に、実行中に Sonnet に解決されるため、各 Plan Mode トグルはモデル切り替えであり、新しいキャッシュを開始します。97[`opusplan` モデル設定](/docs/ja/model-config#opusplan-model-setting) は、プランモード中は Opus に、実行中は Sonnet に解決されるため、各プランモードの切り替えはモデルスイッチであり、新しいキャッシュを開始します。
99 98
100[Fable モデルと Opus 5 での自動モデルフォールバック](/docs/ja/model-config#automatic-model-fallback)もモデル切り替えです。安全性分類器がフォールバックモデルを持つカテゴリーでリクエストにフラグを立てると、Claude Code はそのモデルでリクエストを再実行し、セッションはそこで続行されます。99Fable モデルと Opus 5 の[自動モデルフォールバック](/docs/ja/model-config#automatic-model-fallback) もモデルスイッチです。安全分類器がフォールバックモデルを持つカテゴリーでリクエストにフラグを立てると、Claude Code はそのモデルでリクエストを再実行し、セッションはそこで続行されます。
101 100
102スキルまたはコマンドのフロントマターがセッションの現在のモデル以外の[`model`](/docs/ja/skills#frontmatter-reference)を指定する場合、そのターンもモデル切り替えです。次のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。セッションモデルは次のプロンプトで再開されます。`context: fork` スキルは、代わりに[フォークされたサブエージェントのモデル](/docs/ja/skills#run-skills-in-a-subagent)を設定します。101スキルまたはコマンドのフロントマターがセッションの現在のモデル以外の [`model`](/docs/ja/skills#frontmatter-reference) を指定する場合、そのターンもモデルスイッチです。次のリクエストはキャッシュヒットなしで会話履歴全体を読み込みます。セッションモデルは次のプロンプトで再開されます。`context: fork` スキルは、代わりに[フォークされたサブエージェントのモデル](/docs/ja/skills#run-skills-in-a-subagent)を設定します。
103 102
104<h3 id="changing-effort-level">103<h3 id="changing-effort-level">
105 努力レベルの変更104 努力レベルの変更
106</h3>105</h3>
107 106
108ほとんどのモデルでは、セッション中に[努力レベル](/docs/ja/model-config#adjust-effort-level)を変更すると、次のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。キャッシュがまだ温かい間、Claude Code は最初に変更を確認するよう求めます。107ほとんどのモデルでは、セッション中に[努力レベル](/docs/ja/model-config#adjust-effort-level)を変更すると、次のリクエストはキャッシュヒットなしで会話履歴全体を読み込みます。キャッシュがまだ温かい間は、Claude Code は最初に変更を確認するよう求めます。
109 108
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 設定を持つ場合にも適用されません。109API キーまたは 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 110
112v2.1.260 より前では、API キーまたは Claude サブスクリプションを使用した Fable 5.1 での努力レベルの変更もキャッシュを無効にしていました。111v2.1.260 より前では、API キーまたは Claude サブスクリプションを使用した Fable 5.1 での努力レベルの変更もキャッシュを無効化していました。
113 112
114<h3 id="turning-on-fast-mode">113<h3 id="turning-on-fast-mode">
115 高速モードの有効化114 高速モードの有効化
116</h3>115</h3>
117 116
118[高速モード](/docs/ja/fast-mode)を有効にすると、キャッシュキーの一部であるリクエストヘッダーが追加されるため、Claude Code が高速モードで送信する最初のリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。Claude Code はターンが開始されるときにそのヘッダーを 1 回設定し、ターン全体でそれを保持するため、Claude が作業中に高速モードをオンにすると、ヘッダーからのキャッシュミスは次のターンの最初のリクエストで発生します。これらのキャッシュされていない入力トークンは[高速モードレート](/docs/ja/fast-mode#understand-the-cost-tradeoff)で課金されます。これが、セッションの開始時に有効にする方が、長いセッションの深くで有効にするよりもコストが低い理由です。現在のモデルが高速モードをサポートしていない場合、高速モードを有効にすると[モデルも切り替わります](#switching-models)。その切り替えは、実行中のターンの次のリクエストから独自に新しいキャッシュを開始します。117[高速モード](/docs/ja/fast-mode)を有効にすると、キャッシュキーの一部であるリクエストヘッダーが追加されるため、Claude Code が高速モードをオンにして送信する最初のリクエストはキャッシュヒットなしで会話履歴全体を読み込みます。Claude Code はターンの開始時にそのヘッダーを 1 回設定し、ターン全体でそれを保持するため、Claude が作業中に高速モードをオンにすると、ヘッダーからのキャッシュミスは次のターンの最初のリクエストで発生します。これらのキャッシュされていない入力トークンは[高速モードレート](/docs/ja/fast-mode#understand-the-cost-tradeoff)で請求されます。これが、セッションの開始時にオンにするのが、長いセッションの深くでオンにするよりもコストが低い理由です。現在のモデルが高速モードをサポートしていない場合、高速モードを有効にすると[モデルも切り替わり](#switching-models)、そのスイッチ自体が実行中のターンの次のリクエストから新しいキャッシュを開始します。
119 118
120コストはキャッシュごとに 1 回適用されます。最初の高速モードターンの後、Claude Code はヘッダーを送信し続け、リクエストの速度設定のみを変更します。これはキャッシュキーの一部ではありません。高速モードをオフにする、[レート制限後の標準速度への自動フォールバック](/docs/ja/fast-mode#handle-rate-limits)、および後で再度有効にすることはすべてキャッシュを保持します。[使用クレジットが不足した](/docs/ja/fast-mode#handle-rate-limits)場合、Claude Code は各拒否された高速モードリクエストを標準速度で同じ方法で再試行するため、このフォールバックもキャッシュを保持します。`/clear` と `/compact` はこれをリセットします。これらはとにかくそれらのポイントでキャッシュを再構築するためです。119コストは会話ごとに 1 回適用されます。最初の高速モードターンの後、Claude Code はヘッダーを送信し続け、キャッシュキーの一部ではないリクエストの速度設定のみを変更します。高速モードをオフにする、[レート制限後の標準速度への自動フォールバック](/docs/ja/fast-mode#handle-rate-limits)、およびその後にオンに戻すことはすべてキャッシュを保持します。[使用クレジットが不足した](/docs/ja/fast-mode#handle-rate-limits)場合、Claude Code は各拒否された高速モードリクエストを同じ方法で標準速度で再試行するため、このフォールバックもキャッシュを保持します。`/clear` と `/compact` はこれをリセットします。これらはとにかくそれらのポイントでキャッシュを再構築するためです。
121 120
122<h3 id="connecting-or-disconnecting-an-mcp-server">121<h3 id="connecting-or-disconnecting-an-mcp-server">
123 MCP サーバーの接続または切断122 MCP サーバーの接続または切断
124</h3>123</h3>
125 124
126ツール定義はシステムプロンプトレイヤーに存在するため、リクエスト間でリクエスト内のツール定義のセットが変更されるとキャッシュが無効になります。[advisor ツール](/docs/ja/advisor)のトグルは例外です。その定義はキャッシュブレークポイントの後に存在するため、`/advisor` を有効化または無効化してもキャッシュされたプリフィックスはそのままです。[MCP サーバー](/docs/ja/mcp)の変更がこれを行うかどうかは、そのツールが[ツール検索](/docs/ja/mcp#scale-with-mcp-tool-search)によって遅延されるか、プリフィックスに読み込まれるかによって異なります。125ツール定義はシステムプロンプトレイヤーに存在するため、ターン間でリクエスト内のツール定義のセットが変わるとキャッシュが無効化されます。[アドバイザーツール](/docs/ja/advisor)の切り替えは例外です。その定義はキャッシュブレークポイントの後に存在するため、`/advisor` を有効または無効にするとキャッシュされたプレフィックスはそのまま保持されます。[MCP サーバー](/docs/ja/mcp)の変更がこれを行うかどうかは、そのツールが[ツール検索](/docs/ja/mcp#scale-with-mcp-tool-search)によって遅延されるか、プレフィックスに読み込まれるかによって異なります。
127 126
128* **遅延ツール**、サポートされているモデルのデフォルト:サーバーの接続、切断、またはツールリストの変更は、新しいコンテンツのみを追加し、既にキャッシュされているものを妨害しません。127* **遅延ツール**、サポートされているモデルのデフォルト:サーバーの接続、切断、またはツールリストの変更は、新しいコンテンツを追加するだけで、既にキャッシュされているものを乱しません。
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)によって前もって保持される定義についても発生します。128* **プレフィックスに読み込まれるツール**:それらへの変更はキャッシュを無効化します。これは、[ツール検索が利用できないか無効になっている](/docs/ja/mcp#configure-tool-search)場合に発生します。例えば、Claude 4.5 世代より前の Google Cloud の Agent Platform モデル、カスタム `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)によって前もって保持される定義の場合にも発生します。
130 129
131ツールがプリフィックスに読み込まれる場合、無効化の最も一般的な原因は、セッション中にサーバーが接続または切断されることです。これはアクションなしで発生する可能性があります。stdio サーバーのプロセスが終了するか、HTTP セッションが期限切れになるか、サーバーが[一時的な障害後に自動的に再接続](/docs/ja/mcp#automatic-reconnection)します。接続されたサーバーは、ツールリストを変更する[動的ツール更新](/docs/ja/mcp#dynamic-tool-updates)をプッシュすることもできます。130ツールがプレフィックスに読み込まれる場合、無効化の最も一般的な原因は、セッション中にサーバーが接続または切断されることです。これは、あなたのアクションなしに発生する可能性があります。stdio サーバーのプロセスが終了する、HTTP セッションが期限切れになる、またはサーバーが[一時的な障害後に自動的に再接続](/docs/ja/mcp#automatic-reconnection)する場合です。接続されたサーバーは、そのツールリストを変更する[動的ツール更新](/docs/ja/mcp#dynamic-tool-updates)をプッシュすることもできます。
132 131
133MCP 設定を編集しても、それ自体ではキャッシュは変更されません。新しい設定は再起動後にのみ有効になります。これは、サーバーが接続または切断されるときです。132MCP 設定を編集しても、それ自体ではキャッシュは変わりません。新しい設定は、サーバーが接続または切断される再起動後にのみ有効になります。
134 133
135<h3 id="enabling-or-disabling-a-plugin">134<h3 id="enabling-or-disabling-a-plugin">
136 プラグインの有効化または無効化135 プラグインの有効化または無効化
137</h3>136</h3>
138 137
139[プラグイン](/docs/ja/plugins)を有効化または無効化する場合、変更のコストはプラグインが提供するコンポーネントタイプによって異なります。以下のケースは、各コンポーネントタイプ、Claude Code が変更を適用するタイミング、および同じセッションでプラグインを再度無効化するときに何が起こるかをカバーしています。138[プラグイン](/docs/ja/plugins)を有効または無効にする場合、変更のコストはプラグインが提供するコンポーネントタイプによって異なります。以下のケースは、各コンポーネントタイプ、Claude Code が変更を適用するタイミング、および同じセッション内でプラグインを再度無効にする場合の動作をカバーしています。
140 139
141<h4 id="plugin-components-that-keep-the-cache">140<h4 id="plugin-components-that-keep-the-cache">
142 キャッシュを保持するプラグインコンポーネント141 キャッシュを保持するプラグインコンポーネント
143</h4>142</h4>
144 143
145Claude Code は、プラグインのスキル、コマンド、エージェント、フック、モニター、またはテーマのキャッシュを無効にしません。それらのコンテンツは既存の会話の後に追加されるため、次のリクエストはそのコンテンツに対して支払いますが、それでもその前のすべてをキャッシュから読み取ります。144Claude Code は、プラグインのスキル、コマンド、エージェント、フック、モニター、またはテーマのキャッシュを無効化することはありません。既存の会話の後にそのコンテンツを追加するため、次のリクエストはそのコンテンツに対して支払い、その前のすべてをキャッシュから読み込みます。
146 145
147<h4 id="plugins-that-provide-mcp-servers">146<h4 id="plugins-that-provide-mcp-servers">
148 MCP サーバーを提供するプラグイン147 MCP サーバーを提供するプラグイン
149</h4>148</h4>
150 149
151[MCP サーバー](/docs/ja/plugins-reference#mcp-servers)を提供するプラグインを有効化または無効化する場合、Claude Code は[MCP サーバーの接続または切断](#connecting-or-disconnecting-an-mcp-server)時と同じルールに従います。150[MCP サーバー](/docs/ja/plugins-reference#mcp-servers)を提供するプラグインを有効または無効にする場合、Claude Code は[MCP サーバーを接続または切断する](#connecting-or-disconnecting-an-mcp-server)場合と同じルールに従います。
152 151
153* Claude Code がサーバーのツールを遅延させる場合、キャッシュが保持されます。152* Claude Code がサーバーのツールを遅延させる場合、キャッシュを保持します。
154* Claude Code がそれらをプリフィックスに読み込む場合、次のリクエストは会話全体を再度読み取ります。153* Claude Code がそれらをプレフィックスに読み込む場合、次のリクエストは会話全体を再読み込みします。
155 154
156<h4 id="code-intelligence-plugins">155<h4 id="code-intelligence-plugins">
157 コード インテリジェンス プラグイン156 コード インテリジェンス プラグイン
158</h4>157</h4>
159 158
160[コード インテリジェンス プラグイン](/docs/ja/discover-plugins#code-intelligence)を有効化すると、Claude は[LSP ツール](/docs/ja/tools-reference#lsp-tool-behavior)を取得します。159[コード インテリジェンス プラグイン](/docs/ja/discover-plugins#code-intelligence)を有効にすると、Claude は[LSP ツール](/docs/ja/tools-reference#lsp-tool-behavior)を取得します。
161 160
162<h4 id="when-plugin-changes-apply">161<h4 id="when-plugin-changes-apply">
163 プラグイン変更が適用されるタイミング162 プラグイン変更が適用される場合
164</h4>163</h4>
165 164
166Claude Code は、[`/reload-plugins`](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)を実行するか、新しいセッションを開始するときにプラグイン変更を適用します。コスト(追加されたアナウンスメントまたは完全な再読み取り)は、`/plugin enable` または `/plugin disable` を実行するときではなく、変更が適用された後の最初のターンに表示されます。Claude Code は 3 つのケースで独自に変更を適用することもできます。165`/plugin` メニューで行った変更は、[`/reload-plugins`](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)を通じて行われます。Claude Code はメニューを閉じるときにこれを実行します。追加されたアナウンスメントまたは完全な再読み込みのいずれかのコストを、変更が適用された後の最初のターンで支払います。Claude Code は変更を独自に適用することもできます。
167 166
168* `command` ソースを持つプラグインの場合、Claude Code は[プラグイン自体を再度読み込むことができます](/docs/ja/plugin-marketplaces#when-claude-code-re-runs-the-command)。167* `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` を実行するかどうかを通知します。168* [`/plugin` インターフェースからプラグインをインストール](/docs/ja/discover-plugins#install-plugins)する場合、Claude Code はインストール中にそれを有効化できます。インストール概要は、それが行われたかどうかを示します。
170* v2.1.246 以降で[`/cd`](/docs/ja/permissions#move-the-session-to-another-directory)でセッションを移動する場合、Claude Code は移動の一部として新しいディレクトリの設定が有効にするプラグインを適用します。これは `/reload-plugins` を保持する完全な再読み取り警告なしです。169* v2.1.246 以降で [`/cd`](/docs/ja/permissions#move-the-session-to-another-directory) でセッションを移動する場合、Claude Code は新しいディレクトリの設定が有効にするプラグインを移動の一部として適用します。`/reload-plugins` が保持する完全な再読み込み警告なしで。
170* インタラクティブセッションでは、`--plugin-dir` で渡した[プラグインのフォルダ](/docs/ja/plugins#test-your-plugins-locally)でプラグインを追加または削除する場合、変更は直ちに適用されます。それを適用すると完全な再読み込みがトリガーされる場合、Claude Code は変更を保持し、`/reload-plugins` を実行するための通知を表示します。Claude Code v2.1.265 以降が必要です。
171 171
172`/reload-plugins` を実行してリロードが完全な再読み取りをトリガーする場合、Claude Code は警告を表示し、リロードを適用しません。`--force` を使用して再実行して、とにかくリロードを適用します。172`/reload-plugins` が実行され、再読み込みが完全な再読み込みをトリガーする場合、Claude Code は警告を表示し、再読み込みを適用しません。`/reload-plugins --force` を実行して、とにかくそれを適用します。
173 173
174`/reload-plugins` は、デスクトップアプリ、Agent SDK、および[非対話型モード](/docs/ja/headless)(`-p` 付き)など、対話型ターミナルがないセッションでも実行されます。セッションに直接入力する場合。Claude Code v2.1.260 以降が必要です。174`/reload-plugins` は、デスクトップアプリ、Agent SDK、および [`-p` を使用した非インタラクティブモード](/docs/ja/headless)など、インタラクティブターミナルのないセッションでも実行されます。セッションに直接入力する場合です。Claude Code v2.1.260 以降が必要です。
175 175
176これらのセッションではリロードはプラグイン MCP サーバー変更以外のすべてを適用します。これは[次のセッションで有効になり](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)、セッション中に完全な再読み取りのコストが発生することはありません。176これらのセッションでは、再読み込みはプラグイン MCP サーバーの変更を除くすべてを適用します。これらは[次のセッションで有効になり](/docs/ja/discover-plugins#apply-plugin-changes-without-restarting)、セッション中に完全な再読み込みのコストは決してかかりません。
177 177
178<h4 id="plugins-you-enable-and-then-disable-in-one-session">178<h4 id="plugins-you-enable-and-then-disable-in-one-session">
179 1 つのセッションで有効化してから無効化するプラグイン179 セッション内で有効化してから無効化するプラグイン
180</h4>180</h4>
181 181
182セッションの前半で有効にしたプラグインを無効化すると、Claude Code は以前のリクエスト形状を復元します。そのプリフィックスがまだ[キャッシュライフタイム](#cache-lifetime)内にある場合、次のリクエストは再構築するのではなく、古いキャッシュエントリを読み取ります。182セッションの前半で有効にしたプラグインを無効にする場合、Claude Code は以前のリクエスト形状を復元します。そのプレフィックスがまだ[キャッシュ有効期間](#cache-lifetime)内にある場合、次のリクエストは再構築する代わりに、より古いキャッシュエントリを読み込みます。
183 183
184<h3 id="denying-an-entire-tool">184<h3 id="denying-an-entire-tool">
185 ツール全体の拒否185 ツール全体の拒否
186</h3>186</h3>
187 187
188`Bash` や `WebFetch` のような裸のツール名を[拒否ルール](/docs/ja/permissions#manage-permissions)として追加すると、そのツールは Claude のコンテキストから完全に削除されます。Claude Code は組み込みツール定義をシステムプロンプトレイヤーに読み込むため、セッション中にこれらのルールの 1 つを追加または削除するとキャッシュが無効になります。Claude Code は、`/permissions` を通じてルールを追加するか、[設定ファイルを直接編集](/docs/ja/settings#when-edits-take-effect)するかにかかわらず、次のリクエストで変更を適用します。これには、ターンの途中で `/permissions` を通じて追加するルールが含まれます。188`Bash` または `WebFetch` のような裸のツール名を[拒否ルール](/docs/ja/permissions#manage-permissions)として追加すると、Claude はそのツールを次のリクエストから呼び出すことができなくなります。`/permissions` を通じて追加するか、[設定ファイルを直接編集](/docs/ja/settings#when-edits-take-effect)するかのいずれかです。これには、ターンの途中で `/permissions` を通じて追加するルールが含まれます。
189 189
190ツール名位置で一致する拒否ルールのみがこの効果を持ちます。裸のツール名、同等の `Bash(*)` 形式、または[ツール名グロブ](/docs/ja/permissions#tool-name-wildcards)(`"*"` など)。`"mcp__*"` のような MCP ツールのみに一致するグロブは、それらのツールを同じ方法で削除しますが、一致したツールが[遅延](#connecting-or-disconnecting-an-mcp-server)されている場合、デフォルトではキャッシュはそのままです。遅延定義はキャッシュされたプリフィックスに含まれていなかったため。`Bash(rm *)` のようなスコープ付き拒否ルール、およびすべての許可ルールと質問ルールは、Claude が見るツールを変更しません。Claude Code は Claude が呼び出しを試みるときにそれらをチェックし、プリフィックスをそのままにします。190[ツール検索](/docs/ja/mcp#scale-with-mcp-tool-search)がアクティブな場合(サポートされているモデルではデフォルト)、リクエストのツール定義は変更されず、キャッシュされたプレフィックスは保持されます。ツール検索が利用できないか無効になっている場合、Claude Code は次のリクエストから定義を削除し、キャッシュを無効化します。ルールを後で削除する場合も同じです。
191 191
192<h3 id="changing-output-style">192ツール名の位置で一致する拒否ルールのみがこの効果を持ちます。裸のツール名、同等の `Bash(*)` 形式、または [`"*"` のようなツール名グロブ](/docs/ja/permissions#tool-name-wildcards)です。`"mcp__*"` のような MCP ツールのみに一致するグロブは、同じ方法でそれらのツールをブロックします。`Bash(rm *)` のようなスコープ付き拒否ルール、およびすべての許可とアスクルールは、Claude が見るツールを変更しません。Claude Code は Claude が呼び出しを試みるときにそれらをチェックし、プレフィックスはそのまま保持されます。
193 出力スタイルの変更
194</h3>
195
196[出力スタイル](/docs/ja/output-styles)はシステムプロンプトの一部です。`/config` または `outputStyle` 設定でセッション中にスタイルを切り替えると、Claude は次のメッセージから新しいスタイルを使用し、そのリクエストはキャッシュヒットなしで会話履歴全体を読み取ります。そのコストを小さく保つには、セッションの最初のメッセージの前、または `/clear` または `/compact` の直後にスタイルを切り替えます。このときは会話履歴がほとんどまたはまったくありません。
197
198v2.1.251 より前では、セッション中のスタイル切り替えはキャッシュを保持していましたが、`/clear` を実行するか新しいセッションを開始するまで適用されませんでした。
199 193
200<h3 id="compacting-the-conversation">194<h3 id="compacting-the-conversation">
201 会話のコンパクト化195 会話のコンパクト化
202</h3>196</h3>
203 197
204[コンパクト化](/docs/ja/context-window#what-survives-compaction)は、メッセージ履歴を要約に置き換えます。設計上、これは会話レイヤーを無効にします。次のリクエストには、古いものとプリフィックスを共有しない新しい、より短い履歴があるためです。Claude Code はシステムプロンプトレイヤーを再利用し、ディスクからプロジェクトコンテキストを再度読み込みます。これは、セッション開始以降 CLAUDE.md とメモリが変更されていない場合にのみキャッシュヒットします。198[コンパクト化](/docs/ja/context-window#what-survives-compaction)は、メッセージ履歴を概要に置き換えます。設計上、これは会話レイヤーを無効化します。次のリクエストには、古いものと共通のプレフィックスを共有しない、新しく短い履歴があるためです。Claude Code はシステムプロンプトレイヤーを再利用します。ただし、会話が[そうでなければ変更されるシステムプロンプトを保持しながら再開された](#resuming-a-session)場合を除きます。その場合、最初のコンパクト化は現在のプロンプトに切り替わり、そのレイヤーは 1 回再構築されます。プロジェクトコンテキストをディスクから再読み込みします。これはセッション開始以降 CLAUDE.md とメモリが変更されていない場合にのみキャッシュヒットします。
205 199
206要約を生成するために、Claude Code は、会話と同じシステムプロンプト、ツール、履歴を持つ別のリクエストを送信し、最終ユーザーメッセージとして要約命令を追加します。キャッシュがまだ温かい間、そのリクエストはキャッシュからプリフィックスを読み取るため、セッション中の `/compact` はコンテキストサイズが示唆するコストのほんの一部であり、ほとんどの時間を要約の生成に費やします。200概要を生成するために、Claude Code は会話と同じシステムプロンプト、ツール、および履歴を持つ別のリクエストを送信します。さらに、最終ユーザーメッセージとして追加された要約化指示があります。キャッシュが温かい間、そのリクエストはキャッシュからプレフィックスを読み込むため、セッション中の `/compact` はコンテキストサイズが示唆するコストの一部であり、ほとんどの時間を概要の生成に費やします。
207 201
208[キャッシュライフタイム](#cache-lifetime)より長い休止の後、読み取るキャッシュが残っていないため、要約リクエストはキャッシュされていない入力として完全な履歴を再処理します。これが、[古いセッションを再開](/docs/ja/sessions#resume-from-a-summary)するときに `/compact` のコストが最も高い理由です。温かいケースと冷たいケースの両方で、コンパクト化後のターンは、はるかに短い要約に対してのみ会話キャッシュを再構築するため、そのターンは遅い部分ではありません。202[キャッシュ有効期間](#cache-lifetime)より長い休止の後、読み込むキャッシュは残っていないため、要約化リクエストはキャッシュされていない入力として完全な履歴を再処理します。これが `/compact` が[古いセッションを再開](/docs/ja/sessions#resume-from-a-summary)するときに最もコストがかかる理由です。温かいケースと冷たいケースの両方で、コンパクト化後のターンは、はるかに短い概要のためだけに会話キャッシュを再構築するため、そのターンは遅い部分ではありません。
209 203
210<Tip>204<Tip>
211 コンパクト化は、不要になったコンテンツを破棄する場合に有利に機能します。オーバーヘッドが発生するタイミングを選択するには、タスク間などの作業の自然な区切りで `/compact` を実行します。完全に放棄したいパスに進んだ場合は、代わりに[`/rewind`](#rewinding-the-conversation)を使用して以前のターンに戻ります。巻き戻しは、コンパクト化が行うように新しいものを構築するのではなく、既にキャッシュされているプリフィックスに切り詰めます。205 コンパクト化は、破棄するコンテキストがもう必要ないコンテンツである場合、あなたに有利に機能します。オーバーヘッドが発生するタイミングを選択するには、タスク間などの作業の自然な区切りで `/compact` を実行します。自動コンパクト化がタスク中にトリガーされるのを待つ代わりに。完全に放棄したいパスを下った場合は、代わりに[`/rewind`](#rewinding-the-conversation)を使用して以前のターンに戻ります。巻き戻しは、コンパクト化が行うように新しいものを構築するのではなく、既にキャッシュされているプレフィックスに切り詰めます。
212</Tip>206</Tip>
213 207
214<h3 id="accumulating-many-images">208<h3 id="accumulating-many-images">
215 多くの画像の蓄積209 多くの画像の蓄積
216</h3>210</h3>
217 211
218API は、各リクエストが実行できる画像と PDF の数を制限します。現在の数については、API ドキュメントの[リクエスト制限](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits)を参照してください。Claude Code はリクエスト内の画像と PDF の合計サイズもキャップするため、大きなスクリーンショットは小さいものより少ない画像でリミットに達します。212API は、各リクエストが実行できる画像と PDF の数を制限しています。現在の数については、API ドキュメントの[リクエスト制限](https://platform.claude.com/docs/en/build-with-claude/vision#request-limits)を参照してください。Claude Code はリクエスト内の画像と PDF の合計サイズもキャップするため、大きなスクリーンショットは小さいものより少ない画像で制限に達します。
219 213
220次のリクエストがいずれかのリミットを超える場合、Claude Code は送信する最も古い画像と PDF のバッチを削除します。これにより、再度削除する必要があるまでさらに多くのスペースが確保されます。Claude はもう削除された画像を見ることができません。Claude が再度それらの 1 つが必要な場合は、再度共有してください。214次のリクエストがいずれかの制限を超える場合、Claude Code は送信する内容から最も古い画像と PDF のバッチを削除します。これにより、再度削除する必要があるまでさらに多くの余地が生まれます。Claude はもう削除された画像を見ることができません。Claude がそれらの 1 つを再度必要とする場合は、再度共有してください。
221 215
222画像を削除すると、それらを保持していたメッセージが変更されるため、次のリクエストはそれらのメッセージの最も早いものから会話を再処理します。Claude Code はバッチごとに削除するため、新しいスクリーンショットごとに 1 つではなく、バッチごとに 1 つの遅いターンが表示されます。216画像を削除すると、それらを保持していたメッセージが変更されるため、次のリクエストはそれらのメッセージの最も早いものから会話を再処理します。Claude Code はバッチごとに削除するため、新しいスクリーンショットごとに 1 つではなく、バッチごとに 1 つの遅いターンが表示されます。
223 217
225 Claude Code のアップグレード219 Claude Code のアップグレード
226</h3>220</h3>
227 221
228新しい Claude Code バージョンは通常、システムプロンプトまたはツール定義を更新するため、アップグレード後の最初のリクエストはキャッシュを最初から再構築します。[自動更新](/docs/ja/setup#auto-updates)は新しいバージョンをバックグラウンドでダウンロードしますが、次の起動時に適用され、セッション中には適用されません。そのため、セッション中のサプライズではなく、再起動後のキャッシュなしの最初のターンとして表示されます。`DISABLE_AUTOUPDATER=1` を設定して、アップグレードが適用されるタイミングを制御します。222新しい Claude Code バージョンは通常、システムプロンプトまたはツール定義を更新するため、アップグレード後に開始する最初の会話はトップからキャッシュを構築します。[自動更新](/docs/ja/setup#auto-updates)は新しいバージョンをバックグラウンドでダウンロードしますが、次の起動時に適用され、セッション中には決して適用されません。そのため、セッション中の驚きではなく、再起動後のキャッシュされていない最初のターンとしてこれが表示されます。`DISABLE_AUTOUPDATER=1` を設定して、アップグレードが適用されるタイミングを制御します。
229 223
230<Note>224<Note>
231 [セッションを再開](/docs/ja/sessions#resume-a-session)すると、履歴が異なるシステムプロンプトの後ろに配置されるため、キャッシュヒットなしで会話履歴全体が再処理されます。コストは再開された会話の長さに応じてスケーリングされるため、長いセッションに戻る最初のターンは、送信する最も高価なリクエストになる可能性があります。225 アップグレード前に開始した会話を再開するコストについては、[セッションの再開](#resuming-a-session)を参照してください。
232</Note>226</Note>
233 227
234<h2 id="actions-that-keep-the-cache">228<h2 id="actions-that-keep-the-cache">
235 キャッシュを保持するアクション229 キャッシュを保持するアクション
236</h2>230</h2>
237 231
238これらのアクションは、会話の最後に追加するか、リクエストにまったく触れません。CLAUDE.md の編集など、一部は、`/clear`、`/compact`、または再起動を待つ理由でもあります。232これらのアクションは、会話の末尾に追加されるか、リクエストにまったく触れません。CLAUDE.md の編集など、その中には `/clear`、`/compact`、または再起動までキャッシュを保持する理由が、変更が実行中のセッションに到達しない理由と同じであるものもあります。
239 233
240* [リポジトリ内のファイルの編集](#editing-files-in-your-repository)234* [リポジトリ内のファイルを編集する](#editing-files-in-your-repository)
241* [セッション中の CLAUDE.md の編集](#editing-claude-md-mid-session)235* [セッション中に CLAUDE.md を編集する](#editing-claude-md-mid-session)
242* [権限モードの変更](#changing-permission-mode)236* [権限モードを変更する](#changing-permission-mode)
243* [スキルとコマンドの呼び出し](#invoking-skills-and-commands)237* [出力スタイルを変更する](#changing-output-style)
244* [`/recap` の実行](#running-%2Frecap)238* [スキルとコマンドを呼び出す](#invoking-skills-and-commands)
245* [会話の巻き戻し](#rewinding-the-conversation)239* [`/recap` を実行する](#running-%2Frecap)
246* [サブエージェントの生成](#subagents-and-the-cache)240* [会話を巻き戻す](#rewinding-the-conversation)
241* [サブエージェントを生成する](#subagents-and-the-cache)
247 242
248<h3 id="editing-files-in-your-repository">243<h3 id="editing-files-in-your-repository">
249 リポジトリ内のファイルの編集244 リポジトリ内のファイルを編集する
250</h3>245</h3>
251 246
252ファイルコンテンツがコンテキストに入るのは Claude が読むときだけであり、読み取りは会話に追加されます。Claude が以前読んだファイルを編集しても、履歴内の以前の読み取りは遡及的に変更されません。代わりに、Claude Code はファイルが変更されたことを示す `<system-reminder>` を追加し、必要に応じて Claude が再度読み取ります。247ファイルの内容は Claude がそれらを読むときにのみコンテキストに入り、読み取りは会話に追加されます。Claude が以前読んだファイルを編集しても、履歴内の以前の読み取りは遡及的に変更されません。代わりに、Claude Code はファイルが変更されたことを示す `<system-reminder>` を追加し、必要に応じて Claude がそれを再度読み取ります。
253 248
254<h3 id="editing-claude-md-mid-session">249<h3 id="editing-claude-md-mid-session">
255 セッション中の CLAUDE.md の編集250 セッション中に CLAUDE.md を編集する
256</h3>251</h3>
257 252
258プロジェクトルートとユーザーレベルの CLAUDE.md ファイルはセッション開始時に 1 回読み取られ、メモリに保持されます。セッション中に編集してもキャッシュは無効になりませんが、編集も適用されません。Claude はセッション開始時に読み込まれたバージョンで作業を続けます。新しいコンテンツは次の `/clear`、`/compact`、または再起動時に読み込まれます。253プロジェクトルートとユーザーレベルの CLAUDE.md ファイルはセッション開始時に 1 回読み取られ、メモリに保持されます。セッション中にそれらを編集してもキャッシュは無効化されませんが、編集も適用されません。Claude はセッション開始時に読み込まれたバージョンで動作し続けます。新しいコンテンツは次の `/clear`、`/compact`、または再起動時に読み込まれます。
259 254
260[サブディレクトリ内のネストされた CLAUDE.md ファイル](/docs/ja/memory)と[`paths:` frontmatter を持つルール](/docs/ja/memory#path-specific-rules)は、Claude が最初に一致するファイルを読むときに後で読み込まれます。読み込まれる前に編集すると、有効になります。読み込まれた後、コンテンツは会話履歴の一部であるため、セッション中の編集は遡及的に変更されません。255[サブディレクトリ内のネストされた CLAUDE.md ファイル](/docs/ja/memory)と[`paths:` frontmatter を持つルール](/docs/ja/memory#path-specific-rules)は後で、Claude が最初に一致するファイルを読むときに読み込まれます。読み込まれる前にそれを編集すると、実際に効果があります。読み込まれた後、コンテンツは会話履歴の一部であるため、セッション中の編集は遡及的にそれを変更しません。
261 256
262<h3 id="changing-permission-mode">257<h3 id="changing-permission-mode">
263 権限モードの変更258 権限モードを変更する
264</h3>259</h3>
265 260
266[権限モード](/docs/ja/permission-modes)間の切り替え(Manual から編集受け入れへなど)は、システムプロンプトまたはツール定義を変更しないため、モード変更はキャッシュセーフです。例外は、[`opusplan`](/docs/ja/model-config#opusplan-model-setting) モデル設定を使用した Plan Mode です。これは、Plan Mode に入るか出るときにモデルを Opus と Sonnet の間で切り替えます。これにより、モード切り替えは[モデル切り替え](#switching-models)になります。261[権限モード](/docs/ja/permission-modes)(手動から編集を受け入れるなど)を切り替えても、システムプロンプトやツール定義は変更されないため、モード変更はキャッシュセーフです。例外は [`opusplan`](/docs/ja/model-config#opusplan-model-setting) モデル設定を使用した plan mode です。これはプラン モードに入るか終了するときに、モデルを Opus と Sonnet の間で切り替えます。これにより、モード切り替えは[モデル切り替え](#switching-models)になります。
262
263<h3 id="changing-output-style">
264 出力スタイルを変更する
265</h3>
266
267セッション中に `/config` または `outputStyle` 設定で[出力スタイル](/docs/ja/output-styles)を切り替えると、Claude は次のメッセージから新しいスタイルを使用します。Claude Code は新しいスタイルの指示をメッセージとして会話に配信するため、そのリクエストはシステムプロンプトと以前の会話をキャッシュから読み取ります。
268
269v2.1.251 より前では、セッション中のスタイル切り替えはキャッシュを保持していましたが、`/clear` を実行するか新しいセッションを開始するまで適用されませんでした。
267 270
268<h3 id="invoking-skills-and-commands">271<h3 id="invoking-skills-and-commands">
269 スキルとコマンドの呼び出し272 スキルとコマンドを呼び出す
270</h3>273</h3>
271 274
272[スキル](/docs/ja/skills)と[コマンド](/docs/ja/commands)は、呼び出しポイントでユーザーメッセージとして命令を注入します。会話内の以前のものは何も変わりません。frontmatter で `model` を指定するスキルまたはコマンドは、そのターンの[モデル切り替え](#switching-models)になる可能性があります。275[スキル](/docs/ja/skills)と[コマンド](/docs/ja/commands)は、呼び出しポイントでユーザーメッセージとして指示を挿入します。会話内の以前のものは何も変わりません。frontmatter で `model` という名前を付けたスキルまたはコマンドは、そのターンの[モデル切り替え](#switching-models)になる可能性があります。
273 276
274<h3 id="running-/recap">277<h3 id="running-/recap">
275 `/recap` の実行278 `/recap` を実行する
276</h3>279</h3>
277 280
278[`/recap`](/docs/ja/interactive-mode#session-recap)は、ターミナルに表示するための要約を生成します。`/compact` とは異なり、メッセージ履歴を置き換えるのではなく、コマンド出力として要約を追加するため、キャッシュされたプリフィックスはそのままです。281[`/recap`](/docs/ja/interactive-mode#session-recap)はターミナルに表示するための概要を生成します。`/compact` とは異なり、メッセージ履歴を置き換えるのではなく、コマンド出力として概要を追加するため、キャッシュされたプレフィックスはそのまま残ります。
279 282
280<h3 id="rewinding-the-conversation">283<h3 id="rewinding-the-conversation">
281 会話の巻き戻し284 会話を巻き戻す
282</h3>285</h3>
283 286
284[`/rewind`](/docs/ja/checkpointing)は、会話を以前のターンに切り詰めます。残りの履歴は、その時点でキャッシュが構築されたのと同じコンテンツであり、システムプロンプトとプロジェクトコンテキストレイヤーは変更されないため、次のリクエストは以前のキャッシュエントリにヒットします。それ以降のすべてのターンはそのプリフィックスを通じて読み取られており、元のターンが TTL より長い前であっても、エントリを温かく保ちました。287[`/rewind`](/docs/ja/checkpointing)は会話を以前のターンに切り詰めます。残りの履歴は、その時点でキャッシュが構築されたのと同じコンテンツであり、システムプロンプトとプロジェクトコンテキストレイヤーは変更されないため、次のリクエストは以前のキャッシュエントリにヒットします。それ以降のすべてのターンはそのプレフィックスを読み取っており、元のターンが TTL より長い前であっても、エントリをウォーム状態に保ちました。
288
289会話と一緒にファイルチェックポイントを復元しても、キャッシュに対する個別の効果はありません。ファイルの内容は、[リポジトリ内のファイルを編集する](#editing-files-in-your-repository)と同じように、Claude がそれらを読むときにのみコンテキストに入ります。
290
291<h2 id="resuming-a-session">
292 セッションの再開
293</h2>
294
295[セッションを再開](/docs/ja/sessions#resume-a-session)する場合、Claude Code は会話全体を再度送信し、リクエストはキャッシュから、そのプレフィックスの変更されていない部分で、かつ [キャッシュの有効期限](#cache-lifetime)内にある部分を読み込みます。このページの上部にあるレイヤーテーブルは、各レイヤーで何が変わるかを示しています。
285 296
286会話と一緒にファイルチェックポイントを復元しても、キャッシュに対する個別の効果はありません。ファイルコンテンツがコンテキストに入るのは Claude が読むときだけであり、[リポジトリ内のファイルの編集](#editing-files-in-your-repository)と同じです。297システムプロンプトは [Claude Code のアップグレード](#upgrading-claude-code)後、または再開時に異なる [`--append-system-prompt`](/docs/ja/cli-reference#system-prompt-flags) テキストがある場合に変更されます。デフォルトでは、再開された会話は開始時のシステムプロンプトを保持するため、その履歴は同じプロンプトの背後にあり、会話がコンパクト化されるか新しい会話で変更が有効になります。[再開されたセッションのシステムプロンプトフラグ](/docs/ja/cli-reference#system-prompt-flags-in-resumed-conversations)は `--system-prompt-snapshot off` とベアモードをカバーしており、これらは適用されません。
287 298
288<h2 id="cache-lifetime">299<h2 id="cache-lifetime">
289 キャッシュライフタイム300 キャッシュライフタイム
343 キャッシュスコープ354 キャッシュスコープ
344</h2>355</h2>
345 356
346Claude Code では、キャッシュは事実上 1 つのマシンとディレクトリにスコープされます。システムプロンプトは、作業ディレクトリ、プラットフォーム、シェル、OS バージョン、および自動メモリパスを埋め込むため、異なるディレクトリの 2 つのセッションは異なるプリフィックスを構築し、互いのキャッシュをミスします。これには、同じリポジトリの worktrees が含まれます。各 worktree は独自の作業ディレクトリを持つためです。357Claude Code では、キャッシュは事実上 1 つのマシンとディレクトリにスコープされます。各会話は作業ディレクトリ、プラットフォーム、シェル、OS バージョンを保持し、システムプロンプトは自動メモリパスに名前を付けるため、異なるディレクトリの 2 つのセッションは異なるプリフィックスを構築し、互いのキャッシュをミスします。これには同じリポジトリの worktrees が含まれます。各 worktree は独自の作業ディレクトリを持つためです。
347 358
348同じディレクトリで並行して実行するセッションは、一致するプリフィックスを構築し、互いのキャッシュを読み取ります。順序付きセッションは、起動時の git ステータススナップショットが一致する場合にのみプリフィックスを共有します。システムプロンプトはブランチと最近のコミットもキャプチャするためです。359同じディレクトリで並行して実行するセッションは、一致するプリフィックスを構築し、互いのキャッシュを読み取ります。順序付きセッションは、起動時に取得された git ステータススナップショットが一致する場合にのみプリフィックスを共有します。各会話はそのスナップショットからブランチと最近のコミットも保持するためです。
349 360
350基礎となる API キャッシュはより広いです。キャッシュは組織間で分離され、一部のプロバイダーでは、[組織内のワークスペース間](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching#cache-storage-and-sharing)で分離されます。これらの境界内で、同じモデルとプリフィックスを持つ 2 つのリクエストは同じキャッシュを読み取ります。自動化されたプロセスのフリートを実行する Agent SDK 呼び出し元については、[ユーザーとマシン間でプロンプトキャッシングを改善](/docs/ja/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines)を参照して、システムプロンプトのマシンごとのセクションを抑制し、マシン間でキャッシュを共有します。361基礎となる API キャッシュはより広いです。キャッシュは組織間で分離され、一部のプロバイダーでは、[組織内のワークスペース間](https://platform.claude.com/docs/ja/build-with-claude/prompt-caching#cache-storage-and-sharing)で分離されます。これらの境界内で、同じモデルとプリフィックスを持つ 2 つのリクエストは同じキャッシュを読み取ります。自動化されたプロセスのフリートを実行する Agent SDK 呼び出し元については、[ユーザーとマシン間でプロンプトキャッシングを改善](/docs/ja/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines)を参照して、システムプロンプトのマシンごとのセクションを抑制し、マシン間でキャッシュを共有します。
351 362
382 393
383* **セッションコピー**: [`/fork`](/docs/ja/agent-view#copy-the-session-with-%2Ffork)でコピーしたセッションは、コピーされた会話の最後にメッセージとして分離命令を受け取るため、元の会話が構築したキャッシュはそのままです。394* **セッションコピー**: [`/fork`](/docs/ja/agent-view#copy-the-session-with-%2Ffork)でコピーしたセッションは、コピーされた会話の最後にメッセージとして分離命令を受け取るため、元の会話が構築したキャッシュはそのままです。
384* **コンパクト化**: [会話のコンパクト化](#compacting-the-conversation)で説明されている要約呼び出しは、同じプリフィックス共有アプローチを使用します。395* **コンパクト化**: [会話のコンパクト化](#compacting-the-conversation)で説明されている要約呼び出しは、同じプリフィックス共有アプローチを使用します。
396* **再開されたサブエージェント**: Claude が[サブエージェントを再開](/docs/ja/sub-agents#resume-subagents)する場合、再開実行の最初のリクエストは、元の実行が温めたキャッシュを読み取ることができます。
385* **ワークフローファンアウト**: [ワークフローファンアウト](/docs/ja/workflows#prompt-caching-in-a-fan-out)の同じプリフィックスエージェントでは、Claude Code はデフォルトで最初のエージェント以外をすべて最大 5 秒間保持するため、最初のエージェントがキャッシュしたプリフィックスを読み取ることができます。397* **ワークフローファンアウト**: [ワークフローファンアウト](/docs/ja/workflows#prompt-caching-in-a-fan-out)の同じプリフィックスエージェントでは、Claude Code はデフォルトで最初のエージェント以外をすべて最大 5 秒間保持するため、最初のエージェントがキャッシュしたプリフィックスを読み取ることができます。
386 398
387<h2 id="disable-prompt-caching">399<h2 id="disable-prompt-caching">