メインコンテンツへスキップ
← 記事一覧に戻る
·開発·14 min read

Claude Code settings.json 完全リファレンス 2026|4 階層・permissions・env・hooks の主要フィールド

Claude Codesettings.jsonpermissions個人開発設定

結論を 1 行で

settings.json は「Claude Code の振る舞いを technical に enforce する」設定の集約場所。 CLAUDE.md(指示・behavioral guidance)と Skill(playbook)の役割を埋める「強制レイヤー」。

Claude Code 公式 docs (settings) より:

"Settings rules are enforced by the client regardless of what Claude decides to do. CLAUDE.md instructions shape Claude's behavior but are not a hard enforcement layer."

つまり「Claude が何を判断しても settings は client 側で強制される」。 4 階層と主要フィールドを押さえれば 8 割カバーできる。

この記事の前提

  • 環境: Claude Code v2.x
  • 形式: リファレンス型記事(必要時に該当セクションだけ参照する想定)
  • 読者の状況: settings.json を散発的に編集してきたが、全フィールドの体系的理解がない
  • 筆者の検証環境: monorepo に user / project / local の 3 階層を併用、permissions を多層的に設定

この記事でわかること:

  • settings.json の 4 階層と優先順
  • permissions の allow / deny / ask の使い分け
  • env / hooks / sandbox / model / MCP / auto memory の主要フィールド
  • settings.json と CLAUDE.md / Skill / Hook の役割分担
  • 個人開発モノレポ向けの最小設計

読者のよくある詰まり

  • どの settings ファイルが優先されるか分からない
  • permissions の allow / deny / ask が散在して整理つかない
  • managed / project / local / user の 4 階層を意識していない
  • env / hooks / sandbox がそれぞれ何のためか整理ついていない
  • 副作用ある操作(git push / curl / .env 読み取り)の予防策が場当たり的

settings.json の役割と他機能との分担

機能役割強制力
CLAUDE.mdbehavioral guidance(指示)なし(参考)
Skillplaybook(手順書)なし(参考)
settings.jsontechnical enforcement(強制)あり
Hookevent-driven 自動実行あり

公式:

"Use settings for technical enforcement and CLAUDE.md for behavioral guidance"

設計指針:

  • 行動を強制したい → settings.json(permissions / sandbox / hooks)
  • 指示として伝えたい → CLAUDE.md
  • 手順書として呼び出したい → Skill
  • イベントで自動発火したい → hooks(settings.json で定義 or .claude/hooks/

4 階層と優先順

配置場所

階層パス共有用途
ManagedmacOS: /Library/Application Support/ClaudeCode/
Linux/WSL: /etc/claude-code/
Windows: C:\Program Files\ClaudeCode\
組織配布企業のセキュリティ・コンプライアンス
Project.claude/settings.jsongit 管理チーム共有のプロジェクト設定
Local.claude/settings.local.jsongitignore個人のプロジェクト設定
User~/.claude/settings.json全プロジェクト個人グローバル設定

優先順

Managed(最高) > CLI flag > Local > Project > User(最低)
  • 配列フィールドpermissions.allow 等)は マージ(連結 + 重複排除)。1 階層が他を上書きするのではなく、全階層が合算される
  • スカラーフィールドmodel 等)は優先度の高い階層が勝つ
  • Managed は 個人設定で上書き不可(組織管理のため)

状態確認

/status

アクティブな設定ソース、エラー、有効な permission 等が一覧表示される。意図と違う動作の時は最初にこれ。

permissions(最重要セクション)

副作用ある操作の予防はここで決まる。

構造

{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ],
    "ask": [
      "Bash(git push *)"
    ],
    "defaultMode": "acceptEdits",
    "additionalDirectories": ["../docs/"],
    "disableBypassPermissionsMode": "disable"
  }
}

サブフィールド

キー説明
allowarray許可するツール操作パターン(ユーザー確認なし)
denyarray拒否するツール操作パターン(実行ブロック)
askarray都度確認画面を出す
defaultModestringdefault / acceptEdits / plan / auto / dontAsk / bypassPermissions
additionalDirectoriesarrayアクセス可能な追加ディレクトリ
disableBypassPermissionsModestring"disable" で bypass モード無効化

allow / deny / ask の使い分け

ケース配置先理由
自分のスクリプト / 読み取り系 / よく使うコマンドallow安全 + 確認の手間が無駄
curl 任意URL / .env 読み取り / rm -rfdeny事故・漏洩リスクが高い
git push / 重い処理 / 不可逆操作ask副作用あるが正当な使用もある

deny の最低限テンプレ(事故予防)

{
  "permissions": {
    "deny": [
      "Bash(curl http*)",
      "Bash(wget *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(**/*credentials*)",
      "Bash(rm -rf *)"
    ]
  }
}

