フックの導入
フックについては、まだ十分に語られていないように思えます。
しかし、フックは現在、VS Codeにおいて最も強力な機能の一つと言えるでしょう。
本ガイドでは、フックとは何か、その仕組み、そしてワークフローを自動化するためにフックをどのように活用するかを解説します。
前提条件
始める前に:VS Code Insidersがインストールされていること、GitHub CopilotとGitHub Copilot Chatの拡張機能が設定され、サインインしている必要があります。
フックとは何か?
フックを使用すると、エージェントセッション中の特定のライフサイクルポイントで、カスタムシェルコマンドを実行できます。
手動でタスクを実行する代わりに、フックを使えばイベントに応じて自動的に実行されるアクションを定義できます。これにより、自動化、検証、およびワークフロー全体の整合性の維持に最適です。
大まかに言うと、フックは一般的に以下の目的で使用されます。
- 反復的なタスクの自動化
- セキュリティやコーディング基準の強制
- 実行前後の変更内容の検証
- 外部ツールとの統合
ライフサイクルイベント(フックが実行されるタイミング)
VS Codeは、エージェントセッション中の特定の時点で発生する8つのフックイベントをサポートしています。
| フックイベント | 発生タイミング | 一般的な使用例 |
|---|---|---|
SessionStart |
ユーザーが新しいセッションで最初のプロンプトを送信した時 | リソースの初期化、セッション開始のログ記録、プロジェクト状態の検証 |
UserPromptSubmit |
ユーザーがプロンプトを送信した時 | ユーザーリクエストの監査、システムコンテキストの注入 |
PreToolUse |
エージェントがツールを呼び出す直前 | 危険な操作のブロック、承認の要求、ツール入力の変更 |
PostToolUse |
ツールが正常に完了した後 | フォーマッタの実行、結果のログ記録、フォローアップアクションのトリガー |
PreCompact |
会話コンテキストが圧縮される前 | 重要なコンテキストのエクスポート、切り詰め前の状態の保存 |
SubagentStart |
サブエージェントが生成された時 | ネストされたエージェントの使用状況の追跡、サブエージェントリソースの初期化 |
SubagentStop |
サブエージェントが完了した時 | 結果の集計、サブエージェントリソースのクリーンアップ |
Stop |
エージェントセッションが終了した時 | レポートの生成、リソースのクリーンアップ、通知の送信 |
フックは、いつ実行すべきかを決定するライフサイクルイベントに基づいています。
これらのイベントは、エージェントセッション中のトリガーポイントとして機能します。例えば、フックはセッション開始時、プロンプト送信時、あるいはツールが作業を完了した後に実行されることがあります。
適切なライフサイクルイベントを選択することは非常に重要です。なぜなら、それが自動化を実際に実行するタイミングを決定するからです。
例:Prettierによる自動フォーマット
フックの最も実用的な例の一つは、コードの自動フォーマットです。
この場合、ファイルが編集されるたびにPrettierを実行するようにフックを設定します。手動でファイルをフォーマットする代わりに、システムが自動的にすべての一貫性を保つようにします。
基本的な考え方は単純です。一度アクションを定義すれば、確認を求められることなく、毎回自動的に実行されます。
フックの作成
フックを作成するには、「Agent Customizations(エージェントのカスタマイズ)」ビューを使用して直接生成できます。
例えば、以下のようなフックを作成できます。
- Prettierを自動的に実行する
- ツールが完了した後にトリガーする(PostToolUse)
- シェルスクリプトを介して実行する
Copilotは、必要な構成やコマンドを含め、あなたの説明に基づいてフックを生成できます。
例:実際に動作するフック

フックを作成した後、有効化するために環境の再読み込みが必要な場合があります。一度有効になれば、定義したライフサイクルイベントに基づいて自動的に実行されます。

READMEファイルのテキスト更新など、変更を加えると、バックグラウンドでフックがトリガーされます。

その結果は即座に現れます。追加の入力なしでファイルが更新され、フォーマットされます。フックがバックグラウンドで作業を処理してくれるのです。
なぜフックが重要なのか
フックは自動化を次のレベルへ引き上げます。
プロンプト、指示、あるいはスキルとは異なり、フックは明示的に呼び出す必要はありません。適切な条件が満たされると、自動的に実行されます。
これにより、働き方が次のように変わります。
- タスクがバックグラウンドで実行される
- 一貫性が自動的に強制される
- ワークフローがシームレスになる
フックは、以下のような移行を象徴しています。
手動実行 → イベント駆動型の自動化
AIに何かを頼むのではなく、いつ実行すべきかを定義し、システムに任せることができるようになります。
次のステップ
フックは、入力作業を減らし、ワークフローの自動化を助けます。
フック、エージェント、スキル、指示がどのように組み合わさるかを理解したい場合は、それらを統合システムとして比較することが次のステップとなります。