Claude Code は Auto Mode で DROP DATABASE・prisma migrate reset・rails db:drop・php artisan migrate:fresh を、警告なしに実行できます。たった1つのコマンドで、本番のデータが一瞬で消えます。確認も、ゴミ箱も、取り消しもありません。
実際の事故: テストが本番のデータベースを消した
#401 — Claude が本番のデータベースの URL の入った .env を読み込み、その状態でテストを走らせて、本番のデータベースを丸ごと消した。
日本語圏でも、AI のコーディングのエージェントが「本番のデータベースと長年分の顧客のデータを一瞬で消した」という事例が広く共有されています。原因はどれも同じ構造です——確率的なモデルが、破壊的なコマンドを「必要だ」と判断し、誰の確認も経ずに実行できてしまう。
block-database-wipe の hook が捕まえるもの:
DROP DATABASE / DROP TABLEprisma migrate reset / prisma db push --force-resetrails db:drop / rails db:resetphp artisan migrate:freshdjango-admin flush / python manage.py flushsequelize db:dropTRUNCATE TABLE「本番のデータベースを消すな」と CLAUDE.md に書くのは無駄ではありません。私が測った48試行では、禁止を書いた25試行で違反は0回でした。取り返せない操作(ファイルの削除)で測った回も同じ向きでした。違うのは保証の質です。ルールが効いているのはモデルがそう選んでいるからで、次も選ぶ保証はありません。しかも長い対話でルールが文脈から押し出されたあとは、私も測れていません。hook はプロセスの層で、モデルの制御の外で動きます。終了コード2で終わる PreToolUse の hook は、そのコマンドが実行される前に止めます。止めるのは終了コード2のときだけなので、hook 自身が落ちると黙って素通しします。入れたら一度は実際に止まることを確かめてください。
npx github:yurukusa/cc-safe-setup --install-example block-database-wipe
あるいは安全の設定を丸ごと入れる:
npx github:yurukusa/cc-safe-setup --shield
Claude が DB_DATABASE=production_db の入った .env を読み込んだ状態で php artisan migrate:fresh を走らせた場合、この hook が止めます。ただし根本の原因は .env がシェルに読み込まれること(English) なので、両方を直してください。
npx github:yurukusa/cc-safe-setup --install-example block-database-wipe
892の hook · 9,200以上のテスト
cc-safe-setup はオープンソースで、依存はなく、グローバルには何も入れません。すべての hook はローカルで動きます。GitHub でソースを見る。
さらに詳しく: 事故防止の実践ガイド(Zenn) / Kindle版(2026年6月時点の内容) · English version · 全ツール