PaPoo
cover

Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"messages.7.content.0: unexpected tool_use_id found in advisor_tool_result blocks と出たときに見ること

このエラーは、Claude Code 側のトランスクリプト再構築で advisor_tool_resultserver_tool_use の対応が崩れたときに出ているようです。少なくとも issue 報告では、advisor_tool_result の前に対応する server_tool_use が必要なのに、それが見つからない/ずれる、という形で説明されています。

同じ症状として報告されているのは #62885#89348 です。どちらも 400 エラーの本文に unexpected tool_use_id found in advisor_tool_result blocks が出ています。前者では「advisor を off にしても同じエラーが出た」とあり、後者ではセッション再開ができなくなった、と報告されています。どちらも現時点では open で、解決済みの報告は提示された範囲ではありません。

筆者の環境で取得できた実測値は次の通りです。

[env_summary]
OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-08-27T08:50:32+09:00

ただし、この環境情報だけでは再現条件までは分かりません。今回渡された issue の内容から読み取れるのは、症状の出方が少しずつ違っていても、最後に落ちる形はかなり似ていることです。

#89348 では、タイムスタンプ付きで根本原因が説明されています。Stop hook と system-reminder が、advisor 呼び出しの最中に transcript の途中へ差し込まれ、その結果 server_tool_useadvisor_tool_result の間が割れてしまう、という話です。コメントでは「Claude Code harness race」と表現されています。これが正しいなら、ユーザー操作そのものより、実行中の別イベントが挟まって記録順が崩れることが問題です。

#62885 では、advisor を切っても同じ 400 が出たと書かれています。なので、少なくとも「advisor を使っているから必ず起きる」とは言い切れません。むしろ、同じエラー文に至る別経路がある可能性が残っています。

現時点で、提示された情報だけから「これをやれば直る」と言える手順はありません。少なくとも issue 報告内では恒久的な解決策は示されていません。再開不能になったという報告もあるので、同じ文字列が出た場合は、まずこのクラスの既知問題かどうかを #62885#89348 で照らし合わせるのが現実的です。

見分けるときは、エラー本文に unexpected tool_use_id found in advisor_tool_result blocks が入っているかを見れば足ります。もし入っていれば、単なる API リクエストの文法ミスというより、Claude Code の内部記録の並びが崩れたケースを疑うのが自然です。逆に、この文字列がないなら、同じ 400 でも別件の可能性があります。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-08-27T08:50:32+09:00

参照した Issue(anthropics/claude-code): #62885, #89348

同じ著者の記事