メインコンテンツまでスキップ

settings.json:設定システム

中級

settings.json は Claude Code の設定が置かれる場所です。権限、フック、環境変数、モデルのデフォルトなどが含まれます。階層を理解することが鍵です。

What you'll learn
  • 5段階の優先順位と、2つのファイルが同じキーを設定したときにどちらが勝つか
  • 環境変数が階層ではない理由と、それが ANTHROPIC_MODEL に意味すること
  • 設定をどのファイルに置くべきか:コミットするチームの規約、個人の上書き、1セッションだけの実験
  • 実際に編集する4つのセクションと、それぞれが詳しく解説されている場所
  • ファイルを壊さずに編集する方法と、コミットされる設定ファイルに決して入れてはいけないもの

階層(優先順位の高い順)​

同じキーが複数の場所で設定されている場合、Claude Code はそれを設定している最も高いレベルの値を使います。

Guided walkthrough1 of 5
  1. managed-settings.json、MDM ポリシー、または claude.ai コンソールからのサーバー管理設定です。(いくつかのセキュリティ上敏感な例外を除き)あなたが設定するものは、これを上書きできません。
環境変数は階層ではない

環境変数はこのスタックの外にあり、キーごとに解決されます。たとえば ANTHROPIC_MODEL はどのファイルの model キーよりも優先して適用され、ANTHROPIC_DEFAULT_MODEL はどのファイルも model を設定していないときにのみ適用されます。

共有ファイルはコミットし、ローカルファイルは無視する

チームの規約は .claude/settings.json(コミットする)に置きます。個人的な調整やマシン固有のパスは .claude/settings.local.json(git の管理対象外)に置きます。こうすれば、自分の好みを他の人に強制せずに、チームの一貫性を保てます。

よく設定するもの​

  • permissions — 許可/確認/拒否のルール。権限を参照。
  • hooks — ライフサイクルイベントで実行されるコマンド。フックを参照。
  • env — セッション用の環境変数。
  • モデル / 挙動のデフォルト — たとえば好みのモデル。

安全に編集する​

  • 有効な JSON を保つこと(末尾のカンマがあると壊れます)。
  • 広いルールよりも狭い権限ルールを選ぶこと。
  • 秘密情報をコミットされるファイルに入れないこと。env の参照かシークレットマネージャーを使ってください。

どのファイルにも書き込まずに、1セッションだけ設定を試す

claude --settings '{"permissions":{"allow":["Bash(git log *)"]}}'

そのままコピーして使える出発点となるファイルは、フックと settings.json のレシピにあります。ファイルが不正な形式だったり、キーが期待どおりに働いていなかったりする場合は、claude doctor がセッションを開始せずに設定ファイルの検証エラーを出力します。それと --safe-mode については、CLI のページを参照してください。

理解度チェック​

Check yourself

0/3
  1. リポジトリのコミット済み .claude/settings.json が model を設定していて、~/.claude/settings.json は別のモデルを設定しています。どちらが適用されますか?
  2. マシン固有の絶対パスはどこに置くべきですか?
  3. 環境変数について正しい記述はどれですか?
Key takeaways
  • 5つの階層と、1つのルール:キーを設定している最も高いレベルが勝つ。管理は絶対で、ユーザー設定は最も弱い。
  • チームの規約にはコミットするファイル、個人的な値やマシン固有の値にはローカルファイル、使い捨ての実験には --settings。
  • 環境変数は階層ではない。スタック内の位置を決めつけず、変数ごとのルールを確認すること。
  • 秘密情報は、コミットされる設定ファイルには決して入れない。
  • 設定が無視されているように見えるときは、他のものを変更する前に claude doctor で検証エラーを確認する。

次へ​