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
/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で確認 - 意図通りに設定が反映されているか確認しましょう