tool call could not be parsedエラー — Claude Codeの原因と対処法
「The model's tool call could not be parsed(retry also failed)」の原因の報告と、v2.1.251で変わったリトライの挙動、今すぐ試せる対処法をまとめます。
このTipsでできること
Claude Codeで作業中に「The model's tool call could not be parsed (retry also failed).」というメッセージが出て、実行中のタスクが急に止まることがあります。この記事では、エラーの正体と、GitHub Issueに集まった報告からわかる発生条件、v2.1.251で変わったリトライの挙動、そして今すぐ試せる対処法をまとめます。
「tool call could not be parsed」とは何を意味するエラーか
Claude Codeは、モデルの応答からEditやBashなどのツール呼び出しを読み取り、実際にコマンドを実行します。この読み取り(パース)に失敗すると、Claude Codeは次のメッセージを表示します。
The model's tool call could not be parsed (retry also failed).
Issue #63875の報告によれば、発生時の挙動は次の通りです。モデルがツール呼び出しを試みると、コマンドは実行されずこのメッセージが表示され、実行中だった行動はそのまま中断されます。内部で自動的に再試行が行われますが、その再試行も失敗するため、そのターンは失われます。ユーザーは同じ依頼を送り直す必要があります。報告者の環境はClaude Code v2.1.158、モデルはOpus 4.8(1M context)、OSはWindows 11 Proでした。決まった再現手順はなく、間欠的に多くのセッションで繰り返し起きると報告されています。
内部で何が壊れているのか
Issueには、より踏み込んだ観察を書いたコメントも付いています。あるコメントによれば、壊れたツール呼び出しには共通した形があります。正しい開始タグの代わりに、無関係な短いトークン(多くはcountという語)が単独の行として現れ、続く<invoke name="...">から本来の名前空間の接頭辞が欠落しているというものです。ハーネス側のパーサーは決まった開始シーケンスを探すため、これを見つけられず「parsedできなかった」と判定し、そのブロックはツール呼び出しではなく単なるテキストとして扱われる、という説明です。これはあくまで一利用者による観察であり、Anthropicの公式な原因説明ではない点に注意してください。
同じコメントは、発生しやすい条件にも触れています。長いターンほど後半で失敗が集中しやすいこと、直前の文脈に特殊文字が多いほど起きやすいことです。具体例として、非ASCII文字、入れ子になった引用符、シェルのエスケープ、base64のブロックなどが挙げられています。さらに、失敗したツール呼び出しのブロックは会話履歴に保存されないため、--debugやトランスクリプトの出力を見ても壊れた生のペイロードは残っていないという指摘もあります。デバッグ目的でログを探しても手がかりが出てこないのはこのためです。
v2.1.251でリトライの中身が変わった
Issueが報告された時点(v2.1.158〜v2.1.160)では、内部の再試行そのものも失敗する状態が続いていました。Claude Codeの公式changelogを確認すると、v2.1.251(2026年8月28日)で次の改善が入っています。
Improved retry when the model's tool call is malformed: the broken output is now dropped from the retry context, including on Bedrock, Vertex, and Foundry.
| 項目 | v2.1.251より前 | v2.1.251以降 |
|---|---|---|
| リトライ時の文脈 | v2.1.251より前壊れた出力がそのまま残る | v2.1.251以降壊れた出力を除外してリトライ |
| 対象プロバイダー | v2.1.251より前記載なし | v2.1.251以降Bedrock・Vertex・Foundryでも適用(changelog明記) |
changelogの文言を素直に読むと、以前は壊れた出力がリトライの際にも文脈に残っていたため、モデルが同じ壊れ方をもう一度繰り返しやすかったと考えられます。壊れた出力を文脈から取り除いたことで、再試行の際にモデルが同じ形式ミスを引きずりにくくなったという変更です。この改善はClaude Code v2.1.251の一部として提供されています。
なお、この再試行はCLAUDE_CODE_MAX_RETRIESなどの環境変数が制御する再試行とは別の仕組みです。公式のエラーガイドによれば、これらの環境変数はサーバーエラーや通信断など、API呼び出しそのものが失敗したときの再試行回数や待機時間を調整するものです。今回のツール呼び出しのパース失敗はAPI呼び出し自体は成功しており、返ってきた応答の読み取り段階でつまずくため、これらの環境変数を変更しても挙動は変わりません。
Issue本文の「Expected behavior」欄では、パースに失敗した場合はハーネスが優雅に復旧するか、少なくとも実行可能な形の明確なメッセージを出して黙って行動を落とさないでほしい、という要望が書かれています。v2.1.251の改善は前者の方向、つまり復旧しやすくする側の変更にあたります。
今すぐ確認したい対処法
- バージョンを確認しv2.1.251以降に上げる。
claude --versionで現在のバージョンを確認し、古ければclaude updateで更新します。上記の改善はこのバージョン以降にのみ含まれます。 - エラーが出たら、まず同じ依頼をそのまま送り直す。Issueの報告では、内部の再試行が失敗した後もユーザーが同じ依頼を送り直して作業を続けています。
- 長い会話や特殊文字の多いやり取りが続いたら
/compactを検討する。報告と相関があるとされる条件を踏まえた予防策で、効果を保証するものではありません。 - 繰り返す場合は
/feedbackで報告する。Claude Code内で/feedbackを実行するとトランスクリプトと説明をAnthropicに送信でき、GitHub Issueの下書きも作成できます(送信には認証が必要です)。 - 既存のIssueを検索してから新規報告する。
github.com/anthropics/claude-code/issuesで同じメッセージを検索し、重複報告を避けます。
claude --version
claude update使い分け早見表
| 状況 | 対応 |
|---|---|
| v2.1.251より前のバージョンを使っている | 対応まずclaude updateで更新する |
| v2.1.251以降でも稀に発生する | 対応同じ依頼を送り直す |
| 長いターンの後半に集中して起きる | 対応/compactや依頼の分割を試す(予防策、確実な回避策ではない) |
| デバッグ用に壊れたペイロードを確認したい | 対応--debugやトランスクリプトには残らないため/feedbackで報告する |
似た名前のエラーと混同しない
Claude Codeの公式エラー一覧には、API Error: 400 due to tool use concurrency issuesのように「tool use」という語を含む別系統のエラーも載っています。こちらはAPI側で会話履歴のtool_use・tool_result・thinkingブロックの並びが不整合になったときに出るエラーで、/rewindで壊れたターンより前のチェックポイントに戻ることが公式の対処法です。今回扱う「tool call could not be parsed」は、API側の整合性エラーではなく、Claude Code側がモデルの応答を読み取る段階でのパース失敗という点で仕組みが異なります。両者は英語表現が似ているため、エラーメッセージ全文を確認してから対処法を選んでください。長時間実行されるMCPツール呼び出しが自動的にバックグラウンド化される仕組みの変更も別にあり、詳しくはMCPの長時間ツール呼び出しが自動でバックグラウンド化する仕組みにまとめています。
認証周りにも文言が紛らわしいエラーメッセージがあります。「Could not resolve auth method」や「Could not load credentials」は、今回のツール呼び出しのパース失敗とは無関係の別エラーです。
よくある質問
このエラーが出ると会話全体がやり直しになりますか
Issueの報告によれば、失われるのは失敗した1つの行動だけで、その依頼を送り直せば続行できます。なお、このIssueは「duplicate」ラベルが付いた状態でcloseされているため、最新の状況を追うにはリンク先の関連Issueも確認するとよいでしょう。
特定のモデルで多いという報告はありますか
Issueのコメントには「Sonnetでは問題なく動く」という報告が1件ありますが、Anthropicが公式にモデル別の発生率を明らかにしているわけではありません。Issueのラベルにはarea:modelが付いており、モデルの出力形式に起因する分類として扱われていることは確認できます。
MCPのツールが見つからないという別のエラーが出ることもありますか
はい、「MCP tool not found」は今回とは別の原因(--permission-prompt-toolの設定)で起きるエラーです。メッセージの文言が違うので見分けられます。
まとめ
「The model's tool call could not be parsed (retry also failed).」は、モデルが返したツール呼び出しをClaude Codeが読み取れなかったときに出るメッセージで、該当する行動だけが中断されます。GitHub Issueの報告では、長いターンや特殊文字の多い文脈で起きやすいという相関が指摘されていますが、確定した再現条件ではありません。v2.1.251で、壊れた出力を除外してリトライする改善が入り、Bedrock・Vertex・Foundryでも適用されることがchangelogに明記されています。まずはclaude --versionでバージョンを確認して古ければ更新し、エラーが出た場合は依頼を送り直すことが基本的な対処になります。頻発する場合は/feedbackで報告し、公式の記録に残すことも有効です。