AI時短ラボ
プロダクト· 約18

Claude APIが会話の途中でツールセットを変えられるようになった──プロンプトキャッシュを保ったまま

Anthropicは2026年7月24日、Claude Opus 5の発表と同じ日に「Mid-conversation Tool Changes」というベータ機能を追加しました。会話のターンの合間にツールを追加・削除できる機能で、専用のベータヘッダーを送るだけで有効になります。Claude Fable 5・Mythos 5・Opus 4.8・Opus 5が対象と公式リリースノートに明記されており、Kimi K3が同種の課題に用意している「Dynamic Tool Loading」との比較も交えて確認しました。

Claude APIが会話の途中でツールセットを変えられるようになった──プロンプトキャッシュを保ったまま
執筆・編集:
目次

2026年8月27日、Claude Developer Platform公式リリースノート(platform.claude.com)を実際に開いて確認した内容です。 2026年7月24日のエントリに、次の1文があります(原文と訳)。

"Mid-conversation tool changes are now in beta on Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, and Claude Opus 5: add or remove tools between turns of a conversation while preserving the prompt cache. Include the mid-conversation-tool-changes-2026-07-01 beta header in your requests."

(訳:会話の途中でのツール変更が、Claude Fable 5・Claude Mythos 5・Claude Opus 4.8・Claude Opus 5でベータ提供開始。会話のターンの合間にツールを追加・削除でき、その間プロンプトキャッシュは維持される。リクエストにmid-conversation-tool-changes-2026-07-01ベータヘッダーを含めること)

この日のリリースノートには、同じ日に発表されたClaude Opus 5本体の情報と並んで、この機能が1項目として記載されています。

3行まとめ

  • Claude API上で、会話のターンとターンの間にツールを追加・削除できる「Mid-conversation Tool Changes」がベータ提供開始(2026年7月24日、Claude Opus 5の発表と同日)
  • 対象はClaude Fable 5・Claude Mythos 5・Claude Opus 4.8・Claude Opus 5の4モデル。利用にはmid-conversation-tool-changes-2026-07-01というベータヘッダーが必要
  • この機能の核は「プロンプトキャッシュを維持したまま」ツールセットを変更できる点。従来はツールセットを変えるとキャッシュのプレフィックスが崩れるのが一般的な制約だった

なぜ「プロンプトキャッシュを保ったまま」が重要なのか

多くのLLM APIのプロンプトキャッシュは、リクエストの先頭からどこまでが直前のリクエストと同一かで判定する「プレフィックス一致」方式を採っています。ツールの定義は通常リクエストの先頭付近(システムプロンプトに近い位置)に置かれるため、会話の途中でツールセットを変更すると、そのツール定義が含まれる部分から後ろのキャッシュが丸ごと無効になりやすい、という制約が一般的にあります。

Anthropicのこの機能が「preserving the prompt cache(プロンプトキャッシュを維持したまま)」と明記しているのは、この制約を回避する設計だということを示しています。長時間稼働するエージェント(例えば、序盤は調査系ツールだけを持たせ、途中からファイル編集ツールを解禁する、といった段階的な権限付与を行うエージェント)にとっては、ツールセットの変更のたびにキャッシュがリセットされてコストが跳ね上がる、という事態を避けられることになります。

Kimi K3の「Dynamic Tool Loading」との違い

同時期に、Moonshot AIのKimi K3にも似た課題に対する機能があります。Kimi K3の「Dynamic Tool Loading」という記事で確認した通り、Kimi側は「ツールを最初から全部渡さず、systemメッセージのtoolsフィールドとして会話の途中に追記する」という設計で、既存のプレフィックスキャッシュを壊さないようにしています。

一方、AnthropicのMid-conversation Tool Changesは、リリースノートの1文だけでは「ツールを追加できる」だけでなく「削除できる」とも明記されている点が異なります。Kimi側のドキュメントでは、ツールの動的な「追加」は扱われていますが、既に注入したツールを取り消す「削除」の仕組みについては、当サイトが確認した範囲のページには記載がありませんでした。この「削除」機能がどのようにキャッシュとの整合性を保っているのか(削除したツールの定義がキャッシュ済みプレフィックスに含まれていた場合にどうなるのか)は、今回確認したAnthropic公式リリースノートの1文だけでは分かりません。

使うにはベータヘッダーが必要

公式リリースノートの記載によれば、この機能を使うにはmid-conversation-tool-changes-2026-07-01というベータヘッダーをリクエストに含める必要があります。Anthropicのベータ機能は、こうした専用ヘッダーの送信によってオプトインする方式が一般的で、当サイトが別記事で扱ったFiles API・Agent Skills APIの正式版化でも、正式版になるとこのヘッダーが不要になる(送っても後方互換で動く)という経緯が確認できています。Mid-conversation Tool Changesは本記事の確認時点(2026年8月27日)でまだベータの位置づけであり、正式版化の予定については公式リリースノートに記載がありませんでした。

対象モデルの確認

