原文(日本語に翻訳)
PreToolUseフックが updatedInput と permissionDecision: "allow" を同時に返すことで AskUserQuestion を満たせるようになりました。独自のUIで回答を収集するヘッドレス統合が可能になります。
原文(英語)
PreToolUse hooks can now satisfy AskUserQuestion by returning updatedInput alongside permissionDecision: "allow", enabling headless integrations that collect answers via their own UI
概要
PreToolUse フックが AskUserQuestion ツールの呼び出しに対して、updatedInput フィールドと permissionDecision: "allow" を組み合わせて返すことで、ユーザーへの質問に自動応答できるようになりました。これにより、ヘッドレス環境(CI/CDパイプラインやカスタムUIなど)でClaude Codeを使用する際に、独自のUI経由で収集した回答をフックから注入できます。
基本的な使い方
フックスクリプトが AskUserQuestion の入力を書き換えて、ユーザー入力をシミュレートする:
json
{
"permissionDecision": "allow",
"updatedInput": {
"answer": "はい、続けてください"
}
}実践例
ユースケース: ヘッドレス環境で質問に自動応答する
フックスクリプト(~/.claude/hooks/auto-answer.sh)の例:
bash
#!/bin/bash
# フックからの入力を読み取る
INPUT=$(cat)
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name')
if [ "$TOOL_NAME" = "AskUserQuestion" ]; then
QUESTION=$(echo "$INPUT" | jq -r '.tool_input.question')
# 質問の内容に応じて自動回答を決定
if echo "$QUESTION" | grep -q "続けますか"; then
echo '{"permissionDecision": "allow", "updatedInput": {"answer": "はい"}}'
elif echo "$QUESTION" | grep -q "確認"; then
echo '{"permissionDecision": "allow", "updatedInput": {"answer": "確認しました"}}'
else
# デフォルト回答
echo '{"permissionDecision": "allow", "updatedInput": {"answer": "OK"}}'
fi
else
echo '{"permissionDecision": "allow"}'
fi.claude/settings.json での設定:
json
{
"hooks": {
"PreToolUse": [
{
"if": "AskUserQuestion(*)",
"command": "~/.claude/hooks/auto-answer.sh"
}
]
}
}ユースケース: カスタムUIから回答を収集する
外部UIシステムと連携して回答を取得するフック:
python
#!/usr/bin/env python3
import json
import sys
import requests
data = json.load(sys.stdin)
if data.get('tool_name') == 'AskUserQuestion':
question = data['tool_input']['question']
# 外部UIシステムに質問を送信して回答を取得
response = requests.post('https://your-ui-system/ask', json={'question': question})
answer = response.json()['answer']
print(json.dumps({
'permissionDecision': 'allow',
'updatedInput': {'answer': answer}
}))
else:
print(json.dumps({'permissionDecision': 'allow'}))注意点
- このフックは
AskUserQuestionツールの呼び出し時にのみ効果を発揮します updatedInputにanswerフィールドを含める必要があります- 自動応答を設定する場合は、質問の内容を適切に処理して適切な回答を返すようにしてください
- ヘッドレス環境以外では通常の対話型応答の方が推奨されます