継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Claude Code の Hooks のことをさらって設定してみたメモ✍

タダです.

Claude Code に Hooks が追加されて話題になってたので概要や実際に触ってみたメモをまとめます.

  /hooks     Manage hook configurations for tool events

Claude Code Hooksとは

基本概念

Claude Code Hooks は Claude Code のライフサイクルの特定のタイミングで実行されるユーザー定義のシェルコマンドです.

主な使用例

ドキュメントにありますが,主なユースケースとして以下のものがあげられてます.

  • 通知のカスタマイズ: Claude Code が入力を待っているときの通知方法を変更
  • 自動フォーマット: ファイル編集後にprettiergofmtを自動実行
  • ロギング:コンプライアンスまたはデバッグのために実行されたすべてのコマンドを追跡する
  • フィードバック: コードベースの規約に従わないコードに対する自動フィードバック
  • カスタム権限: 本番ファイルや機密ディレクトリへの変更をブロック

Hook イベントの種類

Hook イベントの種類についても簡単にまとめます.

  • PreToolUse: ツール呼び出しの前に実行されツールの実行をブロックしたり,フィードバックを提供できる
  • PostToolUse: ツールが正常に完了した後に実行される
  • Notification:Claude Code が通知を送信するときに実行される
  • Stop :Claude Code が応答を終了したときに実行される
  • SubagentStop: サブエージェントが応答を終了する直前に実行される

実際にHookを設定してみる

Bash コマンドのログを記録する Hooks を作成

ドキュメントに沿って Claude Code が実行するシェルコマンドをログに記録するシンプルな Hook を作ります.なお, jq を使うので事前にインストールしておく必要があります.

/hooks

スラッシュコマンドを実行して PreToolUse フックイベントを選択します. + Add new matcher...を選択し Bashと入力します.これにより Bash ツール呼び出しの前にのみ Hook が実行されます.

以下のコマンドを入力します.

jq -r '"\(.tool_input.command) - \(.tool_input.description // "No description")"' >> ~/.claude/bash-command-log.txt

保存場所としてUser settings を選択するとすべてのプロジェクトでこの Hook が有効になります.~/.claude/settings.json の設定を確認します.

cat ~/.claude/settings.json
{
  "model": "opus",
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '\"\\(.tool_input.command) - \\(.tool_input.description // \"No description\")\"' >> ~/.claude/bash-command-log.txt"
          }
        ]
      }
    ]
  }
}

この状態で READMEをlsでみつけて という依頼をしてみた結果,Bash ツール実行時にログにも記録されました.

> READMEをlsでみつけて

⏺ Bash(ls | grep -i readme)
  ⎿  Error: /var/folders/n8/c4t37jqn3jd1yq_kshbfmskm0000gn/T/claude-shell-snapshot-9c88:5995: parse
     error near `()'

⏺ Search(pattern: "*README*")
  ⎿  Found 1 file (ctrl+r to expand)

⏺ README.md

$ cat ~/.claude/bash-command-log.txt
ls | grep -i readme - Find README files in current directory

まとめ

Claude Code の Hooks のことをさらいつつドキュメントに沿って設定してみました.