Claude Codeで「The model's tool call could not be parsed」が頻発する問題の原因分析と対策

Claude Codeで「The model's tool call could not be parsed」が頻発する問題の原因分析と対策

こんにちは!Qualitegプロダクト開発部です。

Claude Code(CLI)を使った開発中に、次のようなエラーが繰り返し表示されて作業が止まる現象に遭遇しました。

● The model's tool call could not be parsed (retry also failed).

リトライしても直らず、/clear で会話をリセットしても、しばらく作業を続けるとまた同じエラーが出るという状況です。本記事では、実際のセッションログ(jsonl)を解析して特定した原因と、その対策について共有します。

結論から書くと、これは利用者側の設定ミスやコンテキスト枯渇が原因ではなく、

Opus 4.7(1Mコンテキスト)+ extended thinking の組み合わせで発生する、モデル応答側のストリーミングバグ

でした。

現象

エラーが発生した環境は以下のとおりです。

  • Claude Code 2.1.148
  • モデル: Opus 4.7(1M context)
  • プラン: Claude Max
  • セッションの状態: Messages 371.7k / 1M tokens(使用率 約37%、空き58.5%)
  • MCPサーバ: chrome-devtools のみ接続(2.3k tokens)
  • CLAUDE.md: 22.7k tokens
  • auto-compactは未発動

エラーは特定のツール呼び出しに紐づかず、Bash・Edit・MCP(chrome-devtools)など、どの直後でも発生しました。リトライしても同じエラーが返り、最終的に「retry also failed」として停止します。

最初は「会話が長すぎるのでは」「MCPツールが肥大化しているのでは」と疑いましたが、/context を確認すると空き容量が58.5%もあり、その仮説は成立しません。

セッションログから判明した正確な原因

決定的な手がかりは、Claude Code がセッションを保存している jsonl ファイルにありました。

保存場所はOSごとに異なります。

Windows

%USERPROFILE%\.claude\projects\<プロジェクト名>\<session-id>.jsonl

macOS / Linux

~/.claude/projects/<プロジェクト名>/<session-id>.jsonl

<プロジェクト名> の部分は、作業ディレクトリのパスを区切り文字で変換した形式(例: C--Users-foo-projects-myapp) のようにドライブレターやスラッシュが - に置換された名前)になっています。lsdir で該当ディレクトリを確認すれば、最近触ったセッションがファイル名で並んでいます。

このファイルを開き、parseエラーが起きた直前のassistantメッセージを確認すると、以下のような構造になっていました。

このファイルを開き、parseエラーが起きた直前のassistantメッセージを確認すると、以下のような構造になっていました。

{
  "message": {
    "model": "claude-opus-4-7",
    "role": "assistant",
    "content": [
      {
        "type": "thinking",
        "thinking": "",
        "signature": "..."
      }
    ],
    "stop_reason": "tool_use",
    "stop_sequence": null
  }
}

ここに3つの異常が同時に発生しています。

1. content配列が thinking ブロック1つしか含まれていない

通常であれば、thinking のあとに text ブロックや tool_use ブロックが続くはずです。しかしこのレスポンスには thinking だけしか入っていません。

2. thinking の中身が空文字列

"thinking": "" となっており、推論内容そのものが空です。signature フィールドは正しく付いているため、Anthropic API のサーバ側では「thinkingブロックを生成した」ことになっていますが、中身は空です。

3. stop_reason が tool_use なのに tool_use ブロックが存在しない

これが最も致命的です。stop_reason: "tool_use" はモデルが「ツールを呼ぶために停止した」ことを意味するシグナルですが、肝心の tool_use ブロックが content に含まれていません。

Claude Code のparserは「stop_reason が tool_use なら、content に tool_use ブロックがあるはず」という前提でレスポンスを処理します。しかし実際にはそのブロックが存在しないため、The model's tool call could not be parsed というエラーになり、リトライしても同じ壊れた応答が返ってくるため retry also failed となります。

