原文(日本語に翻訳)
- フックに関する複数の問題を修正:再開/フォークされたセッションで
transcript_pathが誤ったディレクトリを指す問題、設定書き込みのたびにエージェントのpromptが settings.json から黙って削除される問題、PostToolUseのブロック理由が2回表示される問題、非同期フックがbashのread -rでstdinを受信できない問題、バリデーションエラーメッセージがバリデーションに失敗する例を表示する問題
原文(英語)
- Fixed several hooks issues:
transcript_pathpointing to the wrong directory for resumed/forked sessions, agentpromptbeing silently deleted from settings.json on every settings write, PostToolUse block reason displaying twice, async hooks not receiving stdin with bashread -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へのアップデートを強く推奨します