CC逆引きリファレンス

コンテキスト圧縮前にフックを実行したい

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
公式ドキュメントを見る

こんな時に使う

  • コンテキスト圧縮前に重要な状態を保存したい時
  • 圧縮によって失われる情報をバックアップしたい時
  • 圧縮のタイミングをログに記録したい時

使い方

  1. 1hooks.PreCompact にフックを定義
  2. 2PostCompact(圧縮後)と合わせて使うのが効果的
  3. 3終了コード 2 で圧縮をブロック可能

Tips

  • PostCompact と組み合わせて圧縮の前後を管理
  • 自動圧縮(autoCompact)と手動 /compact 両方で発火
  • 終了コード 2 を返すと圧縮をキャンセルできる