Amazonで商品を見るセール会場へ

Claude Code│settings.jsonの場所と優先順位|ユーザー・プロジェクト・ローカルの違い

Claude Codeの設定は、settings.json というファイルに書きます。

同じ名前のファイルが最大4か所にあり、同じ項目が複数の場所にあると、優先順位の高いほうが使われます。

  • 自分の全プロジェクトの設定:ホームフォルダの .claude/settings.json
  • チームで共有する設定:プロジェクトの .claude/settings.json
  • このプロジェクトの自分だけの設定:プロジェクトの .claude/settings.local.json
  • 強い順:組織の管理設定 → 起動時の –settings → settings.local.json → プロジェクトの settings.json → ユーザーの settings.json

この記事は、2026年9月29日時点の公式ドキュメントと、Claude Code v2.1.284 で実際に動かした結果にもとづいています。

目次

settings.jsonの場所

種類場所効く範囲
ユーザーホームフォルダの .claude/settings.json自分の全プロジェクト
プロジェクト(共有)プロジェクトの .claude/settings.jsonそのプロジェクトの全員(Gitに入れる)
ローカルプロジェクトの .claude/settings.local.jsonそのプロジェクトの自分だけ(Gitに入れない)
組織の管理managed-settings.json・MDM・claude.aiの管理画面組織が配ったPCやアカウント全部
Claude Code公式ドキュメント「Settings files and precedence」をもとに作成

Windowsでは、ホームフォルダの .claude は %USERPROFILE%\.claude のことです。

Claude Codeを入れただけでは、settings.json はどこにも作られません。

/config で変えた設定や、権限の確認で「今後は聞かない」を選んだときに、はじめて作られます。

~/.claude.jsonは別物

ホームフォルダには、.claude.json という似た名前のファイルもあります。

こちらはClaude Codeが自分で書くファイルで、ログインの情報やMCPサーバーの登録、フォルダを信頼したかどうかなどが入っています。

手で直す必要はありません。

優先順位を実際に確かめた

練習用のフォルダで、同じ環境変数 DEMO_LEVEL を2つのファイルに書き、どちらが使われるかを見ました。

// .claude/settings.json(プロジェクト)
{
  "env": { "DEMO_LEVEL": "project" },
  "permissions": { "allow": ["Bash(echo *)"] }
}

// .claude/settings.local.json(ローカル)
{
  "env": { "DEMO_LEVEL": "local" }
}

設定ファイルにはコメントを書けないので、上の // の行は説明のために付けています。

試したことecho $DEMO_LEVEL の結果
プロジェクトとローカルの両方に書いたlocal
さらに起動時に –settings で cli を渡したcli
ローカルのファイルを消したproject

ローカルがプロジェクトに勝ち、起動時の –settings がさらにローカルに勝っています。

claude --settings '{"env":{"DEMO_LEVEL":"cli"}}'

–settings はその回だけの設定で、ファイルは書き換わりません。

組織の管理設定は、–settings を含めてどこからも上書きできません。

リストの設定は足し合わされる

permissions.allow のようなリストの項目は、上の順位で1つに決まるのではなく、全部のファイルの中身が足し合わされます。

チームの settings.json で許可したコマンドに、自分の settings.local.json で許可を追加する、といった使い方ができます。

一方、model のように値が1つの項目は、順位のいちばん高いファイルの値だけが使われます。

環境変数は、この順位の外にあります。

同じことを環境変数と設定の両方で決められる項目は、どちらが勝つかが項目ごとに決まっています。

よく使う設定項目

項目決めること
permissions使ってよいコマンドや読んではいけないファイル(allow・ask・deny)
envClaude Codeが使う環境変数
model使うモデル
hooks決まったタイミングで動かすコマンド
statusLine画面下の表示
cleanupPeriodDays会話の記録を残す日数
attributionコミットやプルリクエストに付ける署名
autoMemoryEnabled自動メモリのオンとオフ
claudeMdExcludes読み込まない CLAUDE.md

書き方の例です。

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}

1行目の $schema を書いておくと、VS Codeなどで項目名の補完と入力チェックが効きます。

ただしスキーマの更新は新しい版より遅れることがあるので、新しい項目に警告が出ても間違いとは限りません。

書き間違えると、そのファイルごと効かなくなる

settings.json は厳密なJSONなので、コメントや末尾のカンマは書けません。

試しにプロジェクトの settings.json の末尾にカンマを付けたところ、そのファイルの設定がすべて効かなくなりました。

{
  "env": { "DEMO_LEVEL": "project", },
}
出力は空でした(`DEMO_LEVEL` は未設定です)。

対話モードで起動すると、壊れたファイルは Settings Error として知らされます。

claude -p で動かしたときはエラーが画面に出なかったので、スクリプトから使う場合は特に気をつけます。

設定が効かないときの確かめ方

  1. 対話中に /status を実行し、Setting sources の行に目的のファイルが出ているかを見る
  2. JSONの書き間違い(コメント・末尾のカンマ)がないかを見る
  3. 同じ項目を上の順位のファイルで決めていないかを見る
  4. 組織の管理設定で決められていないかを見る

/config で変えられる設定は、画面のメニューから選ぶだけで保存されます。

/config verbose=true のように、項目と値を直接書いて変えることもできます。

/config はターミナルの画面だけの機能で、VS Codeの拡張機能やデスクトップアプリでは開けません。

CLAUDE.mdとの使い分け

settings.json に書いた権限は、Claudeの判断に関係なく必ず守られます。

CLAUDE.md に書いたことは、指示として読まれるだけで、必ず守られるとは限りません。

「このファイルは読ませない」のように確実に止めたいことは settings.json に、書き方の好みは CLAUDE.md に書きます。

CLAUDE.md の置き場所と読み込まれる順番は、Claude CodeのCLAUDE.mdの書き方と置き場所で紹介しています。

まとめ

  • 自分用はホームの .claude/settings.json、チーム用はプロジェクトの .claude/settings.json
  • 自分だけの例外は .claude/settings.local.json に書く
  • 強い順は、組織 → –settings → ローカル → プロジェクト → ユーザー
  • リストの項目は足し合わされ、値が1つの項目は強いほうが使われる
  • JSONの書き間違いはファイルごと無視されるので、/status で確かめる

参考:Claude Code公式ドキュメント「Settings files and precedence」(2026年9月29日に確認)。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

生成AIのおすすめ書籍

周辺機器の優先度

目次