結論
CLAUDE.mdに書いたルール自体はauto-compact後も消えていない。消えるのは「そのルールをどう適用するか」のセッション内コンテキスト(判断経緯・優先順位の積み上げ)だ。
PreCompact hookには2種類あり、目的が違う:
| 種類 | 目的 | Claudeの動作への影響 |
|---|---|---|
| バックアップ型(ファイルコピー) | 人間がcompact前の文脈を読み返せる | ない |
| ルール注入型(stdout出力) | compactサマリーに有効制約を含める | ある |
環境・前提
- Claude Code を sns-automation・masatoman.net のルーティンで 2026-05 から daily 運用
- 複数リポジトリを1セッションで横断する長時間セッション構成
- 2026-05-14 に Stop/PreCompact/UserPromptSubmit の 3 hook を初期実装
なぜCLAUDE.mdのルールが守られなくなるのか
誤解: auto-compact がCLAUDE.mdを圧縮している
正確: CLAUDE.mdはシステムプロンプトであり、compactの対象は会話履歴
消えるのは「このタスクではAを優先する」「前のセッションでBより先にCをやると決めた」といった、会話の中で積み上がったルール適用のコンテキストだ。
auto-compact後のClaudeはルールの文字は知っているが、適用優先度の判断に使う文脈が薄くなる。
バックアップ型hookの限界
最初に実装したprecompact-backup.shはこのような構成だ:
#!/bin/bash
INBOX="$HOME/_inbox/claude-sessions"
mkdir -p "$INBOX"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
SESSION_LOG="$HOME/.claude/current-session.jsonl"
if [ -f "$SESSION_LOG" ]; then
cp "$SESSION_LOG" "$INBOX/session_${TIMESTAMP}.jsonl"
echo "PreCompact backup: $INBOX/session_${TIMESTAMP}.jsonl"
fi
これはセッションログを人間が読み返すためのものだ。hookのstdout("PreCompact backup: ...")はステータス表示であり、Claudeがcompact時に参照するものではない。バックアップが取れてもClaudeの動作は変わらない。
ルール注入型hookの実装
PreCompact hookのstdoutとして出力した内容を、Claudeがcompactサマリー生成時に参照する。これを利用して現在の有効制約を注入する:
# ~/.claude/hooks/precompact-active-rules.sh
#!/bin/bash
ACTIVE_RULES="${PWD}/active-rules.md"
if [ -f "$ACTIVE_RULES" ]; then
echo ""
echo "=== CompactサマリーへのActive Rules注入 ==="
cat "$ACTIVE_RULES"
echo "==="
fi
// ~/.claude/settings.json(hooks抜粋)
{
"hooks": {
"PreCompact": [
{
"type": "command",
"command": "bash ~/.claude/hooks/precompact-backup.sh"
},
{
"type": "command",
"command": "bash ~/.claude/hooks/precompact-active-rules.sh"
}
]
}
}
active-rules.md はCLAUDE.mdとは別のファイルで、今のセッションで特に有効な制約だけを3〜5行で書く。CLAUDE.mdの全ルールを渡すと要約が薄まるため、今の優先度に絞ることが重要だ。
使い分けのまとめ
| 状況 | アプローチ |
|---|---|
| 圧縮前のログを人間が読み返したい | バックアップ型(ファイルコピー) |
| compact後もClaudeが設計判断の優先度を維持してほしい | ルール注入型(stdout出力) |
| 両方必要 | hooks配列に並べて両方実行 |
2つのhookはClaude Codeの設定で配列に並べれば順次実行される。バックアップ型と注入型は排他でなく、併用が自然だ。
AI ツールを業務に組み込む設計の実験ログを書いています。 https://masatoman.net