Claude Codeの動作はsettings.jsonファイルで細かく制御できます。デフォルトモデルの変更・思考量の固定・言語設定・フックの管理・MCP承認・サンドボックスのファイルシステム制御など、多岐にわたる設定が可能です。この記事では、settings.jsonの全フィールドと実践的な設定例を解説します。
また、特定ファイルにのみルールを適用できる.claude/rules/のpath-specific rulesも合わせて説明します。Claude Code全般の概要はClaude Code完全ガイドを、権限設定(allow/deny/ask)の詳細は権限管理完全ガイドを参照してください。
設定ファイルのスコープと優先順位
Claude Codeは複数の設定ファイルを読み込み、優先度の高い設定が低い設定を上書きします。ただし配列フィールド(allow・deny等)はマージされます。
| 優先度 | スコープ | ファイルパス | 用途 |
|---|---|---|---|
| 1(最高) | Managed | 管理者が配布(後述) | 企業ポリシー。ユーザーが上書き不可 |
| 2 | CLIフラグ | — | セッション限定の一時的な上書き |
| 3 | Local | .claude/settings.local.json |
個人のプロジェクト固有設定。gitignore推奨 |
| 4 | Project | .claude/settings.json |
チーム共有の設定。gitにコミット |
| 5(最低) | User | ~/.claude/settings.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 |
{
"$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のプランファイルの保存先 |
最新版に頻繁にバグが混入する場合は
"stable"チャンネルがおすすめです。約1週間遅れですが、最新版で発見された問題が修正された状態でリリースされます。メモリ設定
| フィールド | 型 | 説明 |
|---|---|---|
autoMemoryEnabled |
boolean | auto-memoryのON/OFF。デフォルトtrue。CLAUDE_CODE_DISABLE_AUTO_MEMORY=1環境変数でも無効化可 |
autoMemoryDirectory |
string | メモリファイルの保存先。デフォルト: ~/.claude/projects/<project>/memory/。プロジェクト設定(.claude/settings.json)からは使用不可 |
claudeMdExcludes |
string[] | 特定のCLAUDE.mdをグロブパターンで除外(大規模モノレポ向け) |
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から拒否する特定サーバーの名前リスト |
{
"enabledMcpjsonServers": ["github", "slack"]
}
Worktree設定
--worktreeフラグを使う場合、以下の設定で動作を最適化できます。Worktreeの詳細な使い方はWorktree完全ガイドを参照してください。
| フィールド | 型 | 説明 |
|---|---|---|
worktree.symlinkDirectories |
string[] | Worktreeにシンボリックリンクするディレクトリ。例: ["node_modules"]で依存関係の再インストールを省略 |
worktree.sparsePaths |
string[] | sparse-checkoutで展開するディレクトリ。大規模モノレポでWorktreeの初期化を高速化 |
{
"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フィールドは非推奨です。attribution.commitとattribution.prを使ってください。{
"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/
├── CLAUDE.md # メインのプロジェクト指示
└── rules/
├── code-style.md # 全ファイルに適用するスタイルガイド
├── typescript.md # TypeScriptファイルのみに適用
├── testing.md # テストファイルのみに適用
└── api/
└── rest-api.md # src/api/ 以下のファイルのみに適用
ルールファイルのfrontmatter形式
引用符なしのインデントリスト形式が最も安定して動作します。YAMLのクォート付き形式やフロースタイルではバグが報告されているため、以下のフォーマットを使ってください。
--- paths: - src/**/*.ts - src/**/*.tsx --- # TypeScript固有のルール - 型は `interface` より `type` を優先する - `any` 型は使用禁止。`unknown` を使うこと - コメントは日本語で書く - 非同期処理は必ず `async/await` を使い、`.then()` チェーンは避ける
--- paths: - tests/**/*.test.ts - src/**/*.spec.ts --- # テスト固有のルール - テストの説明文は「〜すること」で終わる - `describe` でグループ化し、1つの `it/test` に1つの検証とする - モックは `vi.mock()` を使い、インポートの直後に配置する
# コードスタイル(全ファイル共通) - インデントはスペース2つ - セミコロンは省略 - シングルクォートを使う
globパターンの例
| パターン | マッチするファイル |
|---|---|
src/**/*.ts |
src/以下のすべての.tsファイル |
src/**/*.{ts,tsx} |
src/以下の.tsと.tsxファイル |
tests/**/*.test.ts |
tests/以下のテストファイル |
*.md |
プロジェクトルートのMarkdownファイル |
src/api/**/* |
src/api/以下のすべてのファイル |
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\ClaudeCode(Settings値に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)
{
"$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)
{
"$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コマンドで上書きできます。

