Skip to content

原文(日本語に翻訳)

孤立したツール結果で始まる会話を再開する際に発生していた「tool_result ブロックに予期しない tool_use_id が見つかりました」エラーを修正しました

原文(英語)

Fixed "unexpected tool_use_id found in tool_result blocks" error when resuming conversations that start with an orphaned tool result

概要

セッションを再開する際、会話履歴の先頭が「孤立したツール結果」(対応するツール呼び出しが存在しないツール結果ブロック)で始まる場合に「unexpected tool_use_id found in tool_result blocks」エラーが発生していました。これはセッションが特定の状態で中断された場合に起こり得る問題でした。修正後は孤立したツール結果を適切に処理してセッション再開できます。

基本的な使い方

この修正は自動的に適用されます。セッション再開時のエラーが解消されます。

bash
# セッションを再開
claude --resume

# 修正後: 孤立したツール結果があってもエラーなしで再開できる

実践例

孤立したツール結果とは

通常の会話構造:
  [ユーザー]: タスクを実行して
  [Claude]: ツール呼び出し (tool_use_id: "tool_1")
  [ツール結果]: tool_use_id: "tool_1" の結果  ← 対応するツール呼び出しがある

孤立したツール結果:
  [ツール結果]: tool_use_id: "tool_1" の結果  ← 先頭にあり、対応するツール呼び出しがない
  [ユーザー]: ...

問題が発生していたシナリオ

シナリオ: セッション再開時のエラー

1. セッション A を実行中にクラッシュ(tool_use の途中)
2. セッション A を再開
   claude --resume

3. 会話履歴がツール結果ブロックから始まる状態に
   (対応する tool_use ブロックが欠けている)

修正前:
→ "unexpected tool_use_id found in tool_result blocks" エラー
→ セッション再開不可能

修正後:
→ 孤立したツール結果を検出して適切に処理
→ セッションが正常に再開される

セッション履歴のクリーンアップ

bash
# 問題のあるセッションが再開できない場合(修正前)
# セッション履歴を確認して問題を調査
ls ~/.claude/sessions/

# 修正後は自動的に処理されるので手動クリーンアップは不要
claude --resume

注意点

  • 孤立したツール結果はセッションが異常終了した場合に発生することがあります
  • この修正により、さまざまな異常終了パターンからのセッション再開が改善されました
  • 関連する修正として、ツールバッチ途中での中断後のセッション再開修正も同バージョンに含まれています
  • セッションの整合性が保てない場合は、新規セッションで作業を続けることも選択肢です

関連情報