原文(日本語に翻訳)
PostToolUse向けフックにcontinueOnBlock設定オプションを追加 — trueに設定すると、フックの拒否理由をClaudeにフィードバックしてターンを継続します
原文(英語)
Added hook continueOnBlock config option for PostToolUse — set to true to feed the hook's rejection reason back to Claude and continue the turn
概要
PostToolUseフックにcontinueOnBlockオプションが追加されました。フックが"decision": "block"を返した際、continueOnBlock: trueを設定すると拒否理由をClaudeへのフィードバックとして送り、ターンを継続させることができます。ツールはすでに実行済みのため、ブロックはアクションを取り消すのではなく、Claudeへの通知として機能します。
基本的な使い方
json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "/path/to/validator.sh",
"continueOnBlock": true
}
]
}
]
}
}実践例
コード品質チェックの警告をClaudeにフィードバック
json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "eslint",
"args": ["--format", "compact", "${TOOL_INPUT_FILE_PATH}"],
"continueOnBlock": true
}
]
}
]
}
}フックスクリプトの例(/path/to/validator.sh):
bash
#!/bin/bash
# ファイルを検証
result=$(eslint "$TOOL_INPUT_FILE_PATH" 2>&1)
if [ $? -ne 0 ]; then
# JSON形式でブロック決定とメッセージを返す
echo '{"decision": "block", "reason": "'"${result}"'"}'
exit 0
fi
echo '{"decision": "approve"}'continueOnBlock: trueの場合:Claudeはブロック理由(ESLintエラー)を受け取り、修正を試みてターンを継続します。
セキュリティ検査の警告フロー
json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "/path/to/security-check.sh",
"continueOnBlock": true
}
]
}
]
}
}危険なコマンドが実行された後、セキュリティチェックフックがブロックを返すと、Claudeはその理由を把握した上で次のアクションを判断できます。
continueOnBlockの動作の違い
| 設定 | ブロック時の動作 |
|---|---|
continueOnBlock: true | 拒否理由をClaudeにフィードバックしてターンを継続 |
continueOnBlock: false(デフォルト) | ブロック後にすべての処理を停止 |
注意点
PostToolUseはツール実行後に呼び出されるため、ブロックしてもアクションを取り消すことはできませんcontinueOnBlock: trueを使うと、Claudeは問題を認識した上で自己修正できる可能性がありますPreToolUseフックのブロックとは異なり、PostToolUseのブロックは実行済みアクションへの事後フィードバックです- ループを防ぐため、フックのブロック条件は明確かつ修正可能なものにすることを推奨します