PostToolUse
ツールの完了後に実行されるフック。
使い方・用途
- ファイル編集直後に Prettier などのフォーマッタを自動実行して、コードのスタイルを一貫性に保つのに役立ちます。
- ツールの実行結果を AI に渡す前に加工・置換したり、処理にかかった純粋な実行時間を計測して分析したりすることができます。
Hooks that run after tool completion
関連する変更履歴
v2.1.183(1件)
v2.1.139(1件)
PostToolUseフックにcontinueOnBlockオプションを追加:trueに設定すると、フックによる拒否理由をClaudeに伝え、ターンを継続させることができます。英語原文を表示
continueOnBlock config option for PostToolUse — set to true to feed the hook's rejection reason back to Claude and continue the turn変更前
フックがツール実行をブロックした場合、そこでプロセスが中断されてしまい、Claudeがその理由を理解して別の方法を試すことができませんでした。
変更後
拒否理由をClaudeへのフィードバックとして返せるため、Claudeは「なぜ拒否されたか」を理解し、修正案を提示するなど作業を継続できます。
ユーザーへの恩恵
自動化されたルールチェックとAIの柔軟な対応を組み合わせることができ、ワークフローの停止を最小限に抑えられます。
関連ドキュメント
v2.1.121(1件)
PostToolUse フックが、すべてのツールにおいて hookSpecificOutput.updatedToolOutput を介してツールの出力を置換できるようになりました(以前は MCP ツールのみ対応)。英語原文を表示
hookSpecificOutput.updatedToolOutput (previously MCP-only)変更前
ツールの実行結果をフックで加工して Claude に渡す機能は、MCP サーバー経由のツールに限定されていました。Bash やファイル操作などの組み込みツールの出力を動的にフィルタリングしたり修正したりすることは困難でした。
変更後
すべての種類のツールで実行後の出力置換がサポートされました。フックスクリプトから updatedToolOutput を返すことで、Claude に渡される最終的なレスポンスを自在に制御できます。
ユーザーへの恩恵
秘匿情報のマスキングや、巨大なログ出力の要約など、Claude に渡す情報をフックでインテリジェントに制御し、コンテキストの質を高めることができます。
関連ドキュメント
v2.1.119(2件)
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 が追加され、ユーザーの承認待ち時間を除いた純粋な処理時間を取得できるようになりました。
ユーザーへの恩恵
独自のメトリクス収集や、処理の重いツール呼び出しの検知など、開発プロセスの分析と最適化がより精緻に行えるようになります。
関連ドキュメント
PostToolUse フックが、セッション履歴に空のエントリを書き込んでしまう問題を修正しました英語原文を表示
PostToolUse hooks that emit no response payload writing empty entries to the session transcript変更前
バックグラウンドで動作するフック(通知のみを行う場合など)を実行すると、履歴の中に何も表示されない不要な行が増えていきました。
変更後
レスポンスのないフック実行は履歴を汚さないよう適切に処理されます。
ユーザーへの恩恵
/resume などで会話履歴を見返す際、不要な空白が排除され、本来の会話内容が読みやすくなります。
v2.1.90(1件)
Edit/Write ツールが "File content has changed" エラーで失敗する問題を修正しました。英語原文を表示
Edit/Write failing with "File content has changed" when a PostToolUse format-on-save hook rewrites the file between consecutive edits変更前
Claude がファイルを編集した直後にフックで Prettier などのフォーマッタを動かすと、Claude 側が持っているファイル状態と不一致が起き、次の編集ができなくなることがありました。
変更後
フックによる変更が正しく検知され、Claude はエラーで止まることなく連続した編集作業を継続できるようになりました。
ユーザーへの恩恵
自動フォーマットなどのフック機能を併用しているプロジェクトでも、Claude による一連のコード修正がスムーズに完了します。
関連ドキュメント
v2.1.89(1件)
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.72(1件)
英語原文を表示
transcript_path pointing to the wrong directory for resumed/forked sessions, agent prompt being silently deleted from settings.json on every settings write, PostToolUse block reason displaying twice, async hooks not receiving stdin with bash read -r, and validation error message showing an example that fails validation変更前
レジュームしたセッションで履歴パスが誤っていたり、非同期フックで read -r が動作しないなど、高度なカスタマイズを行うフック機能においていくつかの不安定な挙動がありました。
変更後
セッション管理とフック実行エンジンの修正により、自作の自動化スクリプトがより正確に動作するようになりました。
ユーザーへの恩恵
自作のフックを用いた高度なワークフロー自動化を、予期せぬエラーに悩まされることなく構築できます。
関連ドキュメント
v2.1.47(1件)
英語原文を表示
変更前
Windows環境では、cmd.exeが使用されていたため、フック(PreToolUse、PostToolUse)がサイレントに失敗し、実行されない問題がありました。
変更後
Windows環境でhooks(PreToolUse、PostToolUse)がサイレントに失敗する問題が修正されました。Git Bashが使用されるようになり、フックが正しく実行されるようになりました。
ユーザーへの恩恵
Windows環境でのフック実行が安定し、Git Bashの利用によりPreToolUseやPostToolUseといった重要な自動化処理が正しく機能するようになりました。
v2.1.0(1件)
英語原文を表示
v2.0.43(1件)
tool_use_id field to PreToolUseHookInput and PostToolUseHookInput types