AI

Claude Code Settings & Permissions完全ガイド——安全にエージェントを解き放つ設定術

Claude Codeのsettings.json・.claude.json・allowedToolsの3層設定構造を徹底解説。自動承認の粒度設定、危険なコマンドのブロック、チーム共有設定まで、安全性と生産性を両立する設定テクニックをハンズオン形式で紹介します。

2026年3月5日
Claude Code設定パーミッションセキュリティ
Claude Code Settings & Permissions完全ガイド——安全にエージェントを解き放つ設定術

はじめに

Claude Codeで開発していると、こんな場面に遭遇しませんか?

状況困りごと
yarn testを実行したい毎回「許可しますか?」の確認ダイアログが出る
.envを守りたいClaudeが誤って環境変数ファイルを書き換えてしまった
チームで統一したい開発者ごとにパーミッション設定がバラバラ

AIエージェントは強力ですが、「何を許可し、何をブロックするか」を適切に設定しなければ、生産性の低下やセキュリティリスクにつながります。Claude Codeには、この制御を3層の設定ファイルallowedToolsで細かく管理する仕組みが備わっています。

この記事を読み終わると、以下ができるようになります:

  • 3層設定構造(グローバル・ローカル・プロジェクト)の優先順位を理解できる
  • allowedToolsでツール単位の自動承認を設定できる
  • 危険なコマンドをdenyパターンでブロックできる
  • チーム共有のプロジェクト設定を構築できる

設定の3層構造

Claude Codeの設定は、3つのファイルが階層的にマージされて適用されます。

各ファイルの役割

ファイルスコープGit管理用途
~/.claude/settings.json全プロジェクト共通対象外個人のデフォルト設定
~/.claude/settings.local.json全プロジェクト共通対象外ローカル環境固有の上書き
.claude/settings.jsonプロジェクト単位コミット対象チーム共有の設定

ポイント: プロジェクト設定(.claude/settings.json)はGitリポジトリにコミットできるため、チーム全体で同じ許可・拒否ルールを共有できます。

設定ファイルの基本構造

{
  "permissions": {
    "allow": [
      "Bash(yarn:*)",
      "Bash(git:*)",
      "Read",
      "Glob",
      "Grep"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(curl:*)"
    ]
  },
  "env": {
    "CLAUDE_CODE_MAX_TURNS": "50"
  }
}

permissions.allowに記載したツールは確認なしで自動実行され、permissions.denyに記載したツールはブロックされます。

allowedTools設定

allowedToolsは、Claude Codeのツール呼び出しを細かく制御する仕組みです。パターンマッチングで柔軟に許可・拒否を指定できます。

パターン構文

ToolName(command_prefix:argument_pattern)
  • ToolName : Bash, Edit, Write, Read, Glob, Grep などのツール名
  • command_prefix : Bashコマンドのプレフィックス(Bash以外のツールでは省略)
  • * : ワイルドカード(任意の文字列にマッチ)

許可パターンの具体例

パターン意味
Bash(yarn:*)yarnで始まるすべてのコマンドを許可
Bash(git:*)gitで始まるすべてのコマンドを許可
Bash(npx:*)npxで始まるすべてのコマンドを許可
Editファイル編集を確認なしで許可
Writeファイル作成・上書きを確認なしで許可
Readファイル読み取りを許可
Globファイル検索を許可
Grepテキスト検索を許可

拒否パターンの具体例

{
  "permissions": {
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)",
      "Bash(chmod:*)",
      "Bash(curl|wget:*)",
      "Bash(ssh:*)",
      "Write(*.env*)",
      "Edit(*.env*)",
      "Write(.claude/settings.json)"
    ]
  }
}

重要: denyallowより優先されます。allowBash(yarn:*)を許可しても、denyBash(yarn publish:*)を設定すれば、publishコマンドだけブロックできます。

設定のマージルール

3層の設定がマージされる際、以下のルールが適用されます。

実践レシピ

レシピ1:フロントエンド開発の設定

フロントエンド開発で頻繁に使うコマンドを自動承認しつつ、機密ファイルを保護する設定です。

グローバル設定 ~/.claude/settings.json:

{
  "permissions": {
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Bash(git status:*)",
      "Bash(git diff:*)",
      "Bash(git log:*)"
    ],
    "deny": [
      "Bash(sudo:*)",
      "Bash(rm -rf:*)"
    ]
  }
}

プロジェクト設定 .claude/settings.json:

{
  "permissions": {
    "allow": [
      "Edit",
      "Write",
      "Bash(yarn:*)",
      "Bash(npx:*)",
      "Bash(node:*)",
      "Bash(git:*)"
    ],
    "deny": [
      "Write(*.env*)",
      "Edit(*.env*)",
      "Write(*.pem)",
      "Edit(*.pem)",
      "Bash(yarn publish:*)",
      "Bash(git push --force:*)"
    ]
  }
}

この設定により、以下が実現します。

  • yarn dev, yarn build, yarn testは確認なしで即実行
  • .envや秘密鍵ファイルへの書き込みは完全にブロック
  • git push --forceの誤実行を防止
  • ファイルの読み取り・編集は自由に行える

レシピ2:CI/CD環境向けの制限設定

GitHub Actionsなどの自動化環境で、書き込みを特定パスに限定する設定です。

{
  "permissions": {
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Bash(yarn:*)",
      "Bash(git:*)"
    ],
    "deny": [
      "Bash(sudo:*)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Write(*.env*)",
      "Edit(*.env*)",
      "Write(.github/*)",
      "Edit(.github/*)"
    ]
  }
}

レシピ3:チーム共有設定のテンプレート

チーム全員が同じ安全基準で作業するための共有設定です。.claude/settings.jsonとしてリポジトリにコミットします。

{
  "permissions": {
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Edit",
      "Write",
      "Bash(yarn:*)",
      "Bash(npx:*)",
      "Bash(git:*)",
      "Bash(node:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)",
      "Bash(chmod 777:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Write(*.env*)",
      "Edit(*.env*)",
      "Write(*.key)",
      "Write(*.pem)",
      "Write(credentials*)",
      "Edit(credentials*)"
    ]
  }
}

運用ポイント:

  1. このファイルをリポジトリの.claude/settings.jsonに配置してコミットする
  2. 個人的に追加の許可が必要な場合は~/.claude/settings.local.jsonで上書きする
  3. PRレビュー時に.claude/settings.jsonの変更も確認対象にする

設定変更の反映タイミング

設定ファイルを変更した場合、反映タイミングは以下のとおりです。

操作反映タイミング
settings.jsonの編集次回のツール実行時に即反映
/permissionsコマンド現在のセッション内でインタラクティブに確認・変更

セッション中に許可設定を確認したい場合は、Claude Code内で/permissionsコマンドを使うとその場で設定状況を確認・変更できます。

まとめ

Claude Codeの設定・パーミッション管理のポイントをおさらいします。

観点ベストプラクティス
安全性denyで機密ファイルと破壊的コマンドを明示的にブロック
生産性allowで頻出コマンド(yarn, git, npx)を自動承認
チーム統一.claude/settings.jsonをGit管理して共有
個人カスタマイズsettings.local.jsonで個人の上書きを分離
優先順位プロジェクト > ローカル > グローバルの順で適用

設定のコツは**「デフォルトは厳しく、必要に応じて緩める」**です。まずはdenyで危険な操作をブロックし、日常的に使うコマンドだけをallowに追加していくアプローチが、安全性と生産性のバランスを保つ最善の方法です。

この記事で紹介した3つのレシピをベースに、プロジェクトの要件に合わせてカスタマイズしてみてください。