これだけで「秘密情報の意図しない読み取り」「外部 URL への意図しないリクエスト」「破壊的削除」の 3 大事故をかなり予防できる。

env(環境変数)

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "MY_PROJECT_VAR": "value"
  }
}
  • Claude Code の session に渡される環境変数
  • secret はここに書かない(git 管理に入る可能性)→ Local 階層 or 外部から注入
  • よく使う設定: CLAUDE_CODE_ENABLE_TELEMETRY / OTEL_* / プロジェクト固有の設定

hooks(イベントベース実行)

{
  "hooks": {
    "session:start": {
      "type": "http",
      "url": "https://hooks.example.com/start",
      "method": "POST"
    }
  },
  "disableAllHooks": false,
  "allowManagedHooksOnly": false,
  "allowedHttpHookUrls": ["https://hooks.example.com/*"],
  "httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]
}
キー用途
hooksイベント名 → 実行設定(http / shell)
disableAllHooks全 hook 無効化(緊急時)
allowManagedHooksOnlyManaged 配布の hook のみ実行
allowedHttpHookUrlshttp hook の URL allow list
httpHookAllowedEnvVarshook に渡せる env var の allow list

主要イベント: session:start / PreToolUse / PostToolUse / Stop / InstructionsLoaded 等。詳細は公式 docs の hooks セクション参照。

sandbox(操作制限)

{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "filesystem": {
      "allowWrite": ["/tmp/build", "~/.kube"],
      "denyWrite": ["/etc"],
      "denyRead": ["~/.aws/credentials"],
      "allowRead": ["."]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org"],
      "deniedDomains": ["uploads.github.com"],
      "allowUnixSockets": ["~/.ssh/agent-socket"],
      "allowLocalBinding": true
    },
    "excludedCommands": ["docker *"],
    "autoAllowBashIfSandboxed": true
  }
}

permissions より低レイヤーで OS 操作を制限する。permissions と組み合わせて多層防御。

model / effort

{
  "model": "claude-sonnet-4-6",
  "availableModels": ["sonnet", "haiku"],
  "effortLevel": "high",
  "alwaysThinkingEnabled": true,
  "language": "japanese"
}
キー用途
modelデフォルトモデル
availableModelsユーザーが選択可能なモデル
effortLevellow / medium / high / xhigh
alwaysThinkingEnabled拡張思考をデフォルト有効化
language応答言語

MCP 関連

{
  "enableAllProjectMcpServers": false,
  "enabledMcpjsonServers": ["github", "supabase"],
  "disabledMcpjsonServers": ["legacy-tool"]
}
キー用途
enableAllProjectMcpServers.mcp.json の全サーバーを自動承認
enabledMcpjsonServers承認する特定サーバー
disabledMcpjsonServers拒否する特定サーバー
allowedMcpServers (Managed)ユーザーが追加可能な MCP の allow list
deniedMcpServers (Managed)ブロックする MCP

auto memory

{
  "autoMemoryEnabled": true,
  "autoMemoryDirectory": "~/.claude/projects/<project>/memory/",
  "cleanupPeriodDays": 30
}
キー用途
autoMemoryEnabledauto memory のオンオフ(v2.1.59 以降)
autoMemoryDirectory保存ディレクトリ(policy / local / user で設定可、project では設定不可)
cleanupPeriodDaysセッション削除日数

CLAUDE.md / プラグイン関連

{
  "claudeMdExcludes": [
    "**/monorepo/CLAUDE.md",
    "/home/user/monorepo/other-team/.claude/rules/**"
  ],
  "enabledPlugins": {
    "formatter@acme-tools": true
  },
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": { "source": "github", "repo": "acme-corp/claude-plugins" }
    }
  }
}
キー用途
claudeMdExcludes特定 CLAUDE.md ファイルの除外(monorepo 等)
enabledPlugins有効化するプラグイン(plugin@marketplace)
extraKnownMarketplaces追加マーケットプレイス
strictKnownMarketplaces (Managed)組織が承認したマーケットプレイスのみ許可

認証・ログイン(Managed 主体)

フィールド用途
forceLoginMethod"claudeai" or "console"
forceLoginOrgUUID特定組織へのログイン強制
apiKeyHelperAPI キー生成スクリプト(環境変数注入)

attribution(git commit / PR テンプレ)

{
  "attribution": {
    "commit": "🤖 Generated with Claude Code\n\nCo-Authored-By: Claude Sonnet <noreply@anthropic.com>",
    "pr": "🤖 Generated with Claude Code"
  },
  "includeGitInstructions": true
}

commit メッセージ末尾と PR description のテンプレートを設定。チームで統一する時に使う。

UI 表示

