はじめに
Claude Codeのhooks機能を使っていると「このイベントでどんなデータが渡されるんだろう?」と思うことがよくあります。なんのイベントでどんなデータを受け取っているか知っておくと、かゆいところに手が届くスクリプトがかけて、はかどると思うので、メモしておきます。
ログ記録用設定ファイル
~/.claude/settings-logging.json
に以下の内容を保存します:
~/.claude/settings-logging.json
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"hooks": {
"PreToolUse": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"PostToolUse": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"SubagentStop": [
{
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"PreCompact": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
],
"SessionStart": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "jq . >> /tmp/claude-hooks.log",
"timeout": 30
}
]
}
]
}
}
使い方
1. ログ記録モードで起動
# 設定ファイルを指定して起動
claude --settings ~/.claude/settings-logging.json
2. ログの確認
セッション中、全てのフックイベントが/tmp/claude-hooks.log
に記録されます:
# ログをリアルタイムで監視
tail -f /tmp/claude-hooks.log