Skip to content

原文(日本語に翻訳)

フックの進捗/添付メッセージが parentUuid チェーンを分岐させることで、再開時に SDK セッション履歴が失われる問題を修正しました。

原文(英語)

Fixed SDK session history loss on resume caused by hook progress/attachment messages forking the parentUuid chain

概要

SDK を使用してセッションを再開(resume)する際、フックが生成する進捗メッセージや添付メッセージが parentUuid の追跡チェーンを意図せず分岐させることで、セッション履歴が失われる問題が修正されました。これにより、フックを多用する環境でのセッション再開が安定して動作するようになります。

基本的な使い方

セッションを再開する際、フックを使用していても会話履歴が正しく復元されます。

bash
# セッションを保存して後で再開
$ claude --resume session-id
# 修正後: フックのメッセージによる履歴の欠落が発生しない
# 以前のすべての会話が正しく復元される

実践例

ユースケース: フックを使用したセッションの再開

Stop フックや PostToolUse フックなどを設定している環境でセッションを再開する場合に正しく動作します。

json
// settings.json でフックを設定している環境
{
  "hooks": {
    "Stop": [{"matcher": "", "hooks": [{"type": "command", "command": "echo done"}]}],
    "PostToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "log.sh"}]}]
  }
}
bash
# フック設定がある状態でセッションを作成
$ claude
> 複数のタスクを実行してください
# セッション ID をメモ

# 後で再開
$ claude --resume <session-id>
# 修正後: フックメッセージに関わらず会話履歴が正しく復元される

ユースケース: SDK を使ったプログラムからのセッション再開

Anthropic SDK を使用してプログラムからセッションを再開する場合も同様に修正されます。

python
import anthropic

client = anthropic.Anthropic()

# セッションを再開
response = client.messages.create(
    model="claude-opus-4-5",
    # ... セッション再開パラメータ
)
# 修正後: フックのメッセージが原因の履歴欠落なし

注意点

  • parentUuid は会話の連鎖を追跡するための内部識別子です
  • この問題はフックが進捗メッセージや添付ファイルを生成する場合に特に顕著でした
  • 修正後はフックのメッセージが parentUuid チェーンを妨げないよう内部処理が改善されました

関連情報