settings.json

hooks.PreToolUse

array

ツールの呼び出し前に実行されるフック。

使い方・用途

  • 破壊的なコマンドの実行を事前に検知してブロックしたり、AI にツール実行前の追加コンテキストを提供して意思決定を支援したりします。
  • ヘッドレス環境において AI からの質問(AskUserQuestion)に自動回答するミドルウェアとしても活用可能です。
英語原文(公式ドキュメントより)

Hooks that run before tool calls

関連ドキュメント

関連する変更履歴

v2.1.271(1件)

Improved
フックのフィードバックを改善: SessionStart、UserPromptSubmit、PreToolUse、SessionEnd のいずれかのフック実行中は、スピナーにその旨と経過時間を表示し、Esc で SessionStart フックの完了待ちになっているプロンプトをキャンセルできるようにした。
英語原文を表示
Improved hook feedback: while a SessionStart, UserPromptSubmit, PreToolUse or SessionEnd hook runs, the spinner says so with elapsed time, and Esc cancels a prompt waiting on a SessionStart hook

変更前

フックの実行中は、スピナーにはフック名などが statusMessage で設定されていない限り表示されず、何が実行されているか分かりにくかった。特に SessionStart フックが完了するまでプロンプト送信は待たされ、途中で中断する手段もなかった。

変更後

SessionStart・UserPromptSubmit・PreToolUse・SessionEnd フックの実行中、スピナーにフックが動いていることと経過時間が表示されるようになった。さらに、SessionStart フックの完了待ちで停止しているプロンプトを Esc でキャンセルできるようになった。

ユーザーへの恩恵

どのフックが実行中かと経過時間が分かるようになり、遅い SessionStart フックで待たされた場合も Esc で即座にキャンセルできるようになる。

v2.1.248(1件)

Fixed
PermissionRequest や PreToolUse フックが無効な回答を出力した際、バックグラウンドセッションが黙って待機していた問題を修正しました。claude agents の行にフック名とスキーマエラーが表示されるようになりました。
英語原文を表示
Fixed background sessions waiting silently when a PermissionRequest or PreToolUse hook prints an invalid answer: the claude agents row now names the hook and the schema error

変更前

PermissionRequest や PreToolUse フックが無効な JSON を出力した際、バックグラウンドセッションはエラーメッセージを表示せずに待機し続けました。ユーザーはどのフックが失敗したのか、何が問題だったのかを知ることができませんでした。

変更後

claude agents の行に、どのフックが無効な回答を出力したのか、そしてスキーマエラーの内容が表示されるようになりました。これにより、バックグラウンドセッションの問題を特定しやすくなりました。

ユーザーへの恩恵

フックのエラー原因を即座に特定できるようになり、バックグラウンドセッションの待機状態を解消できます。

関連ドキュメント

v2.1.239(1件)

Fixed
OpenTelemetry によるトレースが分断される問題を修正し、PreToolUse フックによって実行が遅延・保留されたツール呼び出しについても、新しいトレースを生成せず元の実行ターンのトレース内に含めて記録するように改善しました。
英語原文を表示
Fixed OpenTelemetry trace fragmentation: tool executions deferred by a PreToolUse hook now resume in the original turn's trace instead of starting a new trace

変更前

分散トレース(Tracing)を有効化している際、PreToolUse フックが介入して一時的に保留されたツール実行処理が、親の実行コンテキストから切り離され、独立した別のルートトレースとして記録されてしまっていました。このため、実行フローの依存関係を追跡するのが困難でした。

変更後

フック経由で遅延実行されるツールのスパンが、元の親ターン(claude_code.interaction)のコンテキストを正しく引き継ぎ、同一のトレースツリー内に子スパンとして一元的に記録されるようになります。

ユーザーへの恩恵

可観測性プラットフォーム側でトレースログを調査する際、フック処理されたイベントを1つの文脈としてスムーズに追跡できます。

v2.1.222(1件)

Fixed
バックグラウンドエージェントタスク(要約、圧縮、リネーム処理など)において、PreToolUse自動承認フックがツール制限をバイパスして動作してしまう問題を修正しました。
英語原文を表示
Fixed PreToolUse auto-allow hooks bypassing tool restrictions in background agent tasks (summaries, compaction, renames)

v2.1.211(1件)

Fixed
サンドボックス外で実行されるBashに対するPreToolUseフックのask決定が、オートモードによって上書きされる問題を修正した
英語原文を表示
Fixed auto mode overriding a PreToolUse hook's ask decision for unsandboxed Bash — a hook ask now floors the decision at a prompt

変更前

オートモード(auto mode)では、フックがユーザーへの確認(ask)を求めた場合でも、分類器が安全だと判断するとプロンプトを出さずにサイレントで承認してしまうことがありました。フックによる明示的な制限が無視される場面がありました。

変更後

