Claude Code に壊されないための denyルール完全ガイド

要約
Claude Code の permissions.deny 設定には、危険コマンドや env など機密ファイルの読み書き、外部通信、DB破壊を防ぐためのガードレールが詰まっている。AI活用時に必須のセキュリティ設計
意見はこのエリアに表示されます

結論:Claude Codeのdenyは、ガッツリ書いておけ

ワイは、Claude Code と Supabase MCP で、Supabase のDB全部削除させてしまったことがある。目の前でテーブルが「ッポン」といった感じで消えてトラウマになった

思い返せば permissions.deny に書いておけばよかったのかもしれない

permissions.deny とはなんぞや?

Claude Codeのpermissions.denyは、AIが危険な操作や機密情報へのアクセスを行わないよう制限する設定やね。これがあるおかげで、AIに任せても「壊さない・漏らさない・暴走しない」が実現される

AIに対してのガードレール設計ですね

この記事では、Claude Code の deny リストを読み解きながら、「なぜその操作が禁止されているのか」「自分の環境でも取り入れるべきか?」を考えてみる

Claude Codeを使わない人でも、他のAIエージェントでも使える設計思想だと思う

deny にこれを書く

これは危険コマンド・機密ファイル・外部通信をブロックする記述。実際にワイは書いてる。deny のとこだけ書くんやで

.claude/settings.local.json に書く

これを紐解くと、denyリストには以下のカテゴリがある

カテゴリ内容の例理由
危険なBash操作rm -rf, git reset, sudoファイル削除やシステム破壊を防ぐ
機密情報の読み書き.env, id_rsa, *token*クレデンシャルやAPIキーの漏洩防止
外部送信コマンドcurl, wget, nc意図しない情報の流出防止
DB操作系psql, mysql, mongod本番DBに誤って書き込みしないように
Supabaseコマンドmcp__supabase__execute_sqlDB破壊リスクのある直接実行を防止

実際の deny 設定一覧とその意図

ここからは、設定を細かく見ていく。

1. Bashでの危険操作の禁止

このあたりは「説明不要」レベルの危険さ。
Claude に sudo rm -rf / を打たせていいことなんて一つもないよね。

それ以外にも

Git系のコマンドも制限よ

理由はシンプルで、「履歴を書き換えたり、本番に勝手にpushされたらまずい」から。

ブランチで実装させて安心してたら、勝手に main に切り替えて git 操作されたときもあったからね。git checkout も禁止したほうがいいのかな

特に Claude のような LLM が使う場合、Git 操作は「やっていい場面」と「やってはいけない場面」が明確に分かれる。

2. 機密ファイルへのアクセス制限

ここが本質やと思う。

Claude に .env や id_rsa を読ませてしまったら、もはやその内容は外に漏れたと同じ

だから、LLMに「読ませない」という判断はめちゃくちゃ重要。

「Claude は賢いから大丈夫」じゃなく、「賢くても口を滑らせることがある」前提で考えるのが正解ですな

さらに

書き込みも禁止。これも良い設計で、「AIに.envを書かせる=壊される可能性」があるってことよね

Claude Code ちゃん、たまに env 消したり書き換えたりする暴れん坊なんで、これは必須やね

RLS やセキュアな設定ファイルを書き換えられたら、運用中のシステムにバグが出る可能性あるからね

3. 外部との通信系コマンドの禁止

これは Claude 経由で「外部に勝手にアクセスしないように」って制限。

例:

  • curl ...?key=...
  • wget で不審なスクリプトを実行
  • nc で裏口を開けられる

AI は悪気がなくても、prompt次第でこれをやっちゃうから、最初から潰しておくのが安全

4. データベース操作の禁止

CLI経由の直接操作は禁止。Claude Code ちゃん、やっちゃうのよ。これ

Supabaseでも

これもNGにしてる。

ワイ、Claude Code ちゃんにSupabase のDB全て消したことを問い詰めたら「申し訳ありません!データベースの型変更の際に TRUNCATE コマンドを使用して既存データを削除してしまいました。」って新人みたいに謝罪されたからね…

mcp.json経由でSupabaseの型変更とかSQL実行できるんだけど、これも禁止。

理由は明確で、「AIに直接SQLを投げさせるのは怖すぎる」から。

  • 誤って DROP TABLE 実行
  • WHERE 条件なしの UPDATE や DELETE

人間でも事故るのに、AIがやるとなると「防波堤」が必要

Claude Code でdenyされてる理由をまとめると…

禁止されていること意図
ファイル削除や書き換えシステム破壊・予期しない変更を防ぐ
Git操作本番反映や履歴破壊を防止
機密ファイルの読み書き認証情報の漏洩防止
外部との通信データの流出・マルウェア実行の防止
DBの直接操作誤操作やデータ破壊を防止

というか「こういう制限を考えずにAIに任せるのは危険」って再認識した。

Claude Codeのこの設定から得られる教訓

以下のような「AIに対してのガードレール設計」を自分の開発でも真似できる。

実装例リスト

  • .env, id_rsa, *.key, *.token を.gitignoreだけじゃなくファイルアクセス制限
  • curl, wget, psql など外部接続コマンドの実行制限(子プロセス制御)
  • Git push / commit は CI 上だけに限定
  • Claude や Cursor にコード読ませるときは、読み取り範囲を限定する(public ディレクトリだけ等)

終わりに

「AIがコードを書いてくれる」時代だからこそ、「AIに何をさせないか」を考えることがめっちゃ大事。

Claude Code の permissions.deny は、それに最適。これは「AIを信用していないから」じゃなくて、「AIの暴走を未然に防ぐ賢い設計」なんよね。

自分が今後、AIを組み込んだアプリや開発ツールを作るとき、このリストをテンプレにして「安全な使用範囲」を明示するようにしたい

Claude Code 使ってる人でやらかし経験あったら教えて!

Explore More
関連記事はありません。