settings.json:設定システム
中級
settings.json は Claude Code の設定が置かれる場所です。権限、フック、環境変数、モデルのデフォルトなどが含まれます。階層を理解することが鍵です。
- 5段階の優先順位と、2つのファイルが同じキーを設定したときにどちらが勝つか
- 環境変数が階層ではない理由と、それが ANTHROPIC_MODEL に意味すること
- 設定をどのファイルに置くべきか:コミットするチームの規約、個人の上書き、1セッションだけの実験
- 実際に編集する4つのセクションと、それぞれが詳しく解説されている場所
- ファイルを壊さずに編集する方法と、コミットされる設定ファイルに決して入れてはいけないもの
階層(優先順位の高い順)
同じキーが複数の場所で設定されている場合、Claude Code はそれを設定している最も高いレベルの値を使います。
Guided walkthrough1 of 5
- managed-settings.json、MDM ポリシー、または claude.ai コンソールからのサーバー管理設定です。(いくつかのセキュリティ上敏感な例外を除き)あなたが設定するものは、これを上書きできません。
- claude --settings '<json-or-path>' で、1セッションだけに適用されます。管理を除くすべてのファイルより上にあり、どのファイルにも書き込まないため、覚えておきたくない実験に最適なツールです。
- .claude/settings.local.json で、git の管理対象外です。このリポジトリに対するあなたの上書き用です。マシン固有のパス、ここで使いたいモデル、自分だけが使いたいフックなど。
- .claude/settings.json で、リポジトリにコミットされます。チーム全体の規約で、新しいメンバーがクローンするだけで引き継ぐファイルです。
- ~/.claude/settings.json です。すべてのプロジェクトにまたがるあなたのデフォルト。優先順位は最も低いので、リポジトリは常にあなたの設定を上書きできます。
環境変数は階層ではない
環境変数はこのスタックの外にあり、キーごとに解決されます。たとえば 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- 5つの階層と、1つのルール:キーを設定している最も高いレベルが勝つ。管理は絶対で、ユーザー設定は最も弱い。
- チームの規約にはコミットするファイル、個人的な値やマシン固有の値にはローカルファイル、使い捨ての実験には --settings。
- 環境変数は階層ではない。スタック内の位置を決めつけず、変数ごとのルールを確認すること。
- 秘密情報は、コミットされる設定ファイルには決して入れない。
- 設定が無視されているように見えるときは、他のものを変更する前に claude doctor で検証エラーを確認する。
次へ
- claude CLI:結果を変えるフラグ — ここにあるすべてのキーに対する、セッション単位の対応物
- 権限と権限モード
- フック:決定論的な自動化
- カスタムスラッシュコマンド