対象として明記されている4モデル──Claude Fable 5・Claude Mythos 5・Claude Opus 4.8・Claude Opus 5──を見ると、Claude Sonnet 5が含まれていません。専用ガイドページ「Mid-conversation system messages and tool changes」(platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages)を確認すると、この点は明記されていました。

"Mid-conversation tool changes are in beta and require the mid-conversation-tool-changes-2026-07-01 beta header. They are available on Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, and Claude Opus 5, on the Claude API, Amazon Bedrock, and Google Cloud. They are not available on Claude Sonnet 5."

(訳:Mid-conversation tool changesはベータ提供で、mid-conversation-tool-changes-2026-07-01ベータヘッダーが必要。Claude API・Amazon Bedrock・Google Cloud上のClaude Fable 5・Claude Mythos 5・Claude Opus 4.8・Claude Opus 5で利用可能。Claude Sonnet 5では利用できない)

リリースノートの1文だけでは「単に記載漏れなのか」判断できませんでしたが、専用ガイドページで明示的に「not available on Claude Sonnet 5」と書かれているのを確認できたため、Sonnet 5がこのベータの対象外であることは事実として確定できます。あわせて、Amazon BedrockとGoogle Cloud上のClaude APIでも同じ4モデルで使えることも、このページで初めて確認できました(release notesの1文にはBedrock/Google Cloudへの言及がありませんでした)。

実際の構文:tools配列は変えず、systemメッセージ内のtool_addition/tool_removalで操作する

専用ガイドページには、具体的なリクエスト構文も記載されていました。直感に反する設計で、「会話の途中でツールセットを変える」といっても、リクエストのtools配列そのものを書き換えるわけではありません。

"declare the full tool set in tools up front, then use tool_addition and tool_removal blocks to offer a tool to the model, or withdraw it, from a specific point in the conversation onward. The tools array itself never changes, so the cached prefix stays intact."

(訳:toolsにツールセット全体を最初に宣言しておき、そこからtool_additiontool_removalブロックを使って、会話の特定の時点からモデルにツールを提供したり取り下げたりする。tools配列そのものは変化しないため、キャッシュされたプレフィックスはそのまま保たれる)

つまり仕組みはこうです。

  • tool_addition / tool_removalは、role: "system"のメッセージのcontent配列に入れるコンテンツブロックであり、textブロックと混在させられる
  • 各ブロックのtoolフィールドは、ツールを新たに定義するのではなく{"type": "tool_reference", "name": "..."}の形でtools配列内の既存ツールを名前で参照する。MCPコネクタ経由のツールはmcp_tool_referenceserver_name+name)で個別に、mcp_toolset_referenceserver_name)でサーバー単位まとめて参照できる
  • tools配列で宣言されていない名前を参照すると400エラーになる
  • ツールはdefer_loading: trueを付けて宣言しない限り会話の最初から提供される。defer_loading: trueを付けたツールは、tool_additionで表面化させるまで隠しておける
  • tool_additionは、直前のtool_removalで取り下げたツールを再び提供し直すのにも使える

この設計により、記事執筆時点で残っていた「ツール定義自体が書き換わるならキャッシュが壊れるのでは」という疑問は解けました。tools配列は最初の宣言のまま固定し、あとから追加・削除する情報は別チャネル(systemメッセージ)に載せる、という構造そのものがキャッシュ維持の根拠になっています。

Mid-conversation system messagesとの違い

このガイドページは、実は「Mid-conversation tool changes」単体のページではなく、2026年7月15日にリリースされた別機能「Mid-conversation system messages」(systemフィールドの内容を会話途中で追記できる機能)と同じページで解説されていました。両者は同じrole: "system"メッセージという土台を共有しつつ、対象が異なります。

項目 Mid-conversation system messages Mid-conversation tool changes
リリース日 2026年7月15日 2026年7月24日(Opus 5と同日)
ベータヘッダー 不要 必要(mid-conversation-tool-changes-2026-07-01
変更対象 上部systemフィールドの指示内容 tools配列内のツールの提供/非提供
対象モデル Fable 5 / Mythos 5 / Opus 4.8 / Opus 5 同左
Sonnet 5 非対応(上部systemフィールドを使う) 非対応
配置場所 role:"system"メッセージのcontenttextブロック等) 同じrole:"system"メッセージ内のtool_addition/tool_removalブロック

出典: platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages(2026年8月27日確認)

Mid-conversation system messagesの方は2026年7月15日リリース時点でベータヘッダー不要と案内されており、リリースノートには「This corrects earlier availability notes.(これは以前の提供状況に関する記載を訂正するものです)」という一文も添えられていました。ツール変更機能は7月24日にOpus 5と同時公開された、より新しい機能という位置づけです。

配置ルールと「途中に挟めない場所」

ガイドページの「Limitations」節には、systemメッセージ(=tool_addition/tool_removalもこれに含まれる)を置ける場所の制約も書かれています。

