Claude Code でやってはいけない 7 つ【2026年5月版】爆死を避ける運用ルール
Claude Code 導入の現場で実際に起きた失敗 7 パターンを「秘密情報漏洩 / 自動 git push / 本番 DB 直叩き / 無制限 Bash / 巨大コンテキスト / 監査ログ不在 / 過信」の観点で解説。各失敗に再現条件・最小再発防止策・コピペできる .claude/settings.json の deny 設定を掲載した運用ガイド。
Claude Code は強力ですが、設定を誤ると 「半日で取り返しのつかない事故」 が起きます。本稿は当メディア編集部および協業先 12 社で実際に発生した、または直前で防がれた失敗事例 7 件を、再現条件と最小再発防止策(コピペできる .claude/settings.json の deny ルール含む)と一緒にまとめた 運用前必読のガイド です。
まず結論: 最初に入れるべき 3 行の settings.json
長文を読む前に、これだけは今すぐコピペしてください。この 3 行で本稿で挙げた失敗 7 件のうち主要な 4 件のリスクを大きく下げられます。
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(git push --force*)",
"Read(./.env*)"
]
}
}
ファイル配置先: ~/.claude/settings.json(個人)または <project>/.claude/settings.json(プロジェクト)。deny は allow より優先され、該当パターンに一致するツール呼び出しはブロックされます。
1. .env.local を Claude に読ませて Slack / PR に流出 🔴
起きたこと: 開発者が 「.env.local の DB 接続を見て手順書を書いて」 と頼んだら、Claude が手順書本文に DATABASE_URL=postgres://user:p4ssw0rd@... をそのまま貼り、その手順書を Slack の #engineering に投稿してしまった。
なぜ起きるか: Claude には「秘密」という概念がない。読めるファイルは「使ってよいデータ」として扱う。
再発防止:
{
"permissions": {
"deny": [
"Read(./.env*)",
"Read(./secrets/**)",
"Read(**/credentials.json)",
"Read(**/*.pem)"
]
}
}
加えて .claudeignore を作成:
.env
.env.*
secrets/
*.pem
**/credentials.json
事後対応: 流出した認証情報は即時ローテーション。Slack の投稿は削除だけでは不十分(インデックス・通知履歴・Slackbot のキャッシュに残る)→ 取扱事故として記録、関係者通知、SOC2 監査がある場合はインシデント登録。
2. 自動 git push --force でリモート破壊 🔴
起きたこと: Claude にリベース作業を任せたら、コンフリクト解消後に「履歴がきれいになったので push します」と git push --force を実行。チームメンバー 4 人分の未 push コミットが消失。復旧に 6 時間。
なぜ起きるか: Claude は「成功させる」インセンティブで動くため、コンフリクトを「片付ける」方向にバイアスがかかる。force push を躊躇しない。
再発防止:
{
"permissions": {
"deny": [
"Bash(git push --force*)",
"Bash(git push -f*)",
"Bash(git reset --hard*)",
"Bash(git branch -D*)"
]
}
}
CLAUDE.md にも明文化:
## Git ルール(絶対)
- force push は **どんな理由でも** ユーザー確認なしで実行しない
- git reset --hard / branch -D は必ず確認
- 上流に push 済みコミットは amend / rebase しない(新規 commit で対応)
事後対応: GitHub なら git reflog + push の URL から復旧可能。ローカル reflog も 30 日は残るが、CI 環境では消えるため早期対応必須。
3. 本番 DB に直接 SQL を実行 🔴
起きたこと: 「ユーザーテーブルの古い行を削除して」と頼んだら、Claude が psql MCP 経由で本番 DB に DELETE FROM users WHERE last_login_at < ... を即実行。バックアップ取らずに 8,000 行消えた。
なぜ起きるか: MCP の DB Server を本番接続文字列で繋いでいると、Claude には開発 DB と本番 DB の区別が付かない。
再発防止:
{
"permissions": {
"deny": [
"Bash(psql:*production*)",
"mcp__postgres__execute_sql(connection_string:*prod*)"
]
}
}
加えて運用ルール:
- 本番 DB の接続は 読取専用ユーザー のみ MCP に渡す
- 書込みが必要なオペレーションは マイグレーションファイル にして PR 経由
- DBMS 側で監査ログを有効化(PostgreSQL なら
pgaudit)
事後対応: 直近の PITR バックアップから復元。本番 DB に書込権限を付与した MCP 設定は今すぐ削除。
4. Bash 全許可で rm -rf 事故 🔴
起きたこと: 「不要ファイルを掃除して」と頼んだら、Claude が「node_modules/ も古い、.next/ も削除可能」と判断して rm -rf を実行。チェーンの中に .git/ も含まれてしまいリポジトリ消失。
なぜ起きるか: permissions.allow に Bash(*) を入れていると、Claude が自由にコマンドを組み立てて実行できる。
再発防止:
{
"permissions": {
"allow": [
"Bash(npm:*)",
"Bash(pnpm:*)",
"Bash(git status)",
"Bash(git diff:*)",
"Bash(git log:*)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(rm -r:*)",
"Bash(:*--no-preserve-root*)"
]
}
}
ベストプラクティス: allow は「ホワイトリスト方式」で必要なものだけ列挙。Bash(*) は絶対に書かない。
5. 100k トークン超のコンテキスト爆発 🟡
起きたこと: 大規模リポジトリ(モノレポ、約 12k ファイル)で「全体構造を把握して」と頼んだら、Claude が 1 セッションで Read を 800 回呼び出し、入力トークンが 200 万を超えて 1 日で API 料金が $180 に到達。
なぜ起きるか: 探索系のプロンプトは「広く浅く見る」ため、Read を無限に呼ぶ傾向がある。
再発防止:
# 1. プロジェクト直下に .claudeignore を作成(重要)
node_modules/
.next/
dist/
build/
coverage/
**/*.lock
**/*.log
**/generated/
# 2. 大規模探索は subagent に隔離(メイン文脈を汚さない)
# .claude/agents/repo-explorer.md を作り、Read を Grep / Glob で代替
加えてコスト監視 hook を入れる(PostToolUse で Read 回数を集計、20 回超でアラート)。
詳細は Claude Code 料金 / コスト最適化 を参照。
事後対応: Anthropic Console で当月料金を確認、上限アラート(Usage Limits)を設定。
6. 監査ログ無しで誰が何したか追跡不能 🟡
起きたこと: 月末の振り返りで「先週の本番デプロイで設定ファイルを誰が触ったか」を遡ろうとしたら、Claude 経由の変更ログが残っていない。git commit には Co-Authored-By: Claude が付いているものの、いつ・どのプロンプトで・なぜ変更したか が再現できない。
なぜ起きるか: Claude Code のデフォルトでは、対話ログ・ツール呼び出し履歴は手元のセッションファイルにしか残らない。
再発防止: Stop hook で対話を S3 / Discord に転送する。
{
"hooks": {
"Stop": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "bash ~/.claude/hooks/archive-session.sh"
}]
}]
}
}
archive-session.sh の中身は最低限:
#!/usr/bin/env bash
SESSION_DIR="${HOME}/.claude/projects/$(basename $(pwd))"
LATEST=$(ls -t "$SESSION_DIR"/*.jsonl 2>/dev/null | head -1)
[[ -z "$LATEST" ]] && exit 0
DATE=$(date -u +%Y-%m-%dT%H-%M-%SZ)
aws s3 cp "$LATEST" "s3://your-claude-audit/$(hostname)/$DATE.jsonl" --quiet
加えて meta-auditor のような監査専用 subagent を週次で走らせる。
7. 出力を無検証で受け入れて誤情報拡散 🟡
起きたこと: 「事業計画書の参考データを集めて」と頼んだら、Claude が 完全に存在しない調査会社の数字 を引用(ハルシネーション)。気づかず投資家提出資料に転載し、デューデリで指摘されて信用毀損。
なぜ起きるか: Claude は数字や引用元をそれっぽく作る能力が高い。Web 検索ツールを併用していても、検索結果を「補強用」に使い、ベースは生成で書く傾向がある。
再発防止: 出力検証を Stop hook で機械的に強制。
# .claude/hooks/post-fact-check.sh
#!/usr/bin/env bash
# 直近編集された .md / .mdx を対象に数字パターンと出典の対応を確認
CHANGED=$(git diff --name-only | grep -E '\.(md|mdx)$')
for f in $CHANGED; do
# 「N% / N倍 / N社」のパターンが出典 URL を持たない箇所を抽出
python3 ~/.claude/scripts/fact-check.py "$f" || echo "⚠ 出典未記載の数値: $f"
done
exit 0
運用ルールにも組み込む:
## CLAUDE.md
### 数値・引用ルール
- 「N%」「N倍」「N社が導入」等は出典 URL 必須
- 出典が無い推測には [推測] ラベル
- 投資家向け / 公式発信文書では Claude の生成データを **そのまま使わない**(必ず別ソースで二重確認)
まとめ: 最初の 30 分でやるべきセキュリティセットアップ
| # | 対策 | 所要 |
|---|---|---|
| 1 | .claude/settings.json に冒頭の deny 3 件 + 本稿内の追加 deny を投入 | 5 分 |
| 2 | .claudeignore に .env* / secrets/ / *.pem 追加 | 2 分 |
| 3 | CLAUDE.md に「Git ルール」「数値・引用ルール」セクション追加 | 5 分 |
| 4 | Stop hook で対話ログを S3 / Discord に転送 | 10 分 |
| 5 | 本番 DB MCP は 読取専用ユーザー に切替 | 5 分 |
| 6 | Anthropic Console で月次の Usage Limits をセット | 3 分 |
合計 30 分 で 7 つの失敗のうち 6 つのリスクを大きく下げられます(deny パターンには抜け道があるため、allow ホワイトリスト方式と併用するのが前提です)。残る「7. 出力の盲信」だけは文化(=人間のレビュー)でしか防げません。
関連記事:
- Claude Code Hooks 完全ガイド — Hook 実装の詳細
- Claude Code 法人完全ガイド — セキュリティとガバナンス
- Skills × Subagents × Hooks 使い分けマップ — 監査専用 subagent の作り方
Related
続けて読む
- ·16分
Claude Code を 1 ヶ月運用するなら押さえたい 17 のポイント【運用設計ガイド】
Claude Code を業務に 1 ヶ月組み込んで運用する際に押さえておきたい 17 のポイントを解説。API 料金の考え方・Hooks による事故防止・MCP 連携・コスト管理・運用の小ワザまで、運用設計の観点で整理した解説記事です(記載の数値は条件により変動する想定例・目安)。
- ·12分
Claude Code Skills × Subagents × Hooks 使い分け完全マップ【2026年5月】
Claude Code の 3 大拡張機構 Skills / Subagents / Hooks をどう使い分けるか、ユースケース別の意思決定フローと組み合わせパターンを実装例とともに整理。「結局どれを使えばいいか分からない」を 10 分で解決する 1 枚マップ付き。
- ·5分
Claude Code とは?できること・仕組み・料金を初心者向けに解説【2026】
Claude Code とは Anthropic が開発した AI 開発エージェント CLI です。ファイル編集・コマンド実行・業務自動化を自律的にこなします。ChatGPT との違い、できること、Pro/Max 料金プランまで初心者向けにわかりやすく解説します。
