Ctrl+Cでは間に合わない
Claude Codeを自律モードで放置すると、こうなることがある。
- 同じコマンドを数百回繰り返すリトライループ
- 4時間以上回り続けてトークンが溶ける
-
/tmpにファイルが数千個溜まる(#8856, 67リアクション)
暴走してからCtrl+Cを押すのではなく、自動で止まる仕組みを先に入れておく。 Claude Codeのhooks機能で3つの防衛線を張る方法を解説する。
方法1: Stopフック——セッション終了時の後始末
問題
Claude Codeは/tmp/claude-*-cwdを作るが削除しない。セッション終了時にコミット忘れの変更が放置されることもある。
フックコード(tmp-cleanup.sh / Stopトリガー)
#!/bin/bash
# 1時間以上前のcwdファイルを削除
find /tmp -maxdepth 1 -name 'claude-*-cwd' -type f -mmin +60 -delete 2>/dev/null
REMAINING=$(find /tmp -maxdepth 1 -name 'claude-*-cwd' -type f 2>/dev/null | wc -l)
[ "$REMAINING" -gt 100 ] && echo "NOTE: $REMAINING files remain in /tmp" >&2
exit 0
settings.jsonへの登録:
{ "hooks": { "Stop": [{ "matcher": "", "hooks": [
{ "type": "command", "command": "~/.claude/hooks/tmp-cleanup.sh" }
]}]}}
インストール
npx cc-safe-setup --install-example tmp-cleanup
npx cc-safe-setup --install-example uncommitted-changes-stop # 未コミット警告も追加可
方法2: response-budget-guard——ツール呼び出し回数の上限
問題
「修正→テスト失敗→修正→テスト失敗…」のリトライループでツールが数百回呼ばれ、トークンが消える。#36339のようなファイル削除事故も、ループ中に発生しやすい。
フックコード(response-budget-guard.sh / PreToolUseトリガー)
#!/bin/bash
LIMIT="${CC_RESPONSE_TOOL_LIMIT:-50}"
STATE="/tmp/cc-response-budget-$(echo "$PWD" | md5sum | cut -c1-8)"
COUNT=0
[ -f "$STATE" ] && COUNT=$(cat "$STATE")
COUNT=$((COUNT + 1))
echo "$COUNT" > "$STATE"
[ "$COUNT" -eq "$LIMIT" ] && echo "WARNING: $COUNT tool calls. Retry loop?" >&2
if [ "$COUNT" -gt $((LIMIT * 2)) ]; then
echo "BLOCKED: $COUNT calls exceeds limit ($((LIMIT * 2)))." >&2
exit 2 # exit 2 = ツール実行をブロック
fi
exit 0
| 呼び出し数 | 動作 |
|---|---|
| 1〜49 | 通常通り |
| 50 | 警告 |
| 100(2倍) | ブロック |
CC_RESPONSE_TOOL_LIMIT環境変数で閾値を変更できる。
インストール
npx cc-safe-setup --install-example response-budget-guard
方法3: max-session-duration——時間制限
問題
長時間セッションではコンテキストウィンドウが溢れ、前半の指示を忘れて矛盾した変更を始める。コストも膨らむ。
フックコード(max-session-duration.sh / PostToolUseトリガー)
#!/bin/bash
MAX_HOURS="${CC_MAX_SESSION_HOURS:-4}"
STATE="/tmp/cc-session-start-$(echo "$PWD" | md5sum | cut -c1-8)"
NOW=$(date +%s)
if [ ! -f "$STATE" ]; then
echo "$NOW" > "$STATE"
exit 0
fi
START=$(cat "$STATE" 2>/dev/null || echo "$NOW")
ELAPSED=$(( (NOW - START) / 3600 ))
if [ "$ELAPSED" -ge "$MAX_HOURS" ]; then
MINS=$(( (NOW - START) / 60 ))
echo "WARNING: Session ${ELAPSED}h${MINS}m. Consider restarting." >&2
fi
exit 0
CC_MAX_SESSION_HOURSでデフォルト4時間を変更できる。
インストール
npx cc-safe-setup --install-example max-session-duration
3つまとめて入れる
| フック | トリガー | 守る対象 |
|---|---|---|
| tmp-cleanup | Stop | リソースリーク |
| response-budget-guard | PreToolUse | リトライループ |
| max-session-duration | PostToolUse | 長時間セッション |
3つは独立して動作するので、全部入れても干渉しない。
npx cc-safe-setup # 対話形式で選択
cc-safe-setupには446のフック例と6,000のテストがある。暴走防止以外にもrm -rfブロック、sudo禁止、DB削除防止など、Claude Codeの安全運用に必要なフックが揃っている。
もっと知りたい方へ
-
設定の安全診断:
npx cc-health-check - 体系的に学ぶ: Claude Code Hooks 実践ガイド(Zenn Book)
- 体験記: AIに仕事を任せてみた——800時間の全記録(¥800・第2章まで無料)
あなたのClaude Codeで一番困った「暴走」はどんなパターンでしたか?コメントで教えてください。
「どのhookを入れればいいかわからない」なら → Hook Selector(5つの質問で最適なhookセットを推薦)
「CLAUDE.mdのトークンコストが気になる」なら → Token Checkup(トークン消費パターンを診断)
📖 トークン消費に困っているなら → 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
⚠️ 新CVE公開(2026年4月): CVE-2026-21852でプロジェクト内の.claude/settings.jsonからAPIキーが窃盗される脆弱性が判明。npx cc-safe-setupはユーザーレベル設定のみを使用するため免疫。Survival Guide(48問題追跡中)
📚 800 時間の自律運用で観察された暴走の事故の集まりと防衛
本記事の暴走を止める手順の延長で、 800 時間の連続の自律運用で観察された 4 件の新規の silent failure の事例 (起票 #58916 / #58913 / #58914 / #58915、 v2.1.141 の出荷の同日に観察) は、 暴走の起点と同型の構造の系統。
4 月から 5 月の運用の事故の総括は、 Postmortems (Gumroad、 ¥4,350) に納めています。事故の状況の数値の証拠と、 安全装置の集まりへの組み込みの手順を 1 件の文書で読める形で整理しています (試し読み Gist - Incident #1: Cache TTL silent regression)。
加えて、 5/22 発売の Claude Code Claim-Verify Handbook は、 同型の暴走の前段の主張と実態の乖離の事例を 130 件で整理した試し読みを公開済 (無料、 約 9,900 字、 JP)。 暴走を止める手順を体系化した安全装置の集まりは cc-safe-setup (744 個の hook、 MIT、 無料) で取得可能。 月額の継続の更新は Safety Lab (Ko-fi、 ¥500/月) で。
📚 主張と実態の乖離の事例の整理と防衛の手順
本記事の暴走の停止の経路の延長で、 「停止の合図を発した」 と利用者が信じていた状態で、 模型の側で停止が発火しなかった事故の系統 (起票 #60226 認識はあるが止まらない、 60506 6日間の逸脱の自己報告) が継続的に発生しています。
5/22 発売の Claude Code Claim-Verify Handbook で、 同型の主張と実態の乖離の事例を 130 件 (本文 15 件 + 付録 D 115 件) に整理した試し読み (無料、 約 9,900 字、 JP) を公開済。 4 月から 5 月の運用の事故の総括は、 Postmortems (Gumroad、 ¥4,350) に納めています (試し読み Gist - Incident #1: Cache TTL silent regression)。
購入の検討の判断の助け (Should I buy the Claim-Verify Handbook?) の対話型の道具で、 無料の hook の解説で十分の場合の判定の経路も articulate しています。
📚 関連の参考資料 (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 の整備の累計