CLAUDE.mdに「必ずbackend/に移動してからnpm startを実行しろ」と書いた。メモリファイルにも書いた。5回更新した。
Claudeは覚えた。そして忘れた。ルートディレクトリでnpm startが実行され、本番DBの接続先が切り替わらないまま開発データが流入した。
#44962でClaude自身がこう書いている: 「ルールを暗唱できるが、プレッシャー下では実際の行動を制約しなかった」。GitHub上では「CLAUDE.mdが無視される」報告が30件以上存在する。これはバグじゃない。LLMの構造的な限界だ。
なぜメモリは効かないのか
CLAUDE.mdやメモリファイルの内容は、システムプロンプトとして注入される。モデルは見る。でも従うとは限らない。
コンテキストが長くなるほどルールは薄まる。10ツール呼び出しを超えると、セッション開始時に読んだルールの影響力は下がる。
「記憶した」と「実行する」は別。
フックは無視できない
PreToolUseフックは全てのツール呼び出しの前に実行される。exit 2で終了すると、ツールはブロックされる。モデルがいくら実行しようとしても、物理的に動かない。
メモリは「お願い」。フックは「壁」。
具体例1:ディレクトリ指定
メモリ版(時々無視される):
backend/に移動してからnpm startを実行すること。
フック版(毎回ブロック):
#!/bin/bash
CMD=$(cat | jq -r '.tool_input.command // empty' 2>/dev/null)
[[ -z "$CMD" ]] && exit 0
if echo "$CMD" | grep -qE '(npm start|node server)' && \
! echo "$CMD" | grep -qE '(cd backend|backend/)'; then
echo "BLOCKED: backend/から実行してください" >&2
exit 2
fi
exit 0
具体例2:コミット前デプロイ禁止
メモリ版:
デプロイ前に必ずコミットすること。未コミットの変更は同期で失われる。
フック版:
#!/bin/bash
CMD=$(cat | jq -r '.tool_input.command // empty' 2>/dev/null)
[[ -z "$CMD" ]] && exit 0
if echo "$CMD" | grep -qE '(rsync|scp|deploy).*prod'; then
DIRTY=$(git status --porcelain 2>/dev/null | head -1)
if [[ -n "$DIRTY" ]]; then
echo "BLOCKED: 未コミットの変更があります。先にコミットしてください" >&2
git status --short >&2
exit 2
fi
fi
exit 0
いつメモリを使い、いつフックを使うか
| メモリが適切 | フックが適切 |
|---|---|
| 「データサイエンティストです」 | 「.csvを削除するな」 |
| 「PostgreSQLを使っている」 | 「DROP TABLEを実行するな」 |
| 「関数型が好み」 | 「テストなしでコミットするな」 |
判断基準:同じルールを2回書いてもClaude が無視したら、フックにする時。
インストール方法
# フックファイルを保存
chmod +x ~/.claude/hooks/my-hook.sh
# settings.jsonに追加
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/my-hook.sh" }]
}]
}
}
参考
この記事は700時間以上の自律運用で、CLAUDE.mdのルールが守られないケースに繰り返し遭遇した経験がきっかけだ。「メモリはお願い、フックは壁」——この区別を知っているだけで、同じ事故を防げる。
関連記事
- Claude CodeのPreToolUseフックで危険な操作を自動ブロックする — PreToolUseの実装詳細
- Anthropic公式「Skills完全ガイド」 — CLAUDE.mdの設計パターン
- Claude Codeを108時間無人で走らせて起きた全事故と安全装置 — メモリとフックの使い分け実例
トークン消費の最適化については Token Checkup(無料診断ツール)で自分の消費パターンを確認できます。
📖 トークン消費に困っているなら → Claude Codeのトークン消費を半分にする——800時間の運用データから見つけた実践テクニック(¥2,500・はじめに+第1章 無料)
CLAUDE.md に書いたのに守られない、という人へ。指示ファイル(CLAUDE.md / AGENTS.md)の様式の選び方や、複数のツールでの共有、そして「書いたのに静かに無視される」書き方の見分け方は AGENTS.md 運用の手引き(¥1,500) にまとめています。無料の試し読みで、自分の指示ファイルがどの様式かを見分ける章まで読めます。
関連記事: Claude Codeのトークン消費を減らす5つの方法——Opus 4.7対応
:::note info
📖 AIで事業を回す実体験を全記録 → Claude Code×個人事業 800時間の全記録(¥800・第2章まで無料)。hookの裏にある800時間の実体験——赤字$572からの回収記録。
:::
⚠️ 新CVE公開(2026年4月): CVE-2026-21852でプロジェクト内の.claude/settings.jsonからAPIキーが窃盗される脆弱性が判明。npx cc-safe-setupはユーザーレベル設定のみを使用するため免疫。Survival Guide(48問題追跡中)
⚠️ Opus 4.7緊急情報(2026年4月17日)
Opus 4.7のauto mode安全分類器がOpus 4.6にハードコードされている問題が発覚。3日間で23件以上のデータ損失。さらにv2.1.100以降、APIコールごとに約20,000トークンが見えない場所で追加課金されている問題も判明(#46917、GitHub上196件のリアクション)(50GB永久消失含む)。4倍のトークン消費も報告されている。対策: npx cc-safe-setup --opus47(Survival Guide / Safety Scanner)
関連の素材
5月22日に新刊の事例集 Claude Code Claim-Verify Handbook ($19、 約89頁、 約113,000字) を公開しました。 道具が「成功した」 「比較した」 「設定された」 と主張する一方で実態が乖離していた事例を GitHubの起票の集まりから130件 (本文15件+付録D 115件) 整理した本で、 14件の防衛の手順と5件の自動の点検の道具と一緒に提供しています。 試し読みのGist (約16,000字、 章1の全件) は こちら。
予防 hook の集まりは cc-safe-setup (MIT、 約800件の hook)。 月額の継続の媒体 Claude Code 事故まとめ(無料・月次) (¥500/月) は毎月の事故の整理を配信。
📚 関連の参考資料 (2026年5月28日追加)
本記事の内容と関連する整理を、 公開済の素材で articulate しています。
-
6月15日に予定された課金分離(当日に一時停止・再実施に備える)の判定の枠組み: Migration Playbook v2 (Gumroad、 $19) ——14日後の決定の整理、 9集積の文脈、 130件の claim-verify divergence の事例。 60秒の購入判定の道具で事前判定が可能
-
月次の追補の継続: Claude Code 事故まとめ(無料・月次) ——5月から12月の8ヶ月の章本文 (cache_control / 副の作業者 / AGENTS.md / Pro Max / 権限 / Skills / v2.1.150 / AUP false-positive)
-
9集積の枠組みの英語の長編 Gist: The 9-Cluster Framework: Mapping the Structural Failure Surface of Claude Code Operator Defense ——約3,300単語、 全件の集積の mechanism / symptom family / defense path の整理。 cluster 9 (Usage Policy classifier over-trigger on Opus、 25+件の起票) の対話型診断道具: 4問の質問→推奨経路の道具
-
約800件の MIT ライセンスの hook: cc-safe-setup (GitHub) ——9集積に対応する hook を整備した累計
800時間の Claude Code 運用データから、トークン消費の削減・複数ベンダー(Claude / Codex / Gemini / Copilot)の並行運用・事故の検知と復旧・サブエージェントの沈黙の失敗対策など、主題別の手引きを公開しています。気になる人は著者の本の一覧から、価格と評価を見て選べます。