Claude Code Meetup ・ Lightning Talk
Claude Code が
本番を壊す日
報告された事故と、hook で機械的に止める方法。
そして、止められなかった時にどう戻すか。
自己紹介
「実物の hook」で話します
- cc-safe-setup=Claude Code の無料の安全 hook 集(MIT)
- 重複なしの clone が直近14日で約 1,900 件(CI 等の自動取得を含む実測)。星と、番号で辿れる事故から作っているのが中身の裏づけ
- 全部、実際に報告された事故から作って、実機で挙動を検証している
座学ではなく、コピーして今日から効く実物の話をします。
恐怖は妄想ではない
2026年、実際に起きたこと
$1,446 の無断の送金
生成したスクリプトが承認なしに金銭の処理を実行 ·
#46828
パターン
派手な事故の正体は
数個の破壊的なコマンド
rm -rf / git reset --hard / drizzle-kit push --force / prisma db push --accept-data-loss
どれも、たった1つのフラグで、確認の問いも出さずに走る。
そして、消えたものは戻らない。
よくある誤解
「CLAUDE.md に書けば守る」は効かない
- CLAUDE.md の指示は無視されて機密が漏れた · #2142
- auto モードが削除を「安全」と誤分類して確認なしで実行 · #64559
- 補助のエージェントが頼んでない15ファイルを書き換え · #65152
お願いの言葉は、実行を止めない。
止めるなら、実行の層に置く。
効く場所
PreToolUse hook = 実行の直前の関所
Claude が道具(Bash・Edit・Write)を呼ぶ直前に、こちらのスクリプトが割り込む。
危険なら exit 2 を返して、その実行を止める。
# 破壊的なコマンドを止める PreToolUse hook
入力(コマンド)→ パターンに一致?
一致 → exit 2(ブロック)
不一致 → exit 0(通過)
お願いではなく、機械的なゲート。auto モードでも効く(実機で確認済み)。
デモ 1
再帰削除を止める
$ rm -rf ~/
→ PreToolUse: rm-safety-net
BLOCKED: 絶対パス/ホーム配下の再帰削除を拒否(exit 2)
$ rm -rf node_modules
→ 通過(プロジェクト内の安全な削除)
全部を禁止しない。取り返しのつかないものだけを止める。
デモ 2
補助エージェントの暴走を止める
# 「2コマンド実行して」→ 補助が15ファイルを無断書き換え(#65152)
Edit/Write に agent_id が付く=補助由来と分かる
高リスクのパス(本番の設定・マイグレ・.env)への
補助由来の書き込み → 止める、メインは無干渉
実行の層で「誰の書き込みか」を見て、巻き添えを防ぐ。
それでも起きたら
復旧の手順と、正直な限界
- git の取り消し:reflog・worktree の削除からの復旧の順番
- DB:プロバイダ別の PITR(時点復旧)の手順
- ただし、バックアップが無いと通常は戻らない(正直に書く)
「戻せない」を隠さないことが、次の事故を防ぐ。
個人 → チーム
組織のリスクは
最も無防備な1人で決まる
19人が丁寧に設定しても、20人目(新人)は何も設定していない。
エージェントは同じリポジトリと同じ認証情報に対して走る。
- 組織の baseline をリポジトリに置く=クローンが設定になる
- CI に安全のゲート=弱った設定を pull request で捕まえる
- 回避(--no-verify)の監査=「効いている」をログで示す
差別化
教える のではなく 実物を残す
運用の層のガードレール
配って、実機で効く。
事故を機械的に止める。
報告された事故から作った、動く hook と CI のゲート。
これが、座学に勝てる唯一の差別化。
まとめ
今日から、無料で始められる
$ npx cc-safe-setup
- 無料・MIT。中核の hook はこれからもずっと無料
- 事故は「お願い」でなく「実行の層」で止める
- チームなら、組織の baseline と CI のゲートと監査まで
github.com/yurukusa/cc-safe-setup
チーム導入の相談 → 法人向けサービス