はじめに
OpenClawを日常的に使っていると、ある日突然チャットが応答しなくなることがあります。
画面には赤いエラーメッセージ。
LLM request rejected: messages.27.content.1: `thinking` or `redacted_thinking` blocks
in the latest assistant message cannot be modified.
These blocks must remain as they were in the original response.
何を送っても同じエラーが返ってくる。
意味がわからない。自分で調べようとしたが、エラーメッセージの意味すら掴めない。とりあえずClaude Codeを開いた。
環境
| 項目 | バージョン・内容 |
|---|---|
| OpenClaw | 2026.3.2 |
| OS | macOS (Apple Silicon) |
| モデル | claude-opus-4-6 |
やったこと:Claude Codeに「確認して」と伝えた
私:OPENCLAWなぜ動いていないか確認して
これだけです。正確な問題の言語化も、エラーの説明も、何もしていません。
ここからClaude Codeが勝手に調査を始めました。
Claude Codeとの対話ログ
プロセス・Gateway・cronの確認
Claude CodeはまずホームディレクトリからOpenClaw関連ファイルを探し、順番に確認していきました。
# Claude Codeが実行
$ ps aux | grep openclaw
sonia 1003 0.0 3.0 openclaw-gateway
$ openclaw gateway status
Runtime: running (pid 1003, state active)
RPC probe: ok
Listening: 127.0.0.1:18789
$ openclaw cron list
# 28ジョブ、ほぼokステータス
Claude Code: Gateway、cronジョブ、Discord Botはすべて正常です。問題はチャットのセッション側にある可能性が高いです。ローカルサーバーの状態を見せてもらえますか?
スクリーンショットを渡す
ここで私がローカルサーバーのエラー画面のスクリーンショットを1枚送りました。
Claude Code: 確認しました。セッション agent:main:main でcompaction(会話圧縮)が24回実行されています。会話履歴が7,961行まで膨らんだ結果、圧縮処理の過程で thinking ブロックが変質し、Claude APIが「改変された」と判定してリクエストを全拒否しています。
これがエラーの原因です。
原因の詳細
Claude APIのextended thinking機能では、AIの思考過程が thinking / redacted_thinking ブロックとして会話履歴に保存されます。APIの仕様として、これらのブロックは一切変更してはいけません。
OpenClawのセッションが長くなると自動でcompactionが実行されますが、この処理の過程でthinkingブロックが変更されることがあります。結果、次のリクエスト時に拒否されます。
messages.27.content.1 というのは「27番目のメッセージの2番目のコンテンツブロック」のことで、そこにあるthinkingブロックが元の応答と一致しなくなっていました。
修正の提案と実行
Claude Code: 修正方法を提案します。
- セッションファイルをバックアップにリネーム(データは残します)
- sessions.jsonから該当エントリを削除
実行してよいですか?
私: お願いします
Claude Code: 実行します。
mv ~/.openclaw/agents/main/sessions/89bd0c17-XXXX.jsonl \
~/.openclaw/agents/main/sessions/89bd0c17-XXXX.jsonl.backup
import json
path = '~/.openclaw/agents/main/sessions/sessions.json'
with open(path) as f:
data = json.load(f)
del data['agent:main:main']
with open(path, 'w') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
完了しました。チャット画面を再読み込みしてください。
再読み込みすると新しいセッションが自動作成され、エラーは解消していました。
影響範囲
| 対象 | 影響 |
|---|---|
| Gatewayプロセス | なし(再起動不要) |
| Discord Bot | なし(別セッション) |
| cronジョブ | なし(isolatedモード) |
| 過去の会話ログ | .backupファイルに保持 |
壊れていたのは agent:main:main という1つのセッションだけで、他のすべては正常に動き続けていました。
まとめ
| 項目 | 内容 |
|---|---|
| エラー |
thinking ブロック改変によるAPIリジェクト |
| 根本原因 | 長期セッションのcompactionによるthinkingブロック変質 |
| 対処 | セッションファイルのバックアップ+エントリ削除 |
| 所要時間 | 約3分 |
Claude Codeに「確認して」と言って、スクリーンショットを1枚渡しただけで、プロセス確認→Gateway診断→セッション解析→原因特定→修正実行まで一気に完了しました。
重要なのは、修正コードを自分で書いたわけではないという点です。Claude Codeが原因を特定し、修正方法を提案し、「実行してよいですか?」と確認を取ってから実行した。私がやったのは「確認して」と「お願いします」の2回だけです。
AIエージェントとの協働で大事なのは、問題を正確に言語化することではなく、「とりあえず聞く」ことです。