技術 約2分で読めます

Claude Code Webでセッションが壊れてファイルを失った話

今作ったものをコミットしてプッシュしてくれ。それだけの依頼だった。

Claude Code Webで記事を書かせて、最後にgit commitとpushを頼んだら突然エラーが出てセッションが停止した。

API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"messages.3.content.5: thinking or redacted_thinking blocks in the latest assistant message cannot be modified. These blocks must remain as they were in the original response."},"request_id":"r...

Web版にはCLI版の /clear コマンドもない。何もできないまま、書かせた記事は消えた。

エラーの原因

このエラーはextended thinking(深い思考モード)使用時に発生する。

Claudeはユーザーへの応答前に内部で「思考」を行い、その内容をキャッシュしている。長い会話の中でこのキャッシュに不整合が起きると、「思考ブロックが変更された」と判定されてエラーになる。

発生しやすい条件:

  • 長時間の会話セッション
  • ファイル操作や複数ツール呼び出しが連続した後
  • 複雑なタスクの途中

Anthropic側の問題なので、ユーザー側で完全に防ぐことはできない。

対処法

CLI版の場合

/clear  # コンテキストをクリア

それでもダメならClaude Codeを再起動(ターミナルを閉じて開き直す)。

Web版の場合

できることはほぼない。

  • ブラウザをリロード(F5)して新しい会話を開始
  • 別のチャットを新規作成して続きをやる
  • しばらく待つ(サーバー側の一時的な問題の可能性)

Web版は /clear コマンドが使えないため、セッションが壊れたら祈るしかない。

ファイルは回収できるか

結論: できない

新しいセッションを開いて以下を確認した:

  • /mnt/user-data/outputs/ → 存在しない
  • ~/.claude/projects/ → 現在のセッションログ(jsonl)のみ
  • git stash → 空
  • working tree → clean

Web版のセッションがクラッシュすると、そのセッションのコンテナ環境ごと破棄される。コミット前のファイルは回収不可能。

教訓

頻繁にコミットする。特にAIに書かせた成果物は、確認が終わったらすぐコミット。長い会話の最後にまとめてコミットしようとすると、このエラーで全部失うリスクがある。

Web版より CLI版。CLI版なら /clear で復帰できる可能性がある。Max契約していればCLI版も同じ枠で使える。

長い会話を避ける。新しいチャットで単発指示にする方がセッション破損のリスクが低い。

git操作は手動でやる選択肢も。AIにやらせる意味が薄いタスクは割り切って手動でやった方が信頼性がある場面もある。