はじめに

Claude Code は、ファイルの編集からコマンドの実行まで、開発作業を幅広く自動化してくれる強力なツールです。
しかしその分、設定を誤ると .envファイルの意図しない書き換えや、危険なコマンドの実行といった事故につながる可能性があります。

権限モード

Claude Code には、操作の自動化レベルを制御する「権限モード」が用意されています。

モード 動作
default 各操作の前に確認ダイアログが表示される
acceptEdits セッション中のファイル編集権限を自動的に受け入れる。コマンド実行は確認あり
plan 分析のみ。ファイル編集・コマンド実行は行わない

意図せぬ事故を防止するためにも、最初は default モードで利用することを推奨します。

操作のたびに確認が入るため面倒に感じることもありますが、Claude が何をしようとしているかを把握できるので、安全な選択肢となります。

参考:利用可能なモード

危険なコマンドを deny リストでブロック

Claude Code の設定ファイルに denyリストを追加すると、特定の操作を完全に禁止できます。

~/.claude/settings.json を作成して、機密ファイルの読み取りや危険コマンドの実行などを追記します。

(例)

{
  "permissions": {
    "defaultMode": "default",
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push -f *)",
      "Bash(sudo *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Edit(.env)",
      "Edit(.env.local)"
    ]
  }
}

~/.claude/settings.json はすべてのプロジェクトに適用されるグローバル設定です。

まずはここにどの環境においても禁止したい最低限の denyルールを書いておき、プロジェクトごとに設定を分けたい場合は .claude/settings.json に書くようにします。

よく使うコマンドを allow リストに登録

denyで危険な操作を防いだら、次は日常的に使う安全なコマンドを allowリストに追加して、毎回の確認ダイアログをなくしましょう。

(例)

{
  "permissions": {
    "defaultMode": "default",
    "allow": [
      "Bash(npm run *)",
      "Bash(npm test)",
      "Bash(git status)",
      "Bash(git log *)",
      "Bash(git checkout *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push -f *)",
      "Bash(sudo *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Edit(.env)",
      "Edit(.env.local)"
    ]
  }
}

allowに登録したコマンドは確認なしで実行されます。npm run * のようにワイルドカードを使うと、npm run build や npm run dev をまとめて許可できます。

安全性が確認できているコマンドだけを登録するようにしましょう。

まとめ

  • 最初のうちは権限モードは default にする
  • denyリストで危険な操作をブロックする
  • allowリストで安全なコマンドを登録する

さいごに

公式のベストプラクティスには、今回取り上げていない設定が多くありますのでぜひご参考ください。