1週間で2件、Claude Codeがデータベースを消す事故が報告された。
事故1:SQLiteデータベースの全削除(#37405)
677件のPDFをOCR処理して作った301MBのSQLite FTS5データベース。完成していた。
新しいセッションでClaude Codeが起動した。指示なし、確認なし、警告なし。full_index()を実行した。既存のデータベースを削除して、インデックスを最初から作り直した。
事故2:Laravelのmigrate:fresh(#37439)
テストデータベースのスキーマを修正しようとして、Claude Codeがphp artisan migrate:fresh --env=testingを実行した。
問題は、.env.testingファイルが存在しなかったこと。Laravelの--envフラグはファイルがなければ.envにフォールバックする。.envは本番データベースを指していた。
全データが消えた。
なぜ起きるか
Claude Codeはデータベースコマンドの危険性を「知っている」。だが知っていることと実行しないことは別。
コンテキストが長くなると、システムプロンプトの指示が薄れる。「本番DBに触るな」というCLAUDE.mdの指示は、100回目のツール呼び出しでは最初ほど効かない。
フックで防ぐ
PreToolUseフックはコンテキスト長に関係なく、毎回のツール呼び出しで実行される。
#!/bin/bash
COMMAND=$(cat | jq -r '.tool_input.command // empty' 2>/dev/null)
[[ -z "$COMMAND" ]] && exit 0
# Laravel
if echo "$COMMAND" | grep -qiE 'artisan\s+(migrate:fresh|migrate:reset|db:wipe)'; then
echo "BLOCKED: 破壊的データベースコマンド" >&2
exit 2
fi
# .envファイル存在チェック
if echo "$COMMAND" | grep -qE 'artisan.*--env='; then
ENV_NAME=$(echo "$COMMAND" | sed -n 's/.*--env=\([a-zA-Z0-9_]*\).*/\1/p')
if [ -n "$ENV_NAME" ] && [ ! -f ".env.$ENV_NAME" ]; then
echo "BLOCKED: .env.$ENV_NAME が存在しない(.envにフォールバックする)" >&2
exit 2
fi
fi
# Django
if echo "$COMMAND" | grep -qiE 'manage\.py\s+(flush|sqlflush)'; then
echo "BLOCKED: 破壊的データベースコマンド" >&2
exit 2
fi
# 生SQL
if echo "$COMMAND" | grep -qiE 'DROP\s+(DATABASE|TABLE)|TRUNCATE'; then
echo "BLOCKED: 破壊的SQL" >&2
exit 2
fi
exit 0
exit code 2は絶対ブロック。Claudeは上書きできない。
設定
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/block-database-wipe.sh" }]
}]
}
}
教訓
CLAUDE.mdに「データベースを消すな」と書いても、コンテキストが長くなれば無視される。フックは無視されない。
ルールを書くな。フックを書け。
🛡 npx cc-safe-setup — 667の安全フック + 9,200+のテストを10秒でインストール
📖 トークン消費に困っているなら → Claude Codeのトークン消費を半分にする——800時間の運用データから見つけた実践テクニック(¥2,500・はじめに+第1章 無料)
⚠ Opus 4.7緊急情報(2026年4月)
auto modeの安全分類器がOpus 4.6にハードコードされており、Opus 4.7では正常に機能しない(#49618)。hookはモデル非依存で動作するため、分類器の故障に関係なく防御が機能する。→ Opus 4.7 Survival Guide / Safety Scanner
📖 AIで事業を回す実体験を全記録 → Claude Code×個人事業 800時間の全記録(¥800・第2章まで無料)
⚠️ 新CVE公開(2026年4月): CVE-2026-21852でプロジェクト内の.claude/settings.jsonからAPIキーが窃盗される脆弱性が判明。npx cc-safe-setupはユーザーレベル設定のみを使用するため、この攻撃に免疫がある。詳細: Opus 4.7 Survival Guide(48問題追跡中)
📚 関連商品 (2026 年 5 月 22 日発売): 本記事の「データベースを消した 2 件」 の系統の継続として、 利用者の集まりが観察した 27 件の同型の事例 (主張と実態の乖離 + 信頼の境界の崩壊) と 14 件の防衛の手順を整理した Claim-Verify Handbook (Gumroad、 19 米ドル、 同日発売)、 そして留まる + 切り替えるの 8 gate / 13 leaf の判定の樹を含む Migration Playbook 第 2 版 (Gumroad、 19 米ドル、 第 1 版の購入者は無償の更新)。
📚 関連の参考資料 (2026年5月28日追加)
本記事の内容と関連する整理を、 公開済の素材で articulate しています。
-
6月15日の課金分離の決定の枠組み: Migration Playbook v2 (Gumroad、 $19) ——14日後の決定の整理、 9集積の文脈、 130件の claim-verify divergence の事例。 60秒の購入判定の道具で事前判定が可能
-
月次の追補の継続: CC Safety Lab Founder Membership (Ko-fi、 ¥500/月) ——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問の質問→推奨経路の道具
-
750+ MIT-licensed の hooks: cc-safe-setup (GitHub) ——14日で1,127人の独立利用者、 9集積の対応の hooks の整備の累計