キーデフォルト
editorMode"normal" / "vim""normal"
viewMode"default" / "verbose" / "focus""default"
tui"default" / "fullscreen"-
autoScrollEnabledbooleantrue
showTurnDurationbooleantrue
spinnerTipsEnabledbooleantrue

個人開発モノレポ向けの最小設計

~/.claude/settings.json(user グローバル)

{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(npm test *)",
      "Bash(npm run lint)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl http*)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(rm -rf *)"
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "0"
  },
  "model": "claude-sonnet-4-6"
}

<project>/.claude/settings.json(プロジェクト共有、git 管理)

{
  "permissions": {
    "allow": [
      "Bash(npm run dev)",
      "Bash(npm run build)",
      "Bash(supabase db *)"
    ]
  },
  "enableAllProjectMcpServers": false,
  "enabledMcpjsonServers": ["github", "supabase"]
}

<project>/.claude/settings.local.json(個人専用、gitignore)

{
  "permissions": {
    "allow": [
      "Bash(node scripts/my-personal-helper.mjs)"
    ]
  }
}

設計のコツ

  • 「全プロジェクト共通の安全策」は user に
  • 「プロジェクト固有の build / test / MCP」は project に
  • 「個人の特殊運用」は local に
  • Managed は組織配布があれば組織側で管理(個人は触れない)

ハマりどころ 4 つ

1. allow と deny が衝突する場合の挙動

deny が勝つ。明示的に deny しているものは allow に書いても通らない。「実行を許してはいけない」コマンドは deny に集約。

2. CLI flag が Local より優先

claude --no-sandbox のような CLI flag は CLI > Local > Project > User で勝つ。一時的に上書きしたい時は CLI で、永続化したい時は階層に書く。

3. settings.local.json を git にコミットしてしまう

.claude/settings.local.json は個人専用なので .gitignore への追加を推奨:

.claude/settings.local.json

4. Managed 配布があるのに気づかず設定が効かない

組織配布の Managed settings がある場合、permissions allow を増やしても deny が勝つことがある。/status で「Enterprise managed settings」が出ているか確認。

今日やること(3 つ以内)

  1. /status で現状確認: アクティブな設定ソース、4 階層のどれが効いているか把握
  2. deny の最低限テンプレ追加: curl http* / Read(./.env) / Read(./.env.*) を user の deny に
  3. 設定の階層を整理: 「全プロジェクト共通」を user に、「プロジェクト固有」を project に、「個人専用」を local に振り分け

関連記事

Claude Code完全ガイド2026

料金・使い方・他ツールとの使い分けを実運用者が解説

AGENTS.md vs CLAUDE.md|Claude Code 設定ファイルの違いと使い分け 2026

同 Cluster C1:CLAUDE.md / AGENTS.md の判断軸

Claude Code SKILL vs MCP server|役割・使い分け・判断フロー 2026

同 Cluster C2:Skill と MCP の役割分担

Claude Code Skill 設計完全ガイド 2026

同 Cluster C3:Skill の設計思想と落とし穴

【第4回】Claude Code Hooks 完全ガイド

保存時自動整形 / コミット前チェックの実装

【第11回】Claude Code Hooks で事故を防ぐ

git secrets / 本番 DB 保護の実装

Claude Crew Lab Free — 毎月の実験記録をメールで

Claude Code × 個人開発のリアルな事故・発見・SaaS アイデアを毎月第1月曜にお届け。登録で「収益化チェックリスト 15 項目」を無料プレゼント。

個人開発の実験ログを月1回、無料で

失敗 / 実数字 / 仮説 / 次に試すこと。売れた話だけでなく売れなかった理由も共有します。

まとめ

  • settings.json は technical enforcement の集約場所、CLAUDE.md(指示)/ Skill(手順書)の隙間を埋める
  • 4 階層は Managed > CLI > Local > Project > User、配列はマージ、スカラーは優先度の高い階層が勝つ
  • permissions の allow / deny / ask が最重要、deny で事故予防
  • env / hooks / sandbox / model / MCP / auto memory が主要フィールド
  • 個人開発モノレポは user に共通安全策、project に build/test/MCP、local に個人特殊運用 の 3 階層分担
  • 困ったら /status で現状確認

settings.json をリファレンスとして手元に置いて、必要な時に該当セクションだけ見返す。AGENTS.md / CLAUDE.md(指示)+ Skill(手順書)+ settings.json(強制)+ Hook(自動実行)の 4 つで Claude Code の運用基盤が完成する。

関連する有料記事

Stripe ペイウォール完全ガイド — 個人開発で最初の 1 売上を作るプレイブック

設定基盤が固まったら、次は売上を出す段階へ。Stripe 自前ペイウォールの実装テンプレと最初の 1 売上までの全ステップを公開。

この記事が役に立ったらシェア