つまり、Claude Code のクライアント側のバグではなく、Anthropic API(モデル)から返ってくるストリーミング応答そのものが不正だったわけです。

関連するAnthropic公式issue

このパターンは、anthropics/claude-code リポジトリの Issue #24662 で報告されている現象とほぼ一致します。同issueでは「ストリーミング中にthinkingブロック間に空のテキスト/thinkingブロックが挿入され、APIに再送できなくなる」事例が報告されています。

また、Mediumの記事「How I Stopped Getting Stream Idle Timeout Errors in Claude Code」(2026年4月)では、Opus 4.7のリリース以降、stream系のエラーが急増しており、4月中旬以降のissueでは Opus 4.7と1M contextバリアントを明示的にトリガーとして名指ししているものが複数あると報告されています。Anthropic側もこれを認識しており、Changelogにはstream-handling周りの修正が継続的に入っています。

原因の整理

事象を整理すると、原因は以下の組み合わせに集約されます。

要因 寄与度
Opus 4.7 の応答ストリーミングのバグ 核心
extended thinking が default で xhigh(thinking-heavy)
1M context バリアント
長期セッション(cache_read 39万トークン超)

特に強調したいのは、コンテキスト使用率や MCP の数は本件の主要因ではなかったという点です。/context で58%空いていてもエラーが発生していたのは、これが入力側の容量問題ではなく、出力側(モデル応答)の構造的なバグだからです。

Opus 4.7 はリリース時にデフォルト effort が xhigh に設定されており、thinkingブロックを多用する設計になっています。1M contextバリアントと組み合わさると、長い入力に対して thinking を吐く際にストリームが崩れやすくなる傾向があるようです。

対策

実際に有効だった対策と、その根拠を順に書きます。

1. effort を下げて thinking を抑える

/effort medium

または low

Opus 4.7 のデフォルトは xhigh です。thinking-heavy な応答ほど、今回のような「空thinkingブロックでstop_reasonがtool_use」のような崩れ方が起きやすくなります。effort を下げることで thinkingの依存度を減らすのが、根本に近い対症療法です。

2. 1M context バリアントを無効化する

set CLAUDE_CODE_DISABLE_1M_CONTEXT=1
claude

公式ドキュメントにも記載のある環境変数です。1M context バリアント特有の出力崩れがあることがGitHub issueで複数報告されているため、これを切ることで再現条件のひとつを潰せます。標準の200kコンテキストの Opus 4.7 に戻ります。

3. 壊れたセッションは resume せず捨てる

このバグの厄介な点は、一度jsonlに壊れたassistantメッセージが書き込まれると、--resume--continue で再開するたびに同じ壊れたメッセージが履歴として再送されることです。Claude Code 側の自動リトライも、サーバ側の応答が同じなら結果も同じです。

exit
claude            # resume/continue は使わない

作業の継続性が必要であれば、CLAUDE.md か履歴ファイル(例: history/HANDOVER.md)に状態をスナップショットしておき、新規セッションで再開する運用にします。

4. Claude Code を最新版に更新する

claude update

2.1.148 → 2.1.150 にはstream-handling周りの修正が継続的に入っています。Anthropic公式もこの種のバグを認識しており、修正版がコンスタントに出荷されているため、なるべく最新を保つのが望ましいです。

5. Anthropicに /bug で報告する

これはAnthropic側のモデル/ストリーミングのバグなので、報告する価値が一番高い対策です。

/bug

session ID と request_id を添えて報告すれば、Anthropic側は該当リクエストのモデル応答を直接調査できます。クライアント設定の問題ではないため、ユーザー側でできる根本対策には限界があり、最終的にはAnthropicの修正を待つしかありません。

効かなかった/効果が薄かった対策

