Claude Code settings.json完全リファレンス|全フィールドの意味と.claude/rules/の使い方

Claude Code settings.json完全リファレンス|全フィールドの意味と.claude/rules/の使い方 AI開発

Claude Codeの動作はsettings.jsonファイルで細かく制御できます。デフォルトモデルの変更・思考量の固定・言語設定・フックの管理・MCP承認・サンドボックスのファイルシステム制御など、多岐にわたる設定が可能です。この記事では、settings.jsonの全フィールドと実践的な設定例を解説します。

また、特定ファイルにのみルールを適用できる.claude/rules/のpath-specific rulesも合わせて説明します。Claude Code全般の概要はClaude Code完全ガイドを、権限設定(allow/deny/ask)の詳細は権限管理完全ガイドを参照してください。

スポンサーリンク

設定ファイルのスコープと優先順位

Claude Codeは複数の設定ファイルを読み込み、優先度の高い設定が低い設定を上書きします。ただし配列フィールド(allowdeny等)はマージされます。

優先度 スコープ ファイルパス 用途
1(最高) Managed 管理者が配布(後述) 企業ポリシー。ユーザーが上書き不可
2 CLIフラグ セッション限定の一時的な上書き
3 Local .claude/settings.local.json 個人のプロジェクト固有設定。gitignore推奨
4 Project .claude/settings.json チーム共有の設定。gitにコミット
5(最低) User ~/.claude/settings.json 全プロジェクト共通の個人設定
公式JSONスキーマで補完を有効にする
IDEでの設定ファイル編集時に補完・バリデーションを有効にするには、設定ファイルの先頭に以下を追加してください:
{ "$schema": "https://json.schemastore.org/claude-code-settings.json", ... }

基本設定フィールド

フィールド 説明
model string 使用モデルを上書き。例: "claude-sonnet-4-6""claude-haiku-4-5-20251001"
effortLevel string 思考量。"low" / "normal" / "high" / "max"の4段階。/effortコマンドで自動書き込みされる
language string Claudeの応答言語。例: "japanese""english"。音声入力言語にも適用
alwaysThinkingEnabled boolean 拡張思考(extended thinking)をデフォルト有効化。デフォルト: false
availableModels string[] /model等でユーザーが選択できるモデルを制限
includeGitInstructions boolean コミット・PRワークフロー指示とgit statusスナップショットをシステムプロンプトに含める。デフォルト: true
基本設定の実践例(~/.claude/settings.json)
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "claude-sonnet-4-6",
  "effortLevel": "normal",
  "language": "japanese",
  "includeGitInstructions": true
}

UIとセッション設定

フィールド デフォルト 説明
cleanupPeriodDays number 30 この日数より古い非アクティブセッションを起動時に削除。0でセッション保存を完全無効化
autoUpdatesChannel string "latest" 更新チャンネル。"stable"(約1週間遅れ・安定版)または"latest"(最新版)
prefersReducedMotion boolean false スピナー等のアニメーションを削減。アクセシビリティ向け
spinnerTipsEnabled boolean true スピナー表示中のtipsを表示するかどうか
showTurnDuration boolean true 応答後に処理時間(例: “Cooked for 1m 6s”)を表示。~/.claude.jsonに書く
feedbackSurveyRate number セッション品質調査の表示確率(0〜1)。0で完全非表示
plansDirectory string ~/.claude/plans Plan Modeのプランファイルの保存先
autoUpdatesChannelで安定版に切り替える
最新版に頻繁にバグが混入する場合は"stable"チャンネルがおすすめです。約1週間遅れですが、最新版で発見された問題が修正された状態でリリースされます。

メモリ設定

フィールド 説明
autoMemoryEnabled boolean auto-memoryのON/OFF。デフォルトtrueCLAUDE_CODE_DISABLE_AUTO_MEMORY=1環境変数でも無効化可
autoMemoryDirectory string メモリファイルの保存先。デフォルト: ~/.claude/projects/<project>/memory/プロジェクト設定(.claude/settings.json)からは使用不可
claudeMdExcludes string[] 特定のCLAUDE.mdをグロブパターンで除外(大規模モノレポ向け)
autoMemoryDirectoryはユーザー/ローカル設定のみ有効
autoMemoryDirectory~/.claude/settings.json(User)または.claude/settings.local.json(Local)でのみ有効です。.claude/settings.json(Project・チーム共有)には書けません。これは共有プロジェクト設定からメモリの書き込み先を悪意ある場所に向けることを防ぐためのセキュリティ設計です。

フック関連設定

