⚓
Hooks — Automation Rules
中級者向けSet up automatic triggers and actions
Hooks って何?(家のセキュリティで例えると)
Hooks = 家のセキュリティシステム
家にセキュリティシステムを付けると:
• ドアが開いたら → 自動でカメラが撮影
• 不審者を検知 → 自動でアラームが鳴る
• 窓が割れたら → 自動で警備会社に通報
Hooks も同じです:
• Claude がファイルを保存したら → 自動で文法チェック
• Claude が危険なコマンドを実行しようとしたら → 自動でブロック
• Claude が作業を完了したら → 自動でテスト実行
人間がいちいち確認しなくても、ルールどおりに自動で動きます。
家にセキュリティシステムを付けると:
• ドアが開いたら → 自動でカメラが撮影
• 不審者を検知 → 自動でアラームが鳴る
• 窓が割れたら → 自動で警備会社に通報
Hooks も同じです:
• Claude がファイルを保存したら → 自動で文法チェック
• Claude が危険なコマンドを実行しようとしたら → 自動でブロック
• Claude が作業を完了したら → 自動でテスト実行
人間がいちいち確認しなくても、ルールどおりに自動で動きます。
Hooks vs Skills vs サブエージェント — 何が違う?
| Hooks | Skills | サブエージェント | |
|---|---|---|---|
| たとえ | セキュリティアラーム (自動で作動) | レシピ本 (呼ぶと実行) | 部下 (仕事を委任) |
| いつ動く? | 特定の出来事が起きたら自動で | あなたが /コマンド で手動で | Claude が必要に応じて自動で |
| 確実性 | 100%実行される (プログラムなので) | 呼んだときだけ | AIの判断による |
| 用途 | 品質ゲート、安全チェック | 定型作業の効率化 | 作業の委任 |
よく使われる Hooks の例
例1: 作業完了時にテストを自動実行
Claude が「完了しました」と言う前に、自動でテストを実行します。テストが失敗したら、Claude に修正を促します。
// .claude/settings.json の中に書く(Claude の設定ファイル)
{
// "hooks" = 自動実行ルールの設定
"hooks": {
// "Stop" = Claude が作業完了しようとするタイミング
"Stop": [
{
"hooks": [
{
// "command" = ターミナルのコマンドを実行する方式
"type": "command",
// テストを実行して、結果の最初の20行だけ表示
"command": "npm test 2>&1 | head -20"
}
]
}
]
}
}用語解説:
•
•
•
•
•
"Stop" = Claude が作業を完了しようとするタイミング•
"command" = 実行するプログラムの種類(ここではターミナルのコマンド)•
npm test = テストを実行するコマンド•
2>&1 | head -20 = 結果の最初の20行だけ表示する例2: 危険なコマンドをブロック
ファイルの一括削除など、危険なコマンドが実行されそうになったら自動で止めます。
主なタイミング(いつ Hook が動くか)
| タイミング | いつ? | 使い道 | 止められる? |
|---|---|---|---|
PreToolUse | Claude がツール(道具)を使う前 | 危険な操作をブロック | ✅ 止められる |
PostToolUse | Claude がツールを使った後 | 変更後の自動チェック | ❌ |
Stop | Claude が作業完了しようとするとき | 最終テストの自動実行 | ✅ 止められる |
SessionStart | セッション開始時 | 環境のセットアップ | ❌ |
UserPromptSubmit | あなたがメッセージを送信する前 | 入力の前処理 | ✅ 止められる |
「止められる」とは?
Hook のプログラムが特別な信号(exit code 2)を返すと、Claude のその操作が中止されます。 たとえばテストが失敗したら、コミット(保存)を自動で中止する、というような使い方です。
Hook のプログラムが特別な信号(exit code 2)を返すと、Claude のその操作が中止されます。 たとえばテストが失敗したら、コミット(保存)を自動で中止する、というような使い方です。
HTTP Hooks(2026年の新機能)
シェルスクリプトが書けなくても大丈夫
従来の Hooks はシェルスクリプト(ターミナルのコマンド)を書く必要がありましたが、HTTP Hooks なら URL を指定するだけ。
Claude が何かをするたびに、指定した URL に JSON データが自動送信されます。
Webアプリ(localhost でもOK)で進捗を表示したり、権限を管理したりできます。
X投稿: Dickson Tsai氏(Anthropic)による HTTP Hooks 発表
Claude が何かをするたびに、指定した URL に JSON データが自動送信されます。
Webアプリ(localhost でもOK)で進捗を表示したり、権限を管理したりできます。
X投稿: Dickson Tsai氏(Anthropic)による HTTP Hooks 発表
コマンド Hooks との違い
たとえると: コマンド Hook は「家の中にいる番犬」(自分のパソコンで動く)、HTTP Hook は「外部の警備会社に通報する仕組み」(Webサーバーに連絡する)です。
| コマンド Hook | HTTP Hook | ひとことで言うと | |
|---|---|---|---|
| type | "command" | "http" | 設定ファイルに書く種類の名前 |
| 何を指定? | シェルスクリプト(ターミナルのコマンド) | URL(Web アドレス) | コマンド版は「何を実行するか」、HTTP版は「どこに通知するか」 |
| 必要なスキル | ターミナル操作の知識 | URLの指定だけでOK(より簡単) | HTTP版のほうが初心者向け |
| 実行場所 | 自分のパソコン上 | どこかのWebサーバー(自分のPCでもOK) | HTTP版はチームで共有しやすい |
| 操作ブロック | exit code 2(「ダメ!」信号)で可能 | HTTPレスポンス(Webからの返答)で可能 | どちらも「この操作はやめて」と止められる |
実用的なユースケース
1. リアルタイム進捗ダッシュボード
PostToolUse に HTTP Hook を設定し、Claude がファイルを編集するたびに Webアプリに通知。ブラウザ上でリアルタイムに作業進捗を可視化できます。チームメンバーが Claude の作業状況を監視するのに最適。
2. Slack / Discord 通知
Stop フックで Slack の Webhook URL に完了通知を送信。Claude が長時間タスクを完了したとき、スマホに通知が届くので、画面に張り付く必要がなくなります。
3. 外部承認ワークフロー
PreToolUse に HTTP Hook を設定し、危険な操作の前に外部の承認サーバーに問い合わせ。サーバーが「拒否」を返せば操作がブロックされます。チーム開発で、特定の操作(本番デプロイ等)にマネージャー承認を必須にする使い方ができます。
4. 監査ログの記録
すべてのツール使用を外部データベースに記録。「誰が、いつ、何をしたか」の完全な監査証跡を残せます。コンプライアンス要件があるチームに有用。
設定例
// .claude/settings.json(Claude の設定ファイル)
{
"hooks": {
// PostToolUse = Claude がツールを使った「後」に実行される
"PostToolUse": [
{
"hooks": [
{
// "http" = Webサーバーに通知する方式
"type": "http",
// 通知先のURL(この例では自分のPC上のWebアプリ)
"url": "http://localhost:8080/hook",
// 認証情報(誰からの通知か証明するための鍵)
"headers": {
"Authorization": "Bearer ${MY_TOKEN}"
}
}
]
}
]
}
}用語解説
HTTP = Webでデータをやり取りする仕組み。ブラウザがWebページを表示するのと同じ技術。
JSON = データを整理して書く形式。{ "名前": "太郎", "年齢": 25 } のような書き方。
localhost = 自分のパソコン自身を指すアドレス。外部に通信せず、自分のPC内で完結。
Webhook = 特定のイベントが起きたとき、自動的にURLにデータを送る仕組み。Slack等の通知に使われる。
JSON = データを整理して書く形式。{ "名前": "太郎", "年齢": 25 } のような書き方。
localhost = 自分のパソコン自身を指すアドレス。外部に通信せず、自分のPC内で完結。
Webhook = 特定のイベントが起きたとき、自動的にURLにデータを送る仕組み。Slack等の通知に使われる。