ついでに、最初に試したが効果が薄かった対策も書いておきます。

  • /clear で会話履歴をリセット: 一時的に止まるが、また数ターンで再発。原因がセッション履歴ではなくモデル応答そのものなので根本対策にならない。
  • MCPサーバを切る: 元々2.3k tokensしか使っていなかったので寄与が小さかった。MCPが肥大化している環境では有効。
  • /compact: コンテキスト使用率が低いため意味なし。

まとめ

「The model's tool call could not be parsed (retry also failed)」は、見た目こそ「ツール呼び出しのパースに失敗」ですが、実態はモデル側のレスポンスが構造的に壊れて返ってくる現象でした。

jsonl を確認すると、

  • content に thinkingブロックしかない
  • thinkingが空文字
  • stop_reason: "tool_use" なのに tool_use ブロックが無い

という3点セットが揃っており、これがparserから見ると修復不能です。

今回特定できた現実的な対策は、

  1. /effort medium で thinking を抑える
  2. CLAUDE_CODE_DISABLE_1M_CONTEXT=1 で 1M context を切る
  3. 壊れたセッションは resume せず捨てる
  4. Claude Code を最新版に更新
  5. /bug で Anthropic に報告

の5つです。コンテキストが空いているのにこのエラーが頻発する場合、利用者側を疑うよりも先に、Claude Code のセッションログ(Windowsなら %USERPROFILE%\.claude\projects\、macOS/Linux なら ~/.claude/projects/)配下の jsonl を覗いてみることをおすすめします。アシスタント側の応答が空thinkingブロックになっていれば、本記事のケースと同じ症状です。

最後に補足ですが、この種のバグは Opus 4.7 のリリース以降に増えたもので、Anthropicも認識して継続的に修正を出している状況です。

長期的にはモデル/CLIのアップデートで解消が見込まれます。それまでは effort 設定と1M contextの扱いを調整して、なるべくバグを踏まない運用にするのが現実解になりそうです。

Qualiteg 技術コンサルティング

あなたの Claude Code、もっと活躍してくれます。

AIエージェント前提の開発に、まだ決まった「正解」はありません。私たちは自社の開発で Claude Code を使い倒し、「効くやり方」と「ハマりどころ」を体系化してきました。

何十年もソフトウェアエンジニアリングの第一線に立ってきた当社のエンジニアが本気で取り組んだ、その実戦知見を、まとめてお渡しします。

Claude Code 活用支援を見る →

今回もお読みいただきありがとうございました。

何かお役に立てましたら幸いです

それでは、次回またお会いしましょう!

Read more

Kimi K3 徹底リサーチ — 2.8兆パラメータ、「史上最大のオープンウェイト」は実現するか

Kimi K3 徹底リサーチ — 2.8兆パラメータ、「史上最大のオープンウェイト」は実現するか

こんにちは! 2026年7月16日、中国・北京の Moonshot AI が新しいフラッグシップモデル Kimi K3 を発表し、APIやWebサービスでの提供を開始しました。 総パラメータ2.8兆という規模、100万トークンのコンテキスト、そして 「史上最大のオープンウェイトモデルになる」 という宣言がAI界隈をにぎわせています。 当ブログでは今年5月の記事「Mythos(ミュトス)レベルのオープンモデルはいつ出るのか」で、オープンモデルがクローズドのフロンティアにいつ追いつくのかを予測しました。 Kimi K3 は、まさにその問いに対する現時点での最新の「回答」のひとつです。 一方で、この記事を書いている7月20日時点では、モデルのウェイトも技術レポートもまだ公開されていません。 ただし、XなどSNSかいわいでは、 「ガードレールが弱めで、Fable5では拒否されるようなプロンプトでも対応してくれる」 「すぐにOpus4.8にフォールバックする Fable5より使い勝手がいい」 といった声が散見されており、 米国産のガードレール強め方針にたいして、ガードレール

By Qualiteg プロダクト開発部
PII 非識別化の本質——「誰か」は偽ってよい、「何が起きたか」は偽ってはならない