"A system message cannot be the first entry in messages. [...] A system message must immediately follow a user turn (including a user turn that carries tool_result blocks) or an assistant turn ending in a server tool result, and must precede an assistant turn or end the array. It cannot sit between a tool_use block and its tool_result. Placing it elsewhere returns a 400 error."

(訳:systemメッセージをmessagesの先頭には置けない。systemメッセージはuserのターン(tool_resultブロックを含むものも可)か、サーバー側ツールの結果で終わるassistantのターンの直後に置く必要があり、assistantのターンの前か配列の末尾に来る必要がある。tool_useブロックとそのtool_resultの間には置けない。それ以外の場所に置くと400エラーになる)

つまり、モデルがツールを呼び出して(tool_use)、その結果(tool_result)が返ってくる一往復の途中にツール変更を割り込ませることはできず、そのやり取りが完結した後でなければtool_addition/tool_removalを挟めません。

tool_additiontool_removal付きリクエストは自分では送っていない

専用ガイドページを読むことで、当初「わからなかった」としていた具体的な構文・Sonnet 5の非対応・Bedrock/Google Cloudでの提供状況は確認できました。一方で、次の点は本記事の情報源(release notesとガイドページのテキスト)だけでは確認できていません。

  • 実際にAPIキーを使ってtool_addition/tool_removal付きリクエストを送り、レスポンスやキャッシュ使用量(cache_read_input_tokens等)がドキュメント通りになるかは、本記事の執筆時点で自分では検証していません
  • defer_loading: trueを付けたツールをモデルが実際にどう扱うか(例えばツール一覧に見えない状態でモデルがそのツールを呼ぼうとした場合の挙動)は、ガイドページに具体的な記述がなく確認できていません
  • Kimi K3の「Dynamic Tool Loading」が同じ問題をどんな内部実装で解決しているかはMoonshot AI側のドキュメントに技術的な詳細がなく、両者のキャッシュ維持の仕組みを実装レベルで比較することはできていません
  • この機能がベータから正式版になる時期は、今回確認した情報源のいずれにも記載がありませんでした

関連記事

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事

Anthropic公式ドキュメントの圧縮(compaction)フロー図
プロダクト09.18読了12

Claude APIに「任意のタイミングで会話を圧縮する」オンデマンド圧縮(ベータ)──署名付きの要約ブロックを返し、直近の会話は原文のまま残せる。しきい値型との違い、課金の見方、失敗時の挙動

出典 ─ Anthropic公式ドキュメント(しきい値型とオンデマンド型・2026-09-17取得)
Claude Codeの「プロジェクト」が再設計──目標を渡すと、コーディネーターがスレッド(=クラウドのClaude Codeセッション)に仕事を割り振り、並列でPRを開いて結果を組み立てる。9月17日からPro・Maxの一部でベータ、既存プロジェクトはそのままの記事画像
プロダクト09.20読了7

Claude Codeの「プロジェクト」が再設計──目標を渡すと、コーディネーターがスレッド(=クラウドのClaude Codeセッション)に仕事を割り振り、並列でPRを開いて結果を組み立てる。9月17日からPro・Maxの一部でベータ、既存プロジェクトはそのまま

出典 ─ Anthropic公式ブログ(2026年9月17日・9月18日取得)
AI-Native SDLCとは──Anthropicが「コードの80%をClaudeが書く」現場から逆算した開発フローの記事画像
活用09.01読了22

AI-Native SDLCとは──Anthropicが「コードの80%をClaudeが書く」現場から逆算した開発フロー

出典 ─ The AI-Native SDLC pla
Dynamic Workflowsとは──JavaScriptスクリプトで数百のsubagentをオーケストレーションする仕組みの記事画像
活用09.02読了15

Dynamic Workflowsとは──JavaScriptスクリプトで数百のsubagentをオーケストレーションする仕組み

出典 ─ Orchestrate subagents
SendMessage/ListAgentsの中身──Claude Codeのセッション同士は何をどこまで送り合えるかの記事画像
活用09.04読了13

SendMessage/ListAgentsの中身──Claude Codeのセッション同士は何をどこまで送り合えるか

出典 ─ Message your other Cla
Claude Agent SDKを『エディタの共通言語ACP』に翻訳する──Zed製アダプタが対応する機能を数えてみたの記事画像
検証09.04読了13

Claude Agent SDKを『エディタの共通言語ACP』に翻訳する──Zed製アダプタが対応する機能を数えてみた

出典 ─ zed-industries/claude-
Claude APIの「computer use」がベータを卒業──新設の「browser use」との違いを公式リリースノートで切り分けるの記事画像
検証09.05読了12

Claude APIの「computer use」がベータを卒業──新設の「browser use」との違いを公式リリースノートで切り分ける

出典 ─ Claude Developer Platf
Claude発の「Skills」がベンダー中立の標準規格になっていた──agentskills.ioを実際に開いて確認するの記事画像
検証09.06読了10

Claude発の「Skills」がベンダー中立の標準規格になっていた──agentskills.ioを実際に開いて確認する

出典 ─ Agent Skills Overview(