Skip to content

原文(日本語に翻訳)

  • フックに関する複数の問題を修正:再開/フォークされたセッションで transcript_path が誤ったディレクトリを指す問題、設定書き込みのたびにエージェントの prompt が settings.json から黙って削除される問題、PostToolUseのブロック理由が2回表示される問題、非同期フックがbashの read -r でstdinを受信できない問題、バリデーションエラーメッセージがバリデーションに失敗する例を表示する問題

原文(英語)

  • Fixed several hooks issues: transcript_path pointing to the wrong directory for resumed/forked sessions, agent prompt being silently deleted from settings.json on every settings write, PostToolUse block reason displaying twice, async hooks not receiving stdin with bash read -r, and validation error message showing an example that fails validation

概要

Claude Codeのフック機能に関する5つの問題がまとめて修正されました。セッションの再開やフォーク時のトランスクリプトパスの不正、設定書き込み時のエージェントプロンプト消失、PostToolUseブロック理由の重複表示、非同期フックのstdin受信問題、バリデーションエラーメッセージの矛盾が解消されています。フック機能を利用しているユーザーにとって重要なアップデートです。

基本的な使い方

フックは settings.json で定義します。修正後は以下の設定が正しく動作します:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "command": "echo \"Tool used: $TOOL_NAME\"",
        "matcher": "Bash"
      }
    ]
  }
}

実践例

transcript_pathの正しい参照

再開やフォークされたセッションでもトランスクリプトパスが正しく設定されます:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "command": "echo $TRANSCRIPT_PATH >> /tmp/hook-log.txt",
        "matcher": "Bash"
      }
    ]
  }
}

修正前は再開/フォーク後のセッションで transcript_path が元のセッションのディレクトリを指していましたが、修正後は正しいディレクトリを参照します。

エージェントプロンプトの保持

settings.json にエージェントの prompt を設定している場合、設定の書き込み操作(例: /config での変更)を行ってもプロンプトが消えなくなりました:

json
{
  "agent": {
    "prompt": "カスタムエージェントプロンプト"
  },
  "hooks": {
    "PreToolUse": [
      {
        "command": "validation-script.sh"
      }
    ]
  }
}

非同期フックでのstdin受信

非同期フックでbashの read -r を使用してstdinからデータを受信できるようになりました:

bash
#!/bin/bash
# hook-script.sh
read -r input_data
echo "Received: $input_data" >> /tmp/hook-output.log

注意点

  • transcript_path の修正は、再開(--continue)やフォークされたセッションに影響します
  • エージェントの prompt が消えていた場合、設定ファイルを再度確認・復元する必要があります
  • PostToolUseのブロック理由の重複表示は視覚的な問題で、機能には影響していませんでした
  • バリデーションエラーメッセージの修正により、エラー時の指示がより正確になりました
  • フックを多用している場合はv2.1.72へのアップデートを強く推奨します

関連情報