Settings(設定)

Settings は、Claude Code の動作・権限・フック・環境変数を制御する設定ファイルです。チームで共通の権限設定を共有したり、個人のローカル設定を分離したりできます。

Settings とは

身近な例えで理解する

スマホの「設定」アプリで例えると:

スマホの設定 Claude Code の設定
通知設定 どのツールの実行を許可/拒否するか(permissions)
アクセシビリティ 環境変数やモデルの設定(env, model)
セキュリティ 実行前チェックの設定(hooks)
ペアレンタルコントロール 管理者が組織全体に強制する設定(managed policy)

なぜ Settings を理解する必要があるのか

1. チームで共通の権限設定ができる

Bash コマンドは許可するけど rm -rf * は拒否する」のようなルールを設定ファイルに書けば、チーム全員が同じ安全設定で Claude を使えます。

2. Hooks の設定場所になる

Hooks(フック)は settings.json に定義します。Settings を理解していないと、Hooks を設定できません。

3. 環境ごとに設定を分けられる

チーム共有の設定(.claude/settings.json)と、個人のローカル設定(.claude/settings.local.json)を分離できます。API キーなど個人固有の設定をリポジトリにコミットしてしまう事故を防げます。

設定ファイルの種類と優先度

Claude Code は複数の設定ファイルを読み込み、優先度に従ってマージします。

優先度: 高 → 低
1. /etc/claude-code/settings.json       # 管理者ポリシー(組織全体に強制)
2. ~/.claude/settings.json              # ユーザーレベル(全プロジェクト共通)
3. .claude/settings.json                # プロジェクトレベル(チーム共有)
4. .claude/settings.local.json          # ローカル(gitignore 対象)
ファイル 共有範囲 用途
/etc/claude-code/settings.json 組織全体 セキュリティポリシーの強制
~/.claude/settings.json 個人(全プロジェクト) 個人の共通設定
.claude/settings.json チーム(リポジトリにコミット) プロジェクト共通の設定
.claude/settings.local.json 個人(gitignore) 個人の API キー等
flowchart TD A["管理者ポリシー
/etc/claude-code/settings.json
(最高優先度)"] B["ユーザーレベル
~/.claude/settings.json"] C["プロジェクトレベル
.claude/settings.json"] D["ローカル
.claude/settings.local.json
(最低優先度)"] A -->|"上書き"| B -->|"上書き"| C -->|"上書き"| D style A fill:#fee2e2,stroke:#ef4444,color:#1e293b style B fill:#fef3c7,stroke:#f59e0b,color:#1e293b style C fill:#e0e7ff,stroke:#6366f1,color:#1e293b style D fill:#ecfdf5,stroke:#10b981,color:#1e293b
設定ファイルの優先度 — 上位が下位を上書き

settings.json と settings.local.json の違い

settings.json settings.local.json
バージョン管理 リポジトリにコミットする .gitignore に含める
チーム共有 全メンバーに適用 個人のみ
主な用途 Hooks、環境変数、機能フラグ 権限許可、MCP サーバー有効化、個人設定
機密情報 含めない API キー等を含めてOK

主な設定項目

項目 説明
permissions.allow 許可するツール ["Bash", "Read", "Edit"]
permissions.deny 拒否するツール/パターン ["Bash(rm -rf *)"]
env 環境変数 {"NODE_ENV": "development"}
hooks ライフサイクルフック Hooks ガイド参照
disallowedTools 使用禁止ツール ["Agent(Explore)"]
sandbox.enabled サンドボックス化 true / false
alwaysThinkingEnabled 常に思考モードを有効化 true / false
effortLevel 思考の深さレベル "high" / "medium" / "low"
teammateMode Agent Teams の表示モード "in-process" / "tmux"
enabledMcpjsonServers 有効化する MCP サーバー ["serena", "context7"]

スターターキットに含まれる設定例

settings.json(チーム共有)

.claude/settings.json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  },
  "alwaysThinkingEnabled": true,
  "effortLevel": "high"
}

この設定では以下を有効にしています:

  • Agent Teams - 実験的機能の Agent Teams を有効化
  • 常時思考モード - Claude が常に深く考えてから回答
  • 高努力レベル - 最大限の品質で作業

settings.local.json(個人設定)

.claude/settings.local.json
{
  "permissions": {
    "allow": [
      "Bash(git add:*)",
      "Bash(git config:*)",
      "Bash(git push:*)",
      "WebSearch",
      "Bash(claude mcp:*)",
      "Bash(which uvx:*)",
      "WebFetch(domain:github.com)",
      "Bash(git commit:*)",
      "Bash(chmod:*)",
      "Bash(git pull:*)"
    ]
  },
  "enabledMcpjsonServers": [
    "serena",
    "context7"
  ]
}

この設定では以下を行っています:

  • Git 操作の許可 - git add, git commit, git push, git pull を自動許可
  • Web 検索の許可 - WebSearch を自動許可
  • Claude MCP コマンドの許可 - MCP 関連のコマンドを自動許可
  • MCP サーバーの有効化 - serena と context7 を明示的に有効化

注意: settings.local.json.gitignore に含めるべきファイルです。個人の権限設定や API キーが含まれるため、リポジトリにコミットしないでください。

設定サンプル(参考例)

以下は主要な設定項目の参考例です。

権限設定

permissions の設定例
{
  "permissions": {
    "allow": [
      "Bash",
      "Read",
      "Edit",
      "Write",
      "Glob",
      "Grep"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(curl * | bash)",
      "Bash(wget * | bash)"
    ]
  }
}

環境変数設定

env の設定例
{
  "env": {
    "NODE_ENV": "development",
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

使用禁止ツール

disallowedTools の設定例
{
  "disallowedTools": [
    "Agent(Explore)"
  ]
}

フック設定

hooks の設定例
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "./.claude/hooks/protect-files.sh",
            "timeout": 30
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "./.claude/hooks/auto-format.sh"
          }
        ]
      }
    ],
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "./.claude/hooks/setup-env.sh"
          }
        ]
      }
    ]
  }
}

サンドボックス設定

sandbox の設定例
{
  "sandbox": {
    "enabled": true,
    "pathPrefixes": [
      "/home/user/project"
    ]
  }
}

設定の確認方法

# セッション内で現在の設定を確認
/config

# 権限設定を確認
/permissions

ベストプラクティス:

  • チーム共通設定は settings.json - Hooks、環境変数、機能フラグなど全メンバーに適用すべき設定を記述
  • 個人設定は settings.local.json - 権限の自動許可、MCP サーバーの有効化など個人ごとに異なる設定を記述
  • settings.local.json は .gitignore に含める - 機密情報の漏洩を防止
  • deny で危険なコマンドをブロック - rm -rf *sudo * など破壊的コマンドは deny リストに追加
  • 最小権限の原則 - 必要なツールだけを許可し、不要なものは許可しない
  • 設定変更後は /config で確認 - 意図通りに設定が反映されているか確認しましょう