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 のルールは、プロンプトの文脈の一部にすぎません。文脈が一杯になればルールは押し出され、Claude がそのコマンドを「必要だ」と判断すれば無視されます。hook はプロセスの層で、モデルの制御の外で動きます。終了コード2で終わる PreToolUse の hook は、そのコマンドが実行される前に止めます——モデルはこれを迂回できません。
npx cc-safe-setup --install-example block-database-wipe
あるいは安全の設定を丸ごと入れる:
npx cc-safe-setup --shield
Claude が DB_DATABASE=production_db の入った .env を読み込んだ状態で php artisan migrate:fresh を走らせた場合、この hook が止めます。ただし根本の原因は .env がシェルに読み込まれること(English) なので、両方を直してください。
npx cc-safe-setup --install-example block-database-wipe
734の hook · 9,200以上のテスト
cc-safe-setup はオープンソースで、依存はなく、グローバルには何も入れません。すべての hook はローカルで動きます。GitHub でソースを見る。
さらに詳しく: 事故防止の実践ガイド(Zenn) · English version · 全ツール