CC逆引きリファレンス

コマンド / 機能

PreToolUse フックでログ記録

概要

Claude が実行するすべての操作をログファイルに記録し、後から監査できるようにします。

設定例

// settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo "$(date '+%Y-%m-%d %H:%M:%S') | Tool: $CLAUDE_TOOL_NAME | Input: $CLAUDE_TOOL_INPUT" >> ~/.claude/audit.log"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo "$(date '+%Y-%m-%d %H:%M:%S') | Tool: $CLAUDE_TOOL_NAME | Completed" >> ~/.claude/audit.log"
          }
        ]
      }
    ]
  }
}

// より詳細なログスクリプト (log-audit.sh)
#!/bin/bash
LOG_FILE="$HOME/.claude/audit.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$TIMESTAMP] Tool: $CLAUDE_TOOL_NAME" >> "$LOG_FILE"
echo "  Input: $CLAUDE_TOOL_INPUT" >> "$LOG_FILE"
if [ -n "$CLAUDE_FILE_PATH" ]; then
  echo "  File: $CLAUDE_FILE_PATH" >> "$LOG_FILE"
fi
echo "" >> "$LOG_FILE"

こんな時に使う

  • Claude の操作を監査したい時
  • セキュリティ記録を残したい時

使い方

  1. 1settings.json の hooks.PreToolUse にログ記録コマンドを追加
  2. 2環境変数 $CLAUDE_TOOL_NAME, $CLAUDE_TOOL_INPUT を使用
  3. 3ログファイルのパスは適宜変更(~/.claude/audit.log など)
  4. 4PostToolUse で完了記録を追加するとより詳細に

Tips

  • ログには機密情報が含まれる可能性があるので保護する
  • ログローテーションを設定して肥大化を防ぐ
  • jq でログを解析しやすい JSON 形式にするのも有効
  • 重要な操作のみログしたい場合は matcher で絞り込み