フィールド 説明
disableAllHooks boolean すべてのフックとカスタムステータスラインを無効化。デフォルト: false
allowedHttpHookUrls string[] HTTPフックが呼び出せるURLパターンのAllowlist(*ワイルドカード対応)。空配列で全HTTPフックをブロック。スコープ間でマージされる
httpHookAllowedEnvVars string[] HTTPフックがヘッダーに挿入できる環境変数名のAllowlist。スコープ間でマージ
フック設定の例
{
  "allowedHttpHookUrls": [
    "https://hooks.example.com/*",
    "http://localhost:8080/webhook"
  ],
  "httpHookAllowedEnvVars": ["SLACK_WEBHOOK_TOKEN", "GITHUB_TOKEN"]
}

MCP関連設定

MCPサーバーの設定本体は~/.claude.json(ユーザー)または.mcp.json(プロジェクト)に書きます。settings.jsonでは、.mcp.jsonで定義したサーバーの承認状態を管理します。

フィールド 説明
enableAllProjectMcpServers boolean .mcp.json定義の全MCPサーバーを確認なしで自動承認
enabledMcpjsonServers string[] .mcp.jsonから承認する特定サーバーの名前リスト
disabledMcpjsonServers string[] .mcp.jsonから拒否する特定サーバーの名前リスト
チームで特定MCPサーバーを自動承認する例(.claude/settings.json)
{
  "enabledMcpjsonServers": ["github", "slack"]
}

Worktree設定

--worktreeフラグを使う場合、以下の設定で動作を最適化できます。Worktreeの詳細な使い方はWorktree完全ガイドを参照してください。

フィールド 説明
worktree.symlinkDirectories string[] Worktreeにシンボリックリンクするディレクトリ。例: ["node_modules"]で依存関係の再インストールを省略
worktree.sparsePaths string[] sparse-checkoutで展開するディレクトリ。大規模モノレポでWorktreeの初期化を高速化
Worktree設定の例(.claude/settings.json)
{
  "worktree": {
    "symlinkDirectories": ["node_modules", ".venv"],
    "sparsePaths": ["src/", "tests/", "package.json"]
  }
}

Attribution設定(co-authored-by表記)

Claude Codeがgitコミットを作成するとき・PRを作成するときの帰属表記(attribution)を制御できます。

フィールド 説明
attribution.commit string gitコミットの帰属表記。空文字列""で非表示にできる
attribution.pr string PRの帰属表記。空文字列""で非表示にできる
includeCoAuthoredByは非推奨
以前のバージョンにあったincludeCoAuthoredByフィールドは非推奨です。attribution.commitattribution.prを使ってください。
co-authored-by表記を非表示にする例
{
  "attribution": {
    "commit": "",
    "pr": ""
  }
}

.claude/rules/でpath-specificなルールを設定する

.claude/rules/ディレクトリにMarkdownファイルを置くと、CLAUDE.mdと同様にClaudeへの指示として機能します。frontmatterにpaths:を指定すると、特定のファイルを扱うときだけそのルールが適用されます。

比較項目 CLAUDE.md .claude/rules/*.md
ファイル数 1ファイル(各ディレクトリ) 複数ファイルに分割可能
パス制限 全ファイルに適用 paths:で特定ファイルのみに限定可能
読み込み 起動時に全ロード paths:なし→起動時ロード / paths:あり→マッチ時ロード
ユーザーレベル ~/.claude/CLAUDE.md ~/.claude/rules/

ディレクトリ構造

.claude/rules/のディレクトリ構造
.claude/
├── CLAUDE.md               # メインのプロジェクト指示
└── rules/
    ├── code-style.md       # 全ファイルに適用するスタイルガイド
    ├── typescript.md       # TypeScriptファイルのみに適用
    ├── testing.md          # テストファイルのみに適用
    └── api/
        └── rest-api.md     # src/api/ 以下のファイルのみに適用

ルールファイルのfrontmatter形式

引用符なしのインデントリスト形式が最も安定して動作します。YAMLのクォート付き形式やフロースタイルではバグが報告されているため、以下のフォーマットを使ってください。

.claude/rules/typescript.md(TypeScriptファイルにのみ適用)
---
paths:
  - src/**/*.ts
  - src/**/*.tsx
---

# TypeScript固有のルール

- 型は `interface` より `type` を優先する
- `any` 型は使用禁止。`unknown` を使うこと
- コメントは日本語で書く
- 非同期処理は必ず `async/await` を使い、`.then()` チェーンは避ける
.claude/rules/testing.md(テストファイルにのみ適用)
---
paths:
  - tests/**/*.test.ts
  - src/**/*.spec.ts
---

# テスト固有のルール

- テストの説明文は「〜すること」で終わる
- `describe` でグループ化し、1つの `it/test` に1つの検証とする
- モックは `vi.mock()` を使い、インポートの直後に配置する
.claude/rules/code-style.md(pathsなし=全ファイルに適用)
# コードスタイル(全ファイル共通)

- インデントはスペース2つ
- セミコロンは省略
- シングルクォートを使う

globパターンの例

