操作をログしたい
13. セキュリティリスク回避コマンド / 機能
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 の操作を監査したい時
- セキュリティ記録を残したい時
使い方
- 1settings.json の hooks.PreToolUse にログ記録コマンドを追加
- 2環境変数 $CLAUDE_TOOL_NAME, $CLAUDE_TOOL_INPUT を使用
- 3ログファイルのパスは適宜変更(~/.claude/audit.log など)
- 4PostToolUse で完了記録を追加するとより詳細に
Tips
- ログには機密情報が含まれる可能性があるので保護する
- ログローテーションを設定して肥大化を防ぐ
- jq でログを解析しやすい JSON 形式にするのも有効
- 重要な操作のみログしたい場合は matcher で絞り込み