コンテキスト圧縮前にフックを実行したい
11. フックコマンド / 機能
PreCompact圧縮前処理フック
概要
PreCompact フックはコンテキストウィンドウの自動圧縮(compact)が実行される直前に発火します。圧縮前に状態を保存したり、重要情報をメモリに書き出したりするのに使います。
設定例
// .claude/settings.json
{
"hooks": {
"PreCompact": [
{
"type": "command",
"command": ".claude/hooks/pre-compact.sh"
}
]
}
}
// 圧縮前に作業状態を保存する例
#!/bin/bash
# 現在の作業ログをファイルに保存
timestamp=$(date +%Y%m%d_%H%M%S)
echo "$CLAUDE_HOOK_DATA" > .claude/compact-snapshots/$timestamp.json
echo "[PreCompact] Snapshot saved: $timestamp" >&2こんな時に使う
- コンテキスト圧縮前に重要な状態を保存したい時
- 圧縮によって失われる情報をバックアップしたい時
- 圧縮のタイミングをログに記録したい時
使い方
- 1hooks.PreCompact にフックを定義
- 2PostCompact(圧縮後)と合わせて使うのが効果的
- 3終了コード 2 で圧縮をブロック可能
Tips
- PostCompact と組み合わせて圧縮の前後を管理
- 自動圧縮(autoCompact)と手動 /compact 両方で発火
- 終了コード 2 を返すと圧縮をキャンセルできる