PII 非識別化の本質——「誰か」は偽ってよい、「何が起きたか」は偽ってはならない

こんにちは!Qualitegプロダクト開発部です! 本日は、PII( Personally Identifiable Information→個人情報)の非識別化に関する内容を解説いたします。 当社ではこれまで、高精度なPII検出技術やLLM利用時の段階的PIIマスキング、PII検出のテスト設計など、個人情報検出とAIセキュリティに関する技術解説をお届けしてきました。 現在、当社では、PII検出マスキング技術「PII-FIエンジン」と、それを活用したPIIのマスキング・非識別化サービス「PII-FI Scan」「PII-FI API」を開発・提供しています。 本記事では、「PIIを検出したあと、それをどう書き換えるか」の設計原則を、1つの例文を試金石にして、私たちが実際のプロダクトで採用している整理をご紹介します。 先にことわっておきますと、本記事でいう「非識別化(de-identification)」は、文書やログを安全に共有・分析するための技術的な加工(個人を特定できないように加工する処理)のお話です。 個人情報保護法上の「仮名加工情報」「匿名加工情報」に該当することを

By Qualiteg プロダクト開発部, Qualiteg AIセキュリティチーム
日本語対応 LLMランキング2026 ~ベンチマーク分析レポート~(7月10日版)

日本語対応 LLMランキング2026 ~ベンチマーク分析レポート~(7月10日版)

はじめに 本レポートは、Nejumi Leaderboard 4のベンチマークデータ(2026/7/10版)に基づいて、日本語対応LLMの性能を総合的に分析したものです。 前回は 2026/3/6 版の分析レポート を公開しましたが、 約4か月ぶりとなる今回も、上位勢の顔ぶれが大きく入れ替わる激動の回となりました! (定期的に最新LLMランキングを更新してまいります。当社のX(旧Twitter)をフォローいただくことで更新情報を受け取り可能です) Nejumi Leaderboard 4は、日本語タスクにおけるLLMの性能を多角的に評価する信頼性の高いベンチマークとして知られています。汎用的言語性能(GLP)とアラインメント(ALT)の2軸で構成され、翻訳・要約・推論・コーディングから毒性・バイアス・真実性まで、幅広い観点をカバーしているのが特徴です。 本分析では、商用APIモデルとオープンモデルの両方を対象に、それぞれの特徴や傾向を詳しく見ていきます。まず、今回の3大トピックを先にご紹介します。 * Claude Opus 4.8がリーダーボード史上初の総合スコア0.8

By Qualiteg プロダクト開発部
Claude Fable5 完全ガイド — 公式ドキュメントから読み解くモデル仕様とClaude Code運用ポイント

Claude Fable5 完全ガイド — 公式ドキュメントから読み解くモデル仕様とClaude Code運用ポイント

こんにちは! 2026年6月に登場した Claude Fable 5 は、公開直後の輸出規制による一時停止、グローバル再展開、そしてサブスクリプション枠からの離脱と、わずか1か月でめまぐるしい動きを見せています。 当ブログでもその時々の状況を追ってきました。 まず全体像は ついに一般公開、Claude Mythos 5 / Fable 5 を実務視点で読み解く で、公開直後の停止騒動は 公開から3日で停止──Fable 5/Mythos 5 をめぐる米政府指令が示した、AI の新しい可用性リスク で、料金と今後の見通しは Claude Fable 5 はこれからどうなる? 経緯・コスト・今後の見通し で扱っています。 本記事は、それらを踏まえた「実務で使うための決定版ガイド」です。 とくに 2026年7月12日(日本時間7月13日)を境にサブスクリプション枠から外れ、使用クレジットを有効化しないと使えなくなる (この期限は当初2026年7月7日とされていましたが、のちに5日間延長されて7月12日になりました。

By Qualiteg プロダクト開発部