CC逆引きリファレンス

送信前フックを設定したい

10. フック

コマンド / 機能

UserPromptSubmit

プロンプト送信前

概要

ユーザーがプロンプトを送信する直前に呼び出されます。入力の検証、ログ記録、プロンプトの前処理に使えます。

設定例

// settings.json
{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo \"[$(date '+%Y-%m-%d %H:%M:%S')] Prompt: $CLAUDE_TOOL_INPUT\" >> ~/.claude/prompts.log"
          }
        ]
      }
    ]
  }
}

// プロンプトに機密情報が含まれていないかチェック
{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qiE '(password|secret|api.?key)'; then echo 'Warning: 機密情報が含まれている可能性があります'; fi"
          }
        ]
      }
    ]
  }
}

こんな時に使う

  • プロンプト送信前に処理を挟みたい時
  • 入力内容を検証したい時
  • プロンプト履歴を記録したい時
  • 機密情報の入力を警告したい時

使い方

  1. 1UserPromptSubmit イベントにフック定義を追加
  2. 2$CLAUDE_TOOL_INPUT でプロンプト内容を取得
  3. 3exit 2 で送信をブロック可能
  4. 4stdout 出力は Claude にフィードバックされる

Tips

  • プロンプトの履歴を残して後から分析できる
  • 機密情報の誤送信防止に活用可能
  • exit 2 でブロックすると送信がキャンセルされる
  • 頻繁に実行されるので軽量な処理に留める