Claude Code 自律実行のループ&コスト爆発を回避する5つのルール【リスク管理チェックリスト】

/goal は強力だが、設定を誤ると 数千円〜数万円のコスト爆発・無限ループ・破壊操作 が起こり得る。
この記事では実害パターン10個・防止チェックリスト10項目・Kanau Tech™の5つの運用ルールを提示する。
なぜリスク管理が重要か
/goal は「自律性を増幅する仕組み」だ。 方向が正しいときは強力だが、間違った方向にも強力に動く。
正しいゴール → 高速に完了 → 価値創出
誤ったゴール → 高速に暴走 → 損害発生
自律性と暴走は表裏一体。 リスク管理は機能を使う前提条件である。
実害パターン10個
実際にX/GitHub Issues で報告されている暴走パターン。
| パターン | 症状 | 損害規模 |
|---|---|---|
| 完了条件曖昧 | 評価器が「未達成」を返し続け無限ループ | 数千円〜数万円 |
| ターン上限なし | /goal文に or stop after N turns 漏れで暴走 | 1暴走で約2,000円 |
| 同じファイル繰り返し編集 | 「修正→失敗→再修正」を延々繰り返す | 累積ターン100超 |
| 評価器の誤判定で停止せず | ログに「達成」っぽい文字列混入 | コスト+作業時間損失 |
| 本番DBへの誤実行 | do not 不足、DROP TABLE 走る | データ破壊(致命的) |
| 認証情報の意図しない変更 | .env ファイルが書き換わる | サービス停止 |
| 並列実行で API rate limit | matrix strategyで429エラー | デプロイ失敗 |
| 長文 progress.md でトークン累積 | 10KB超のmd を毎ターン再読込 | コスト3-5倍 |
| 深夜実行で気付かず暴走 | 翌朝発見、数時間ループ | 数万円規模 |
| Webhook URLハードコード | プロンプト内に書き込み、Git公開 | 認証情報漏洩 |
防止チェックリスト10項目
新規 /goal を実行する前に、必ず通すチェックリスト。
# /goal 実行前チェックリスト
## 完了条件
- [ ] 1. 完了条件が観測可能な動詞で書かれている
- [ ] 2. 条件達成の「証拠」が会話ログから30秒で確認可能
- [ ] 3. 複数の独立した証拠を要求している
## 上限・安全装置
- [ ] 4. `or stop after N turns` でターン上限が設定されている
- [ ] 5. `or stop after N minutes` で時間上限が設定されている(任意)
- [ ] 6. Anthropic Console の Budget Alert + permissions.deny で破壊操作ブロック設定済み
## 影響範囲制限
- [ ] 7. `do not` ブロックで触らないファイル・コマンドが明示されている
- [ ] 8. 本番DB / 認証情報ファイル(.env等)が対象外
- [ ] 9. Workspace信頼パスが対象プロジェクトに限定されている
## 監視・通知
- [ ] 10. 完了・失敗のWebhook通知が設定されている(深夜実行時必須)
10項目すべてYesになるまで /goal は走らせない。 これがKanau Tech™の現場ルール。
Kanau Tech™ の5つの運用ルール
/goal を本番運用する際の絶対ルール。
ルール1: ターン上限必須
# ❌ NG
/goal テスト全件通過
# ✅ OK
/goal テスト全件通過, or stop after 15 turns
例外なし。 どんなに自信があっても上限を併記する。
ルール2: do not ブロック厳格化
do not:
- migrations/ フォルダは触らない
- .env / .env.* は読み込まない・書き換えない
- 本番DB接続文字列(postgres://prod-*)でクエリ実行しない
- git push --force / git reset --hard は実行しない
- rm -rf / sudo は使わない
- node_modules / package-lock.json を変更しない
1業務につき5-10項目の do not が標準。多すぎると感じるくらいが適切。
ルール3: 本番DB / 本番API 非対象
本番環境への接続は /goal 対象外。「テスト環境で動作確認 → 人手で本番反映」 の2段構えにする。
do not:
- 環境変数 ENV=production の状態で起動しない
- DATABASE_URL に「prod」が含まれる場合は実行を中止
- API_BASE_URL=https://api.kanautech.jp/* には書き込まない
ルール4: Webhook通知標準
成功・失敗どちらでもSlack通知。気付かず暴走する事態を防ぐ。
# wrapper script例
claude -p "/goal ..." && \
curl -X POST -d '{"text":"goal完了"}' "$SLACK_HOOK" || \
curl -X POST -d '{"text":"goal失敗 / 暴走の可能性"}' "$SLACK_HOOK"
ルール5: 月予算アラート
Anthropic公式の Budget Alert で 月予算の80%到達時にメール通知。さらに95%で自動停止設定。
予算アラート設定:
- 50%到達 → ログのみ
- 80%到達 → メール通知
- 95%到達 → API Key一時停止
暴走を即停止する Kill Switch
事前にKill Switchを用意しておく。 いざという時に1コマンドで止める。
# 対話セッション
/goal clear # /goal だけ止める
Ctrl+C, Ctrl+C # プロセス強制終了
# Headless / CI/CD
pkill claude # ローカル
gh workflow disable auto-improve-coverage # GitHub Actions無効化
crontab -r # cron全停止(最終手段)
# 全てのClaude Code実行を即時停止
killall claude
Slackに /goal-emergency-stop コマンドを仕込んで、ボタン1つで全停止できるようにしておくのが理想。
3層防御モデル(公式仕様準拠)
リスク管理は 3層で構築する のが基本。
層1: /goal文での個別制御(ゴール単位)
├ ターン上限 (or stop after N turns)
├ 時間上限 (or stop after N minutes)
└ 完了条件の厳格化(観測可能な動詞)
層2: settings.json の permissions(プロジェクト単位)
├ permissions.deny で破壊操作ブロック
├ additionalDirectories で範囲限定
└ Edit(.env*) で機密ファイル保護
層3: 運用・Anthropic公式安全装置
├ Webhook 通知(成功・失敗)
├ Anthropic Budget Alert(月予算)
└ Kill Switch(/goal clear, pkill)
3層すべて備えれば、暴走リスクを大幅に下げられる。 ただし /goal 自体に「累積トークン上限で停止」のような公式停止条件はないため、ターン上限が最重要安全装置となる。
よくある質問
ターン上限なしは絶対NGですか?
はい、本番運用では絶対NGだ。完了条件が曖昧で評価器が誤判定し続けると無限ループに陥り、数千円〜数万円のコスト爆発が起こり得る。最低でも or stop after 15 turns を必ず併記してほしい。
コスト上限を設定する方法は?
公式の/goal仕様にトークン累積上限はない。代替策として:
/goal文にor stop after N turnsを必ず併記(最重要)- Anthropic Console の Budget Alert を月単位で設定(80%到達でメール通知)
- CI/CDでは
$/run単位のコスト管理スクリプトを別途実装 --max-budget-usdフラグ(--printモード時に利用可)でランごとの上限を指定
暴走したらどう止めますか?
対話セッションは /goal clear で即停止、Ctrl+C 2回でプロセス強制終了。CI/CDジョブは GitHub Actions の Cancel workflow、cronジョブは pkill claude で停止できる。事前にKill switchを用意しておくのが鉄則。
業務時間外の実行は危険ですか?
監視できる時間帯のみが原則だ。深夜実行は便利だが、暴走時の発見が遅れる。最低限の3層防御(/goal のターン上限 / permissions.deny の破壊操作ブロック / Webhook通知)の設定が必須。
Kanau Tech™ のリスク管理ルールは何ですか?
5つある — ①ターン上限必須、②do not厳格化、③本番DB非対象、④Webhook通知標準、⑤月予算アラート。新規 /goal 導入時はこのチェックリストを必ず通す。
関連記事
- Claude Code /goal 完全ガイド — シリーズPillar
- Claude Code /goal 完了条件の書き方 — 5つのベストプラクティス — 条件設計
- Claude Code /goal トークン消費を最小化する — コスト計算&チューニング — コスト管理
- Claude Code /goal トラブルシューティング — 暴走時の対処
