何が起きたか
GitHubのClaude CodeリポジトリにIssue #36339が投稿された。
自律モードのClaude Codeがrm -rfをプロジェクトディレクトリに実行した。Windows 11 + WSL2の環境。ディレクトリにはNTFS junction(シンボリックリンクの一種)が含まれていた。
rm -rfはjunctionを辿り、プロジェクトディレクトリだけでなくC:\Users配下を全削除した。
ドキュメント、ダウンロード、デスクトップ。全部消えた。
なぜ起きたか
Claude Codeはデフォルトで安全フックが0個。rm -rf /を実行しても止める仕組みがない。
ドキュメントにはフックの存在は書いてある。でも自動設定はされない。自分でbashスクリプトを書いて、settings.jsonに登録する必要がある。ほとんどの人はやらない。
作ったもの
npx cc-safe-setup
10秒で4つの安全フックを自動インストールする。
| フック | 何を防ぐか |
|---|---|
| Destructive Guard |
rm -rf /、rm -rf ~、rm -rf ..。git reset --hard、git clean -fdもブロック |
| Branch Guard | main/masterへの直接push |
| Syntax Check | Python/Shell/JSON/YAML/JSの構文エラーを編集直後に検出 |
| Context Monitor | コンテキストウィンドウが80%を超えたら警告 |
各フックは実際の事故から作られた。Destructive Guardは#36339のrm -rf事故。Branch Guardは深夜3時にmainにpushされた事故。Syntax Checkは構文エラーが30ファイルに連鎖した事故。
仕組み
-
~/.claude/hooks/に4つのシェルスクリプトを書き出す -
~/.claude/settings.jsonにフック登録を追加 - Claude Codeを再起動すれば有効
フックはPreToolUse(コマンド実行前)とPostToolUse(ファイル編集後)の2種類。PreToolUseフックがexit 2を返すとコマンドがブロックされる。
Destructive Guardの核心部分:
# rm on sensitive paths → ブロック
if echo "$COMMAND" | grep -qE 'rm\s+(-[rf]+\s+)*(/$|/\s|/home|~)'; then
echo "BLOCKED: rm on sensitive path" >&2
exit 2
fi
# ただしnode_modules/dist/buildは許可
インストール後
セットアップの確認:
npx cc-health-check
cc-safe-setupで4つの安全フックをインストールすると、Safety Guardsスコアが50% → 90%に上がる。
全体像
npx cc-health-check → 診断(無料)
npx cc-safe-setup → 4フック修正(無料)
claude-code-hooks → 11フック全部(無料OSS)
Ops Kit $19 → 全部入り+独占ツール
🛠 無料で始める: claude-code-hooks — 11個のproduction hooksをOSS公開中
📖 もっと詳しく: Claude Codeを本番品質にする実践ガイド(¥800)