パターン マッチするファイル
src/**/*.ts src/以下のすべての.tsファイル
src/**/*.{ts,tsx} src/以下の.ts.tsxファイル
tests/**/*.test.ts tests/以下のテストファイル
*.md プロジェクトルートのMarkdownファイル
src/api/**/* src/api/以下のすべてのファイル
paths:のYAML記法に注意
paths:の記法は引用符なしのインデントリストが最も安定します。以下のような書き方はバグが報告されています:
paths: ["src/**/*.ts"](フロースタイル)
paths:
  - "src/**/*.ts"(クォート付き)
動作しない場合は引用符なし・インデントリスト形式で書き直してください。

Managed settings(企業向け強制設定)

企業の管理者は、ユーザーが上書きできない強制設定(Managed settings)を組織全体に配布できます。最も高い優先度を持ちます。

配布方法

OS 配布方法 ファイルパス・方法
macOS MDM(Jamf/Kandji等)
または managed-settings.json
/Library/Application Support/ClaudeCode/managed-settings.json
Linux / WSL managed-settings.json /etc/claude-code/managed-settings.json
Windows(管理者) レジストリ HKLM\SOFTWARE\Policies\ClaudeCodeSettings値にJSON文字列)
Windows(ユーザー) レジストリ HKCU\SOFTWARE\Policies\ClaudeCode(管理者レベルがなければ適用)
全OS Claude.ai管理コンソール Anthropicのサーバー経由で配信(Teams/Enterprise)

Managed settings専用フィールド

以下のフィールドはManaged settingsでのみ使用できます。ユーザー/プロジェクト設定には書けません。

フィールド 説明
allowManagedPermissionRulesOnly ユーザー・プロジェクト設定のallow/ask/denyルールを無効化。Managed設定のルールのみ有効にする
allowManagedHooksOnly ユーザー・プロジェクト・プラグインのフックをすべて無効化
allowManagedMcpServersOnly Managed設定外のMCPサーバーを無効化
allowedMcpServers / deniedMcpServers MCPサーバーのAllow/Denylist
channelsEnabled Channels機能の有効化(Teams/Enterprise向け)
strictKnownMarketplaces / blockedMarketplaces プラグインマーケットプレイスのAllow/Denylist

Managed CLAUDEMDファイルも設置できます(macOS: /Library/Application Support/ClaudeCode/CLAUDE.md等)。Managed CLAUDE.mdはclaudeMdExcludesで除外できず、常に適用されます。

まとめ:実用的な設定例集

個人の全プロジェクト共通設定(~/.claude/settings.json)

~/.claude/settings.json(個人共通)
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "claude-sonnet-4-6",
  "effortLevel": "normal",
  "language": "japanese",
  "autoUpdatesChannel": "stable",
  "cleanupPeriodDays": 30,
  "feedbackSurveyRate": 0
}

フロントエンドプロジェクト(.claude/settings.json)

.claude/settings.json(フロントエンドプロジェクト共通)
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(pnpm *)",
      "Bash(git *)"
    ],
    "deny": [
      "Bash(rm -rf *)"
    ]
  },
  "enabledMcpjsonServers": ["github"],
  "worktree": {
    "symlinkDirectories": ["node_modules"]
  }
}

よくある質問

Qsettings.jsonとCLAUDE.mdは何が違いますか?

Asettings.jsonはClaude Codeの動作・権限・技術設定を制御します(どのモデルを使うか・どのコマンドを許可するか等)。CLAUDE.mdはClaudeへの行動指示・ルール・コンテキストを提供します(コードスタイル・プロジェクト構成・作業の進め方等)。両者は補完関係にあり、どちらも重要です。

Q.claude/rules/ と CLAUDE.md を使い分けるコツは?

A全ファイル・全コンテキストに共通する基本指示はCLAUDE.mdに書きます。特定の言語・ファイルタイプ・ディレクトリに限定したルールは.claude/rules/に分けます。たとえば「TypeScriptの型定義ルール」や「テストの命名規則」は対象ファイルを扱うときだけ適用されれば十分なため、rules/ファイルに分けるのが効率的です。

Q.claude/rules/のpaths:に書いたパターンが効いていません。

A引用符なしのインデントリスト形式(- src/**/*.ts)で書いてください。YAMLのフロースタイル(["src/**/*.ts"])やクォート付き形式では動作しないバグが報告されています。記法を変えても動かない場合はClaude Codeを再起動してください。

Qsettings.jsonはgitにコミットすべきですか?

A.claude/settings.json(Projectスコープ)はチームで共有する設定を書くためのファイルなので、gitにコミットすることが推奨されます。個人の好みや機密情報(APIキーへのパスなど)は.claude/settings.local.jsonに書き、.gitignoreに追加してください。

QeffortLevelをsettings.jsonで設定すると–effortフラグより優先されますか?

ACLIフラグはsettings.jsonより優先されます(優先度2 > 優先度3〜5)。settings.jsonのeffortLevelはデフォルト値として機能し、--effortフラグや/effortコマンドで上書きできます。