PreToolUse
ツールの呼び出し前に実行されるフック。
使い方・用途
- 破壊的なコマンドの実行を事前に検知してブロックしたり、AI にツール実行前の追加コンテキストを提供して意思決定を支援したりします。
- ヘッドレス環境において AI からの質問(AskUserQuestion)に自動回答するミドルウェアとしても活用可能です。
Hooks that run before tool calls
関連する変更履歴
v2.1.222(1件)
v2.1.211(1件)
英語原文を表示
ask decision for unsandboxed Bash — a hook ask now floors the decision at a prompt変更前
オートモード(auto mode)では、フックがユーザーへの確認(ask)を求めた場合でも、分類器が安全だと判断するとプロンプトを出さずにサイレントで承認してしまうことがありました。フックによる明示的な制限が無視される場面がありました。
変更後
フックが「ask」を返した場合、オートモードであっても必ずユーザーにプロンプトを表示するように変更されました。分類器は拒否(deny)することはできますが、フックの要求を無視して勝手に承認することはできなくなります。
ユーザーへの恩恵
セキュリティや検証のために設定したフックによる確認要求が、オートモードでも確実に守られるようになる。
関連ドキュメント
v2.1.119(1件)
PostToolUse および PostToolUseFailure の入力 JSON に、ツールの純粋な実行時間を示す duration_ms が含まれるようになりました(承認待機時間は除く)英語原文を表示
PostToolUse and PostToolUseFailure hook inputs now include duration_ms (tool execution time, excluding permission prompts and PreToolUse hooks)変更前
フックからツールの実行時間を把握することが難しく、どの操作に時間がかかっているかの正確な計測が困難でした。
変更後
フックへの入力データにミリ秒単位の duration_ms が追加され、ユーザーの承認待ち時間を除いた純粋な処理時間を取得できるようになりました。
ユーザーへの恩恵
独自のメトリクス収集や、処理の重いツール呼び出しの検知など、開発プロセスの分析と最適化がより精緻に行えるようになります。
関連ドキュメント
v2.1.110(1件)
PreToolUseフックから提供された追加コンテキスト(additionalContext)が失われる問題を修正英語原文を表示
PreToolUse hook additionalContext being dropped when the tool call fails変更前
フックを使ってAIに補足情報を与えていても、その直後のツール実行が一度失敗すると、せっかくの補足情報が消えてしまい、AIが状況を正しくリトライできないことがありました。
変更後
ツール実行の成否にかかわらず、フックによって注入されたコンテキストが正しく保持され、AIに共有され続けるようになりました。
ユーザーへの恩恵
失敗の原因をAIがフックの情報を元に深く理解し、より的確に再試行できるようになるため、エラーからの自己復旧率が高まります。
関連ドキュメント
v2.1.101(1件)
permissions.deny ルールが PreToolUse フックの permissionDecision: "ask" よりも優先されるよう修正英語原文を表示
permissions.deny rules not overriding a PreToolUse hook's permissionDecision: "ask" — previously the hook could downgrade a deny into a prompt変更前
設定ファイルで特定のコマンドを「拒否(deny)」していても、フックの設定によってはユーザーに「確認(ask)」を求めてしまい、拒否ルールをバイパスできてしまう場合がありました。
変更後
「拒否」ルールが常に最優先されるようになり、フックによって承認待ちにダウングレードされることがなくなります。
ユーザーへの恩恵
セキュリティ設定の優先順位が明確になり、意図しないツールの実行をより確実に防止できます。
関連ドキュメント
v2.1.90(1件)
PreToolUse フックが、正しくツール実行をブロックできない問題を修正しました。英語原文を表示
PreToolUse hooks that emit JSON to stdout and exit with code 2 not correctly blocking the tool call変更前
特定の条件でツール実行を拒否しようとしても、フックの出力形式や終了コードの組み合わせによってはブロック処理が正しく動作しない不具合がありました。
変更後
フックからのブロック指示が確実に処理され、セキュリティ上の制約やバリデーションが厳密に適用されます。
ユーザーへの恩恵
独自に作成したフックによる実行制限(破壊的なコマンドの禁止など)が意図通りに機能し、安全性が向上します。
関連ドキュメント
v2.1.89(2件)
-p --resume で再開してフックを再評価させることが可能です。英語原文を表示
"defer" permission decision to PreToolUse hooks — headless sessions can pause at a tool call and resume with -p --resume to have the hook re-evaluate変更前
ヘッドレスモード(-p)において、フックがツールの実行を条件付きで保留し、後からユーザーの判断を待って再開させる明確な仕組みが不足していました。
変更後
フックが "defer"(保留)を返せるようになり、実行を中断したセッションを -p --resume で再開する際に、再度フックを走らせて最終的な実行可否を決定できるようになりました。
ユーザーへの恩恵
自動化スクリプトやCI環境において、重要な操作の直前で一時停止し、人間が確認してから安全に続行させるワークフローが構築しやすくなります。
関連ドキュメント
file_path を絶対パスで受け取るよう修正しました。これはドキュメントの記載通りの挙動です。英語原文を表示
file_path as an absolute path for Write/Edit/Read tools, matching the documented behavior変更前
フックに渡却されるパスが相対パスであったため、フック側のスクリプトでカレントディレクトリを移動している場合などにパスの解決が失敗することがありました。
変更後
常にルートからの絶対パスが渡されるようになり、どのような実行環境でもフックが正確に対象ファイルを特定できます。
ユーザーへの恩恵
フックを利用した複雑な自動処理や検証スクリプトの作成が、より簡単かつ確実になります。
関連ドキュメント
v2.1.88(1件)
file_path を絶対パスで提供していなかった問題を修正しました英語原文を表示
file_path as an absolute path for Write/Edit/Read tools変更前
フック機能でファイルの変更を監視・処理する際、ファイルパスが相対パスで渡されることがあり、実行ディレクトリが異なると正しいファイルを特定できないリスクがありました。
変更後
常にルートからの絶対パスが渡されるようになり、どのディレクトリから実行しても確実に対象ファイルを処理できるようになりました。
ユーザーへの恩恵
自動フォーマットやバリデーションなどのフックの信頼性が高まり、複雑なプロジェクト構造でも誤作動の心配なく自動化を任せられます。
関連ドキュメント
v2.1.85(1件)
英語原文を表示
AskUserQuestion by returning updatedInput alongside permissionDecision: "allow", enabling headless integrations that collect answers via their own UI変更前
ヘッドレス(非対話)モードでの実行中、Claudeがユーザーに質問(AskUserQuestion)を投げると、外部から動的に回答を供給するスマートな方法が不足していました。
変更後
フック経由で質問への回答(updatedInput)を返せるようになったため、独自のUIや自動化スクリプトを介してClaudeの質問に回答できます。
ユーザーへの恩恵
CLIを直接操作できないCI/CD環境やカスタムアプリ経由の利用において、Claudeとの対話を自動化または外部UI化することが可能になります。
関連ドキュメント
v2.1.77(1件)
PreToolUse フックが "allow" を返した際に、管理設定などの拒否ルールをバイパスしてしまう問題を修正しました英語原文を表示
"allow" bypassing deny permission rules, including enterprise managed settings変更前
フック側で許可(allow)を出すと、エンタープライズの管理ポリシー等で定義された強力な拒否ルールすら上書きされてしまう脆弱な状態でした。
変更後
パーミッション評価順序が厳格化され、フックの出力に関わらず拒否ルールが常に優先されるようになりました。
ユーザーへの恩恵
組織レベルで設定したセキュリティポリシーが確実に適用されるため、安全にフック機能を活用できます。
関連ドキュメント
v2.1.47(1件)
英語原文を表示
変更前
Windows環境では、cmd.exeが使用されていたため、フック(PreToolUse、PostToolUse)がサイレントに失敗し、実行されない問題がありました。
変更後
Windows環境でhooks(PreToolUse、PostToolUse)がサイレントに失敗する問題が修正されました。Git Bashが使用されるようになり、フックが正しく実行されるようになりました。
ユーザーへの恩恵
Windows環境でのフック実行が安定し、Git Bashの利用によりPreToolUseやPostToolUseといった重要な自動化処理が正しく機能するようになりました。
v2.1.9(1件)
PreToolUse フックがモデルに追加のコンテキストを返すサポートを追加しました。英語原文を表示
PreToolUse hooks to return additionalContext to the model変更前
ツール実行前のPreToolUseフックは、モデルに渡す追加情報を提供できませんでした。
変更後
PreToolUseフックは、ツールの実行前にモデルにadditionalContextとして追加情報を提供できるようになりました。
ユーザーへの恩恵
これにより、フックはツールの実行前にモデルに追加のコンテキストを提供できるようになり、よりインテリジェントな意思決定や、フックによるツール実行の制御が可能になります。
関連ドキュメント
v2.1.0(2件)
PreToolUse フックで、ユーザーへの確認(ask)を返しつつ入力を書き換える(updatedInput)ことが可能になり、ユーザーの同意を得ながら動作するミドルウェアとしてフックを利用できるようになりました。英語原文を表示
updatedInput when returning ask permission decision, enabling hooks to act as middleware while still requesting user consent変更前
フックでツール入力を変更した場合、即座に実行を許可(allow)するか拒否(deny)するかの二択になり、変更後の内容をユーザーに確認させることができませんでした。
変更後
安全のために特定の引数を修正しつつ、「この内容で実行して良いですか?」というプロンプトをユーザーに表示する高度な制御が可能になりました。
ユーザーへの恩恵
不適切なコマンド引数を自動補正しながら最終判断は人間に委ねるという、安全性と柔軟性を両立した高度なガードレールを構築できます。
関連ドキュメント
英語原文を表示
v2.0.43(1件)
tool_use_id field to PreToolUseHookInput and PostToolUseHookInput types