0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeが暴走したら止める方法3つ——Ctrl+Cが効かない時の最終手段

0
Last updated at Posted at 2026-04-04

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の安全運用に必要なフックが揃っている。

もっと知りたい方へ


あなたの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 しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?