フックが「ask」を返した場合、オートモードであっても必ずユーザーにプロンプトを表示するように変更されました。分類器は拒否(deny)することはできますが、フックの要求を無視して勝手に承認することはできなくなります。

ユーザーへの恩恵

セキュリティや検証のために設定したフックによる確認要求が、オートモードでも確実に守られるようになる。

関連ドキュメント

v2.1.119(1件)

Added
フック機能の改善:PostToolUse および PostToolUseFailure の入力 JSON に、ツールの純粋な実行時間を示す duration_ms が含まれるようになりました(承認待機時間は除く)
英語原文を表示
Hooks: PostToolUse and PostToolUseFailure hook inputs now include duration_ms (tool execution time, excluding permission prompts and PreToolUse hooks)

変更前

フックからツールの実行時間を把握することが難しく、どの操作に時間がかかっているかの正確な計測が困難でした。

変更後

フックへの入力データにミリ秒単位の duration_ms が追加され、ユーザーの承認待ち時間を除いた純粋な処理時間を取得できるようになりました。

ユーザーへの恩恵

独自のメトリクス収集や、処理の重いツール呼び出しの検知など、開発プロセスの分析と最適化がより精緻に行えるようになります。

関連ドキュメント

v2.1.110(1件)

Fixed
ツール実行失敗時にPreToolUseフックから提供された追加コンテキスト(additionalContext)が失われる問題を修正
英語原文を表示
Fixed PreToolUse hook additionalContext being dropped when the tool call fails

変更前

フックを使ってAIに補足情報を与えていても、その直後のツール実行が一度失敗すると、せっかくの補足情報が消えてしまい、AIが状況を正しくリトライできないことがありました。

変更後

ツール実行の成否にかかわらず、フックによって注入されたコンテキストが正しく保持され、AIに共有され続けるようになりました。

ユーザーへの恩恵

失敗の原因をAIがフックの情報を元に深く理解し、より的確に再試行できるようになるため、エラーからの自己復旧率が高まります。

関連ドキュメント

v2.1.101(1件)

Fixed
permissions.deny ルールが PreToolUse フックの permissionDecision: "ask" よりも優先されるよう修正
英語原文を表示
Fixed 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件)

Fixed
JSON を標準出力に書き出し、終了コード 2 で終了する PreToolUse フックが、正しくツール実行をブロックできない問題を修正しました。
英語原文を表示
Fixed PreToolUse hooks that emit JSON to stdout and exit with code 2 not correctly blocking the tool call

変更前

特定の条件でツール実行を拒否しようとしても、フックの出力形式や終了コードの組み合わせによってはブロック処理が正しく動作しない不具合がありました。

変更後

フックからのブロック指示が確実に処理され、セキュリティ上の制約やバリデーションが厳密に適用されます。

ユーザーへの恩恵

独自に作成したフックによる実行制限(破壊的なコマンドの禁止など)が意図通りに機能し、安全性が向上します。

関連ドキュメント

v2.1.89(2件)

