AI最新ニュース 2026.06.04
Claude Codeコンパクション後にCLAUDE.mdルールが消える問題【2026年版】原因と5つの対策
コンパクション問題のメカニズム
セッション開始 → CLAUDE.md読み込み ← ここではルールを把握
↓(長い作業が続く)
コンテキスト80%消費 → 自動コンパクション発生
↓
CLAUDE.mdのルールが要約から消える → ルールを無視し始める
↓(対策なしでは危険)
禁止されていたはずの操作を実行してしまう
対策1: 重要ルールをシステムプロンプトに埋め込む
# guarded_claude.py
# CLAUDE.mdを毎回システムプロンプトに追加してAPIを呼ぶ
import anthropic
from pathlib import Path
import os
client = anthropic.Anthropic()
def load_all_claude_md(project_dir: str = ".") -> str:
"""プロジェクト階層とグローバルのCLAUDE.mdを全て読む"""
rules = []
current = Path(project_dir).resolve()
while current != current.parent:
for filename in ["CLAUDE.md", "AGENTS.md"]:
md = current / filename
if md.exists():
rules.insert(0, f"# {md}\n{md.read_text()}")
current = current.parent
global_md = Path.home() / ".claude" / "CLAUDE.md"
if global_md.exists():
rules.insert(0, f"# グローバルルール\n{global_md.read_text()}")
return "\n\n---\n\n".join(rules)
def ask_claude_with_rules(question: str, project_dir: str = ".") -> str:
"""CLAUDE.mdのルールを常にシステムプロンプトに含めて呼ぶ"""
rules = load_all_claude_md(project_dir)
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=2048,
system=f"""あなたはコーディングアシスタントです。
以下のプロジェクトルールを必ず守ってください:
{rules}
ルールに違反しそうな場合は「確認: [操作内容]をしてよいですか?」と必ず確認してから実行してください。""",
messages=[{"role": "user", "content": question}]
)
return response.content[0].text
対策2: 定期的なルールリマインダー
# セッション中に定期的にCLAUDE.mdを再確認させる
claude "CLAUDE.mdのルールを確認して、現在のセッションで守れているか教えてください"
# コンパクション後にルールを再注入する
claude "セッション継続。CLAUDE.mdを再読込して、以下の作業を再開してください: [タスク内容]"
対策3: CLAUDE.mdの重要ルールを強調する
<!-- CLAUDE.md ← コンパクション後も残りやすい書き方 -->
# ⚠️ 絶対ルール(セッション中いつでも有効)
> **注意: これらのルールはコンパクション後も常に有効です**
1. production/ フォルダを変更しない(例外なし)
2. git push --force を実行しない
3. APIキー・パスワードをコードに書かない
## ルールの確認方法
不明な場合: 「このプロジェクトで禁止されている操作を教えて」と質問してください
対策4: セッションをこまめに区切る
# 長い作業を始める前にClaude Codeを新規起動
# → CLAUDE.mdが再読み込みされる
# 目安: 以下のタイミングで新セッションを開始
# - 大きな機能実装の前
# - ブランチを切り替えるとき
# - コンテキストが70%を超えたとき(/status で確認)
claude # 新規セッション開始
対策5: ccusageで使用量を監視する
# npm install -g ccusage でインストール
ccusage # 今日の使用量とコンテキスト残量を確認
# 残量が少なくなったらアラート
ccusage --alert-threshold 0.8