Added
PreToolUse フックに permission decision `
英語原文を表示
Added "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

変更前

PreToolUse フックが返せる判断は allow、deny、ask の3種類で、ツール実行を後から再開できる形で一時停止する手段がなかった。ヘッドレスモードでユーザー入力が必要になった場合、呼び出し側プロセスは中断されたセッションをツール呼び出しの状態のまま保持して再開する仕組みを持てなかった。

変更後

PreToolUse フックに、ツール実行を中断したままセッションを終了できる permissionDecision: 'defer' が追加される。ヘッドレスモードで defer が返されると stop_reason: 'tool_deferred' でプロセスが終了し、未実行のツール呼び出しがトランスクリプトに保持される。呼び出し側プロセスが claude -p --resume で再開すると、同じツール呼び出しに対して PreToolUse フックが再度評価される。

ユーザーへの恩恵

Agent SDK アプリやカスタム UI から Claude Code を呼び出す際、ツール呼び出しの時点でセッションを一時停止して自前のインターフェースで入力を収集し、-p --resume で中断箇所から再開できる。

関連ドキュメント

Fixed
Write/Edit/Read ツールの実行時、PreToolUse/PostToolUse フックに file_path が絶対パスとして渡されるよう修正し、ドキュメントに記載された動作と一致させた。
英語原文を表示
Fixed PreToolUse/PostToolUse hooks to receive file_path as an absolute path for Write/Edit/Read tools, matching the documented behavior

変更前

Write/Edit/Read ツール実行時、PreToolUse/PostToolUse フックに渡される file_path が相対パスになることがあり、フックスクリプト側でパス判定が正しく動かないケースがあった。

変更後

Write/Edit/Read ツール実行時、PreToolUse/PostToolUse フックの入力の file_path が絶対パスとして渡されるようになった。

ユーザーへの恩恵

拡張後の file_path を前提にして書かれた公式ドキュメントやガイドのフックスクリプトが、意図どおりに動くようになる。

関連ドキュメント

v2.1.88(1件)

Fixed
Write/Edit/Readツールにおいて、PreToolUse/PostToolUseフックが file_path を絶対パスで提供していなかった問題を修正しました
英語原文を表示
Fixed PreToolUse/PostToolUse hooks not providing file_path as an absolute path for Write/Edit/Read tools

変更前

フック機能でファイルの変更を監視・処理する際、ファイルパスが相対パスで渡されることがあり、実行ディレクトリが異なると正しいファイルを特定できないリスクがありました。

変更後

常にルートからの絶対パスが渡されるようになり、どのディレクトリから実行しても確実に対象ファイルを処理できるようになりました。

ユーザーへの恩恵

自動フォーマットやバリデーションなどのフックの信頼性が高まり、複雑なプロジェクト構造でも誤作動の心配なく自動化を任せられます。

関連ドキュメント

v2.1.85(1件)

Added
PreToolUseフックがupdatedInputとpermissionDecision: "allow"を返すことで、AskUserQuestionに応答可能になり、ヘッドレス環境での対話をサポート
英語原文を表示
PreToolUse hooks can now satisfy 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件)

Fixed
PreToolUse フックが "allow" を返した際に、管理設定などの拒否ルールをバイパスしてしまう問題を修正しました
英語原文を表示
Fixed PreToolUse hooks returning "allow" bypassing deny permission rules, including enterprise managed settings

変更前

フック側で許可(allow)を出すと、エンタープライズの管理ポリシー等で定義された強力な拒否ルールすら上書きされてしまう脆弱な状態でした。

変更後

パーミッション評価順序が厳格化され、フックの出力に関わらず拒否ルールが常に優先されるようになりました。

ユーザーへの恩恵

組織レベルで設定したセキュリティポリシーが確実に適用されるため、安全にフック機能を活用できます。

関連ドキュメント

v2.1.47(1件)

Fixed
WindowsでGit Bashではなくcmd.exeを使用していたため、フック(PreToolUse、PostToolUse)がサイレントに実行に失敗する問題を修正しました(anthropics/claude-code#25981)。
英語原文を表示
Fixed hooks (PreToolUse, PostToolUse) silently failing to execute on Windows by using Git Bash instead of cmd.exe (anthropics/claude-code#25981)

変更前

Windows環境では、cmd.exeが使用されていたため、フック(PreToolUse、PostToolUse)がサイレントに失敗し、実行されない問題がありました。

変更後

Windows環境でhooks(PreToolUse、PostToolUse)がサイレントに失敗する問題が修正されました。Git Bashが使用されるようになり、フックが正しく実行されるようになりました。

ユーザーへの恩恵

Windows環境でのフック実行が安定し、Git Bashの利用によりPreToolUseやPostToolUseといった重要な自動化処理が正しく機能するようになりました。

v2.1.9(1件)

Added
PreToolUse フックがモデルに追加のコンテキストを返すサポートを追加しました。
英語原文を表示
Added support for PreToolUse hooks to return additionalContext to the model

変更前

ツール実行前のPreToolUseフックは、モデルに渡す追加情報を提供できませんでした。

変更後

PreToolUseフックは、ツールの実行前にモデルにadditionalContextとして追加情報を提供できるようになりました。

ユーザーへの恩恵

これにより、フックはツールの実行前にモデルに追加のコンテキストを提供できるようになり、よりインテリジェントな意思決定や、フックによるツール実行の制御が可能になります。

関連ドキュメント

v2.1.0(2件)

Fixed
PreToolUse フックで、ユーザーへの確認(ask)を返しつつ入力を書き換える(updatedInput)ことが可能になり、ユーザーの同意を得ながら動作するミドルウェアとしてフックを利用できるようになりました。
英語原文を表示
Fixed PreToolUse hooks to allow updatedInput when returning ask permission decision, enabling hooks to act as middleware while still requesting user consent

変更前

フックでツール入力を変更した場合、即座に実行を許可(allow)するか拒否(deny)するかの二択になり、変更後の内容をユーザーに確認させることができませんでした。

変更後

安全のために特定の引数を修正しつつ、「この内容で実行して良いですか?」というプロンプトをユーザーに表示する高度な制御が可能になりました。

ユーザーへの恩恵

不適切なコマンド引数を自動補正しながら最終判断は人間に委ねるという、安全性と柔軟性を両立した高度なガードレールを構築できます。

関連ドキュメント

Added
エージェントのフロントマターでフック設定が可能になり、エージェントの生存期間に限定したフックを定義できるようになりました。
英語原文を表示
Added hooks support to agent frontmatter, allowing agents to define PreToolUse, PostToolUse, and Stop hooks scoped to the agent's lifecycle

v2.0.43(1件)

Added
Added tool_use_id field to PreToolUseHookInput and PostToolUseHookInput types

関連ドキュメント

v2.0.10(1件)

Added
PreToolUse hooks can now modify tool inputs