設定ファイルの仕組み
Claude Code の設定ファイルの置き場所・範囲・優先順位、設定の変え方、効かないときの確認、組織の管理設定の例外、設定ファイルの例をまとめています。
Claude Code は 4 つの設定ファイルを読み、組織は claude.ai のコンソールから管理設定(managed settings)も配れます。保存した設定が及ぶ範囲(スコープ)は、自分だけ・プロジェクトの全員・組織の全員のどれかです。全キーの型・既定値・適用範囲は 設定キー一覧、環境変数は 環境変数一覧 にあります。
- 設定ファイルは JSON。コメントや末尾のカンマは構文エラーになる
- 同じキーが複数あると、優先度の高い階層の値が使われる:管理設定 > コマンドライン引数 > ローカル > プロジェクト共有 > ユーザー
- 配列(
permissions.allowなど)は上書きされず、ファイルをまたいで結合される - ほとんどの編集は、再起動せず実行中のセッションに反映される
/statusのSetting sources行で、どのファイルが読み込まれたかを確認できる
設定ファイルと適用範囲#
| スコープ | ファイル | 影響する人 | 使いどころ |
|---|---|---|---|
| ユーザー | ~/.claude/settings.json |
このマシンのすべてのプロジェクトでの自分 | テーマ・エディタモード・既定モデル・自分の権限ルールなど個人の好み |
| プロジェクト共有 | .claude/settings.json |
そのフォルダで作業する全員(git リポジトリならコミットしてチームに配る) | チームの権限・フック・プラグイン、プロジェクトに要る環境変数 |
| プロジェクトローカル | .claude/settings.local.json |
このプロジェクトでの自分だけ(Claude Code がファイルを作るときは git から外す。手で作ったら自分で .gitignore に足す) |
1 つのプロジェクトでの個人的な上書きと、共有前の試し |
| 管理 | managed-settings.json などの管理設定の配布元 |
組織が配った全員(一部のセキュリティ上の例外を除き、何を設定しても上書きできない) | セキュリティポリシーとコンプライアンスの要件 |
- 「ファイル」の列で、
~/.claudeはホームディレクトリの.claudeフォルダ、頭に~/のない.claudeはプロジェクト内の.claudeフォルダ ~/.claude/settings.jsonは、このマシンのすべてのプロジェクトに及ぶが、チームメイトのマシンやクラウドセッションには及ばない- プロジェクトの
.claude/settings.jsonは、バージョン管理にコミットしたときだけ、チームメイトの clone やクラウドセッションに届く(コミットするまでは自分のディスク上の普通のファイル) .claude/settings.local.jsonは、そのプロジェクトの自分にだけ及ぶ。初めて書くとき、Claude Code がグローバルの git の除外設定に足すので、コミットに入らない。手で作った場合は自分で.gitignoreに足す- 管理設定は、
managed-settings.jsonのファイル・MDM ポリシー・claude.ai コンソールのサーバー管理設定のどれでも、組織が配った全マシン・全プロジェクトに及ぶ。クラウドセッションに届くのはサーバー管理設定だけ
設定ファイルを見つける・作る#
Claude Code をインストールしても設定ファイルは作られません。すでにあるなら、次のどれかが由来です。
- 管理:組織が配ったもの。自分で作る・編集するものではない
- プロジェクト共有:Claude Code を使っているプロジェクトなら、コミットされていることがある。なければプロジェクトフォルダの
.claude/settings.jsonに作る - ユーザーとプロジェクトローカル:自分で作る、または Claude Code に作らせる。
/configでテーマなどユーザー設定に保存される項目を初めて変えたときに~/.claude/settings.jsonが、権限確認で「Yes, and don't ask again」のような恒久の承認を初めて出したときに.claude/settings.local.jsonが書かれる。「Show tips」など一部の/configの項目は、ユーザーファイルでなく.claude/settings.local.jsonに保存される
補足
Windows では ~/.claude は %USERPROFILE%\.claude です。ホームディレクトリのファイルを別の場所に置くには CLAUDE_CONFIG_DIR を設定します(設定・セッション履歴・プラグインがそこに保存される)。
Claude Code は、自分で書く 5 つ目のファイル ~/.claude.json も持ちます(編集不要)。サインインのセッション・MCP サーバーの設定・信頼の判断などプロジェクトごとの状態・/config が書くグローバル設定のキーが入っています。
チームで設定を共有する#
.claude/settings.json をコミットすれば、clone した全員が同じ権限・フック・プラグインを使えます。各自は自分の .claude/settings.local.json で上書きできるので、個人の例外はコミット不要です。
- コミットした内容の一部は、各チームメイトがフォルダを信頼するまで待たされ、いくつかのキーはリポジトリのファイルからは効かない(詳しくは下の「設定が効かないとき」)
- チームのファイルの例は、下の「設定ファイルの例」にある
個人の設定をリポジトリに入れない#
1 つのプロジェクトで自分だけ設定を変えるには、プロジェクト内の .claude/settings.local.json に保存します。コミットされた .claude/settings.json の上にこのファイルが適用されるので、チームのファイルが "model": "claude-sonnet-5" でも、自分のローカルファイルに "model": "claude-opus-5-5" と書けば、自分のセッションだけが変わります。
- Claude Code もこのファイルに書く。Bash コマンドの確認で「Yes, and don't ask again」を選ぶと、その承認が
allowルールとしてここに保存される - 手で作ったのでなければ、自分で
.gitignoreに足す必要はない。git リポジトリで、まだ無視されていないとき初めてこのファイルを書くと、**/.claude/settings.local.jsonをグローバルの git の除外ファイルに足すので、どのリポジトリでもコミットに入らない。そのファイルは、グローバルの git 設定が絶対パスか~始まりのパスでcore.excludesFileを設定していればそれ、なければ$XDG_CONFIG_HOME/git/ignore(XDG_CONFIG_HOMEが未設定なら~/.config/git/ignore) - 追跡されていないあいだ、このファイルの allow ルールは信頼の手順を待たない(自分のファイルでリポジトリのものではないため)。git で追跡されていれば信頼の手順も適用される
git リポジトリでのローカルファイルの場所#
「Yes, and don't ask again」の承認は .claude/settings.local.json に allow ルールとして保存されます。git リポジトリのサブディレクトリで Claude Code を始めても、このファイルはリポジトリのルートで読み書きされ、承認はリポジトリ全体に効きます。worktree ではメインのチェックアウトのルートのファイルを使います。
- ファイルが
.claude/settings.jsonと同じ場所に留まる場合:git リポジトリの外、リポジトリのルートがホームディレクトリ、Windows、リポジトリのルートかその.git・.claudeが自分のユーザーのものでないとき - ファイル内のパスはリポジトリのルートに固定されない:
/で始まる権限ルールや、サンドボックスの相対パスは、セッションのプライマリ作業ディレクトリに固定される - v2.1.211 より前は、開始ディレクトリにファイルを置いていた。以前のバージョンが残したファイルも、ルートのファイルと並べて読まれる(同じキーはルートの値が効き、権限ルールは両方が適用される)。Agent SDK の
resolveSettings()は、常に開始ディレクトリのファイルを読む - 共有の
.claude/settings.jsonはセッションのプライマリ作業ディレクトリから読まれるので、リポジトリのルートでコミットしたファイルを使うには、そこで Claude Code を始める。/cdでセッションを移すと、両方のプロジェクトファイルが新しいディレクトリから読まれ、ローカルファイルは同じ規則で置かれる(新しいディレクトリからの読み込みは v2.1.246 以降)
組織が強制しているものを確認する#
組織が Claude Code を管理しているなら、一部の設定は自動で決まり、自分のファイルに何を書いても変わりません。どれかは /status の Setting sources 行が、適用される管理元を示します。管理設定は、このマシンの Claude Code が動くすべての場所で適用されます。
管理設定は、主に次の経路で届きます。
- サーバー管理設定:claude.ai の管理コンソールか、セルフホストの Claude apps gateway から Claude Code が取得する
- MDM や OS レベルのポリシー、システムディレクトリの
managed-settings.json - Claude Desktop など組み込み先のホストが、SDK の
managedSettingsオプションで渡すもの
Claude Desktop アプリで手元のマシンで動く Cowork セッションでは、Claude Code は claude.ai の管理コンソールからサーバー管理設定を取得しません。組織の Claude Desktop の設定が requireCoworkFullVmSandbox を設定していないかぎり、デバイスに配られたポリシーを読みます。管理者向けの手順は 組織への導入と管理設定 を見てください。
設定を変える#
設定は、/config メニュー・設定ファイルの編集・コマンドラインによる 1 セッションだけの指定で変えられます。Claude Code のシステムプロンプトは公開されていません。常設の指示を与えるには CLAUDE.md か --append-system-prompt を使います(CLAUDE.md とメモリ)。
/config メニューを使う#
Claude Code の中で /config を実行し、「Config」タブを開きます。テーマ・エディタモード・verbose の出力など個人向けの短い一覧で、全キーではありません。項目を選ぶと自動で保存されます。
- ほとんどの項目:
~/.claude/settings.json - 「Show tips」など一部の項目:
.claude/settings.local.json - グローバル設定の項目:
~/.claude.json - メニューを使わず 1 つの項目を設定するには
key=valueを渡す(/config verbose=true)
補足
/config はターミナルのインターフェースの一部です。VS Code のチャットパネルとデスクトップアプリでは開けないので、そこでは設定ファイルを編集するか、それぞれのアプリの設定を使います。
設定ファイルを編集する#
変えたいスコープの設定ファイルをエディタで開き、キーを足す・変えます。設定ファイルは厳密な JSON です(// のコメントや末尾のカンマは構文エラーで、次の起動で Settings Error として報告される)。例えば、lint とテストのコマンドを確認なしで実行させ、.env ファイルを読ませないには、~/.claude/settings.json に次を足します。
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
permissionsの各項目は、ツールとそれが何をしてよいかを名指しするルール。書き方は 権限ルール$schemaの行は、公開されている Claude Code 設定の JSON スキーマを指し、VS Code・Cursor など JSON スキーマに対応するエディタで補完とインライン検証が働く。スキーマは最新の CLI のリリースに遅れることがあるので、最近ドキュメントに載ったキーの検証警告が出ても、設定が無効とは限らない- 保存したら、Claude Code の中で
/statusを実行して、ファイルが読み込まれたか確認する
1 セッションだけ設定を変える#
保存せずに値を試すには、Claude Code を起動するときに設定します。値はそのセッションにだけ適用され、設定ファイルはそのままです。方法は 3 つあります。
-
--settings:キーを JSON(インラインかファイルのパス)で渡す。ユーザー・プロジェクト・ローカルのファイルの上、管理設定の下に適用される。ユーザー設定ファイルが設定できるキーなら何でも設定できるが、ManagedやGlobal configのキーは設定できない -
そのキー用のフラグ:
modelに--model、effortLevelとmodelSettingsに--effortなど -
環境変数:キーと対の変数を
claudeの前に export する(modelにANTHROPIC_MODELなど) -
各キーの項は、セッションごとの上書きと優先されるものを挙げているので、変えたいキーの項を確認する
-
セッション内のコマンドは多くが選択を保存する。
/configで変えると設定ファイルに書かれ、/modelは新しいセッションの既定としてその値を保存する。/modelのピッカーでsを押すと、ユーザーの既定として保存せずにモデルを切り替える。/effortのどの選択が既定として保存されるかは モデル・effort・fast mode を見る
claude --settings '{"model": "claude-opus-5-5"}'
編集がいつ反映されるか#
Claude Code は設定ファイルを監視し、変更されると再読み込みするので、permissions・hooks・apiKeyHelper などの認証情報のヘルパーを含むほとんどの編集は、再起動なしで実行中のセッションに反映されます。セッション中に作った設定ファイルも、そのフォルダがセッション開始時にあれば読み込まれます(プロジェクトの .claude/ フォルダは、同じセッションで作っても読み込まれる)。
- 再読み込みはユーザー・プロジェクト・ローカル・管理設定を覆い、検出した設定ファイルの変更ごとに
ConfigChangeフックが実行される(MDM や claude.ai コンソールから届く管理設定では実行されない)。MDM や claude.ai コンソールから届く管理設定は、保存時でなくスケジュールで実行中のセッションに届く - 一部のキーは、セッション開始時に一度だけ読まれるので、編集しても実行中のセッションには届かない。
requiredMinimumVersionなど管理者側のキーにも再起動を待つものがある。セッション中に編集しそうなもの:model(セッション中の切り替えには/model。モデルごとにプロンプトキャッシュがあるので、切り替えの後の最初のリクエストは会話全体をキャッシュなしで読み直す)、effortLevelとmodelSettings(セッション中に effort を変えるには/effort)
読み込まれたものを確認する#
Claude Code の中で /status を実行すると、有効な設定元が分かります。「Status」タブの Setting sources 行が、現在のセッションで読み込んだ設定ファイル(User settings・Project local settings など)を一覧します。管理設定が有効なら、管理設定の項目が、どう届いたかを括弧内に示します。
- この行は、どのファイルを読んだかを示すだけで、どのファイルがどのキーを供給したかは示さない。Claude Code が拒否した項目を一覧するには
claude doctorを実行する。プロジェクトや管理設定が設定したモデルは、起動時のヘッダーが設定したファイルを示す /statusと/configは同じダイアログを別のタブで開く。「Config」タブはsettings.jsonの中身を見るビューではない
壊れた設定ファイルを直す#
JSON の書き間違いや、Claude Code が受け付けない値を設定すると、対話セッションの開始時に知らされます。表示は、ファイルのどこまでが影響を受けるかで変わります。
- Settings Error:ユーザー・プロジェクト・ローカルのファイルが無効な JSON か、スキーマが拒否する値を持つ。対話セッションの開始時に、Claude の助けでファイルを直す・終了する・壊れた設定なしで続ける、を選べるダイアログが出る
- Settings Warning:不正な形式の権限ルールや未知のフックイベント名など、個々の項目だけが失敗する。Claude Code はその値をスキップし、ファイルの残りは有効のまま
- 管理設定:Claude Code はファイルの残りを引き続き強制する。無効な項目は捨てられ、直すまでより厳しい値にフォールバックするキーがある。管理設定の文書が有効な JSON でないときは別
- 構成エラー:
~/.claude.jsonが解析できない。Claude Code は壊れたファイルを~/.claude/backups/.claude.json.corrupted.<timestamp>にコピーし、終了して手で直すか既定の構成にリセットするかを尋ねる(-pではエラーを出して終了)。以前の状態に戻すには、~/.claude/backups/の、書き込みの前に保存される最新 5 つの.claude.json.backup.<timestamp>のどれかをコピーし戻す - 続けたあと、影響を受けたファイルは
/status、各エラーの詳細はclaude doctorで見る -pの実行ではダイアログは出ない。管理設定の文書が解析できない場合を除き、壊れたファイルや値をスキップして続けるので、-pの実行が設定を無視したらclaude doctorで捨てられたものを確認する
設定の優先順位#
同じキーが複数の場所にあると、そのキーを設定している最も高い階層の値が使われます。上位ほど強く、上位のキーはその下のどこの同じキーも上書きします。優先度の高い順に次のとおりです。
- 管理設定:
managed-settings.jsonのファイル・MDM ポリシー・claude.ai コンソールのサーバー管理設定で組織が配る設定。何を設定しても上書きできず、--settingsで渡したキーも同じ管理キーを上書きできず、--modelなどのフラグは組織が許可するモデルからだけ選べる。管理設定のmodelは各セッションが始まるモデルを決めるが、/modelでの切り替えはできる(ロックはavailableModelsで、/model・--model・自分のファイルのmodelを制約する)。組織が複数の管理元を配るときは、管理層内の優先順位が各元から何を読むかを決める - コマンドライン引数:端末から
claudeを起動するときに渡す、1 セッションだけのフラグ。--settings <file-or-json>で渡した JSON は、ほかの階層と同じ規則で設定ファイルとマージされる(ここで設定したキーはローカル・プロジェクト・ユーザー設定の同じキーより優先され、省いたキーは下位の値が残る) - プロジェクトローカル設定(
.claude/settings.local.json):このプロジェクトでの自分の個人設定 - プロジェクト共有設定(
.claude/settings.json):チームがソース管理にチェックインした設定 - ユーザー設定(
~/.claude/settings.json):全プロジェクトでの自分の個人設定
- 環境変数はこの階層に入らない。同じ動作にシェル変数と設定キーの両方があるとき、どちらが適用されるかは階層でなく対ごとに決まる(シェルで export した
ANTHROPIC_MODELはどのファイルのmodelキーより優先され、ANTHROPIC_DEFAULT_MODELはどのファイルもmodelを設定していないときだけ適用される)。どのキーが対を持ち、どちらを先に読むかは 環境変数一覧。設定ファイル内のenvブロックは普通のキーで、上の階層に従う - いくつかのセキュリティ上重要なキーでは、Claude Code は、下位の階層の厳しい値を管理設定の値より優先して守る(下の「管理設定の優先順位の例外」)
配列は上書きでなく結合される#
permissions.allow のような同じリストのキーを複数のファイルに設定すると、Claude Code は 1 つを選ばずリストを結合するので、各ファイルがほかのファイルの項目を消さずに項目を足せます。モデルのリストやモデルごとの項目を持つ 4 つのキーは、独自の規則に従います。
fallbackModel:位置に意味のある順序つきの連鎖なので、定義した最も優先度の高いファイルの値全体を取るmodelPicker:順序つきの行のリストと置き換えフラグを 1 つ持つので、2 つのソースの行をマージしない。管理設定・--settings・ユーザー設定のうち、定義した最上位の値全体を取り、プロジェクトとローカル設定では無視する(v2.1.242 以降)availableModels:Claude Code が適用する管理設定が定義していると、そのリストをそのまま適用し、ユーザー・プロジェクト・ローカルで足した項目は無視する(Claude Code を組み込むアプリが独自のモデルリストを与える場合を除く)。管理元をまたいでもマージしない。管理元でないスコープ間は通常どおり配列をマージするmodelSettings:effortLevelとともに、モデル 1 つずつ解決する
優先順位の例#
Claude の作業中、スピナーの下に「Use /config to change your default permission mode (including Plan Mode)」のような 1 行のヒントが出ます。ヒントを出したくなくて、~/.claude/settings.json で spinnerTipsEnabled を false にしたとします。次の各場面は、それを再びオンにしうるものと、できることです。
- チームの設定が上書きする:チームの
.claude/settings.jsonがtrue。プロジェクト共有はユーザーより上なので、そのプロジェクトではヒントが出て、ほかでは出ない。そのプロジェクトの.claude/settings.local.jsonに"spinnerTipsEnabled": falseを足せば、自分のセッションでは出なくなり、チームメイトには影響しない(ローカルは共有より上) - 組織の設定がすべてを上書きする:管理設定が
true。ユーザー・プロジェクト・ローカル設定にも--settingsにも、オフにする方法はない(管理が最上位)。/statusで適用される管理元を確認し、ポリシーを変えるべきなら管理者に頼む - コマンドラインが 1 セッションだけファイルを上書きする:
claude --settings '{"spinnerTipsEnabled": true}'で始めたセッションは、ファイルがfalseでも、管理設定を除くすべてのファイルより上なのでヒントを出す。--settingsは 1 セッションだけで、どのファイルにも書かないので、次のセッションでは元に戻る - フラグや環境変数が同じものを設定する:キーによっては、どのファイルが設定したかによらず設定の値を上書きするコマンドラインのフラグか環境変数がある(
ANTHROPIC_MODELはmodel設定を、--modelは 1 セッションで両方を上書きする)。元に戻せるかはキーによる。変数を unset するかフラグを外し、設定キーの項と環境変数の行で、Claude Code がどれを使うか確認する
設定が効かないとき#
キーを設定したのに Claude Code が従わないときは、まず /status で読み込まれたファイルを確認し、次の症状を探します。広い確認(クリーンな構成のテストを含む)は 設定のデバッグ にあります。
設定した値が無視される#
同じキーを別のものが設定している、ファイルがその値を設定できない、ファイルが読み込まれていない、のどれかです。
- 上位の階層が設定している:別の設定ファイル・
--settingsフラグ・管理元が、自分のものより上でキーを設定している(優先順位は上のとおり)。フラグや環境変数が単独でキーを上書きしていることもある(キーごとに決まる。キーの項がどちらを使うか示し、envの項が管理envの値とシェルの export の関係を扱う) - セキュリティのキーが厳しい値を保つ:一部のキーでは、Claude Code はどのファイルの制限的な値も守る(プロジェクトの
trueのdisableClaudeAiConnectorsはオンのまま。管理設定の優先順位の例外を見る) - ファイルがその値を設定できない:
permissions.defaultModeのautoとbypassPermissionsは、プロジェクト/ローカル設定からは効かない(ユーザーか管理設定に設定するか、1 セッションなら--permission-modeを渡す。v2.1.257 より前はbypassPermissionsがどのファイルからも効いた)。envブロックのテレメトリのエクスポート変数も、いくつかのオフの値を除き、プロジェクト/ローカル設定からは効かない - ファイルが壊れている:無効な JSON や拒否された値で、Claude Code がファイルや項目をスキップする(上の「壊れた設定ファイルを直す」)
Claude Code で行った変更が新しいセッションで消える#
/model で既定モデルを保存するなど、Claude Code の中で新しいセッション向けの選択を保存すると、ユーザー設定ファイル ~/.claude/settings.json に書かれます。そのファイルに書き込めない(別のツールが生成する、読み取り専用のコピーへリンクしているなど)と、変更は現在のセッションにだけ適用され、次のセッションでは消えます。ファイルを生成するツールでキーを設定するか、書き込めるファイルに置き換えます。ファイルに書き込めるのに変更が続かないなら、変更が 1 セッションだけのものでなかったか、上位の階層が同じキーを設定していないかを確認します。
管理設定の変更が届かない#
管理元は、配布の表のスケジュールで実行中のセッションに届くので、まずセッションを再起動します。それでも /status が管理者が変えたものと違う管理元を示すなら、より優先度の高い管理元が適用されています。
コミットしたキーがチームメイトに届かない#
.claude/settings.json のキーが、clone した全員に適用されない理由は 2 つあります。
- Claude Code がリポジトリのファイルのキーを無視している:設定キー一覧の「適用範囲」に「ユーザー・ローカルか管理設定」「ユーザーか管理設定」「管理設定のみ」「グローバル設定」があるキーは、共有ファイルからは効かない(リポジトリのファイルがオフにできるごく一部を除く)。「グローバル設定」のキーは
~/.claude.jsonからだけ効く。envキーの中のテレメトリのエクスポート変数も、いくつかのオフの値を除き、共有ファイルからは効かない - キーが信頼を待っている:
permissions.allowルール・permissions.additionalDirectories・extraKnownMarketplaces・ほとんどのenvの値は、各チームメイトがフォルダを信頼した後にだけ適用される。それまでは確認が出て、ファイルが宣言するマーケットプレイスのプラグインも入らない。denyとaskのルールはすぐ適用される
権限ルールの組み合わせが期待と違う#
- 権限確認で「Yes, and don't ask again」を選んだのに、同じツールでまた確認が出る:その選択はローカルファイルに
allowルールを保存したが、そこのallowは、プロジェクトや管理ファイルのaskルールには勝たない(順序は 権限ルール)。VS Code 拡張では承認カードで保存先のファイル(全員に効くプロジェクトの共有ファイルを含む)を選べるが、CLI ではローカルファイルにだけ書く - 組織の allow ルールも自分のものと並んで適用される:想定どおり。組織が
allowManagedPermissionRulesOnlyを設定しないかぎり、Claude Code はpermissions.allowをスコープ間でマージする
管理設定の優先順位の例外#
値がセッションを制限するいくつかのキーでは、管理設定を上書きできないスコープからでも、Claude Code は制限的な値を守ります。
| キー | Claude Code が守る値 | 補足 |
|---|---|---|
disableClaudeAiConnectors |
どのスコープの true も |
管理元が false を設定していても守られる |
enableArtifact |
どのスコープの false、およびどのスコープの disableArtifact: true も |
管理元が true を設定していても守られる。Artifact ツールを戻せるものはない。v2.1.242 以降 |
isolatePeerMachines |
どのスコープの true も |
管理元が false を設定していても守られる |
remoteControlAtStartup |
.claude/settings.json か .claude/settings.local.json の false |
管理元が true を設定していても守られる。プロジェクトやローカルの true は無視される |
crossSessionInbound |
.claude/settings.json か .claude/settings.local.json の、より厳しい値(accept < hold < refuse の順) |
管理設定・--settings・ユーザーの値より優先される。より厳しくないプロジェクトやローカルの値は無視される |
useAutoModeDuringPlan |
管理元・--settings・~/.claude/settings.json・.claude/settings.local.json のどれかの false |
優先する管理元が true を設定していても守られる。.claude/settings.json の false は無視される |
syncClaudeAiSkills |
管理元・--settings・~/.claude/settings.json・.claude/settings.local.json のどれかの false |
優先する管理元が true を設定していても守られる。.claude/settings.json の false は無視される |
syncClaudeAiPlugins |
管理元・--settings・~/.claude/settings.json・.claude/settings.local.json のどれかの false |
優先する管理元が true を設定していても守られる。.claude/settings.json の false は無視される |
maxEffortLevel |
--settings を含むどのスコープの、より低い上限も |
Claude Code が適用する管理設定がより高い上限を設定していても守られる。最も低い上限が適用される。v2.1.267 以降 |
Claude Code を自分の中で動かし、CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST を設定するアプリも例外です。Claude Code は、そのアプリのモデル構成を、すべての管理元の model・fallbackModel・modelPicker・modelOverrides と、管理 env ブロックのモデル選択の変数(ANTHROPIC_MODEL と ANTHROPIC_DEFAULT_*_MODEL ファミリー)より優先します。アプリが独自の許可リストを与えないかぎり、管理設定の availableModels は有効のままです。
クラウドセッションでの設定#
クラウドセッションは、自分のマシンでなく、リポジトリの新しい clone があるクラウド環境で動きます。そのため、届く設定が変わります。
- プロジェクト共有設定(
.claude/settings.json):リポジトリ 1 つのセッションでは読まれる(ファイルが clone の一部で、セッションがその中で始まるため)。そこにコミットした設定が、そのセッションで有効になる。複数のリポジトリのセッションは clone の上で始まり、各リポジトリの.claude/settings.jsonからenabledPluginsとextraKnownMarketplacesのキーだけを読み、権限ルール・フック・envなどほかのキーは読まない。この 2 つのキーが宣言するマーケットプレイスとプラグインも、クラウドセッションでは読み込まれない - ユーザーとプロジェクトローカルの設定(
~/.claude/settings.jsonと.claude/settings.local.json):読まれない。どちらも手元のマシンにあり、ローカルファイルは clone に入らない - 管理設定:デバイスの
managed-settings.jsonや MDM プロファイルはクラウドセッションに届かない。組織のサーバー管理設定は届く。セルフホストの環境は、ランナーイメージの管理設定ファイルも読む /config:claude.ai/code のブラウザでは、値を変えず、claude.ai の設定の Claude Code のセクションを開く。クラウドセッションの設定を変えるには、環境に環境変数を設定するか、リポジトリ 1 つのセッションならそのリポジトリの.claude/settings.jsonにキーをコミットするCLAUDE.md・スキル・MCP サーバー・プラグイン・認証情報は、クラウド(Web)で使う を見る
設定ファイルの例#
3 つの settings.json の例です。それぞれ 1 人の読者向けのもっともらしいファイルで、形を見て、必要な部分をコピーできます。推奨のベースラインではありません。値の型・既定・設定できる場所は 設定キー一覧 を見てください。コメントは設定ファイルでは受け付けられないので、下はコメントなしでそのまま保存できる形です。
自分の設定#
個人の設定の例です。モデルと effort を選び、ターミナルを調整し、読み取り専用のコマンドとファイル読み取り 1 つを事前承認します。ここにないものは既定のままです。~/.claude/settings.json に置き、開くすべてのプロジェクトに適用されます。
{
"model": "claude-sonnet-5",
"modelSettings": {
"claude-sonnet-5": { "effortLevel": "xhigh" }
},
"editorMode": "vim",
"theme": "light-daltonized",
"statusLine": {
"type": "command",
"command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
"padding": 2
},
"spinnerTipsEnabled": false,
"preferredNotifChannel": "terminal_bell",
"permissions": {
"allow": [
"Bash(git diff *)",
"Read(~/.zshrc)"
]
},
"autoUpdatesChannel": "stable",
"cleanupPeriodDays": 20
}
model:すべてのセッションを Sonnet 5 で始めるmodelSettings:Sonnet 5 を既定の high より上の xhigh で動かす(/effortはモデルごとにレベルを保存し、--effortは 1 セッションだけ設定する)editorMode:プロンプトで vim のキーバインドtheme:色覚に配慮した light のテーマstatusLine:プロンプトの下に、モデル名と使ったコンテキストを出すステータスラインspinnerTipsEnabled:スピナーの下で回るヒントを隠すpreferredNotifChannel:完了したタスクや待機中の権限確認の通知で、ターミナルのベルを鳴らすpermissions.allow:git diff と.zshrcの読み取りを確認なしで許すautoUpdatesChannel:stable チャネルから更新を受けるcleanupPeriodDays:20 日より古いセッションのトランスクリプトとローカルのセッションデータを削除する
チームの共有設定#
リポジトリにコミットし、clone した全員が同じ権限・フック・プラグインのマーケットプレイスを使えるようにするチームの共有設定です。リポジトリの最上位の .claude/settings.json に置きます。コミットする前に知っておくこと:
- クラウドセッションも読む:クラウドセッションはリポジトリの clone から始まるので、コミットしたファイルもそこで適用される
- テレメトリは管理設定か個人設定に置く:Claude Code は、リポジトリの設定ファイルの OpenTelemetry エクスポーター変数を、テレメトリをオフにするいくつかの値を除いて無視する。組織の管理設定か、各自の
~/.claude/settings.jsonに置く - allow ルールは信頼を待つ:allow ルールと
extraKnownMarketplacesの項目は、各人がこのフォルダ自体を(親フォルダだけでなく)信頼した後に有効になる。deny と ask のルールは、信頼の有無によらずすべてのセッションで適用される - フックはリポジトリ内のスクリプト:このファイルのフックは
.claude/hooks/block-rm.shを実行する(フックの書き方は フックの使い方) - ルールはコマンドとパスを書かれたとおりに照合する:
Bash(git push *)はgit -C . pushに一致しない。Read(./.env)だけでは、ファイルツールと、ファイルを名指しするコマンド(cat .env)は止まるが、ディレクトリに対するgrep -rは止まらない。このファイルのsandboxブロックがその隙間を埋める(サンドボックスは、Readの deny のパスを、サンドボックス内のすべてのコマンドが読めないものに加えるため)
{
"permissions": {
"allow": ["Bash(npm run *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)"]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}
]
}
]
},
"extraKnownMarketplaces": {
"acme-tools": {
"source": { "source": "github", "repo": "acme-corp/claude-plugins" }
}
},
"enabledPlugins": {
"code-formatter@acme-tools": true
},
"sandbox": {
"enabled": true,
"filesystem": { "allowWrite": ["/tmp/build"] },
"network": { "allowedDomains": ["registry.npmjs.org", "*.example.com"] }
},
"plansDirectory": "./plans"
}
permissions:npm のスクリプトは確認なしで実行、git pushの前に確認、env ファイルと secrets フォルダのファイルツールとファイル読み取りコマンドによる読み取りを拒否hooks:各 Bash コマンドの前に、リポジトリ内のスクリプトを実行する(コマンドをブロックできる)extraKnownMarketplaces:チームのプラグインのマーケットプレイスを、すべての clone に登録するenabledPlugins:そのマーケットプレイスの 1 つのプラグインを有効にする(GitHub リポジトリなど外部のソースのプラグインは、各人が 1 回インストールする必要がある)sandbox:コマンドをサンドボックスで動かす。書き込み可能なビルドディレクトリ、npm と example.com は事前に許可plansDirectory:計画ファイルをリポジトリの中に置く
組織の管理設定#
管理キーの形を、各キーにもっともらしい値で示す managed-settings.json です。推奨のポリシーではありません。要件に合うキーを選び、自分の値を設定してください。この例が設定するキーは次のとおりです。
forceLoginMethodとforceLoginOrgUUID:ログイン方法と組織を固定するavailableModelsとenforceAvailableModels:セッションが使えるモデルを制限するpermissions.deny:2 つのファイル読み取りと、Claude が書いたとおりのcurlコマンドを拒否し、disableBypassPermissionsModeで bypass の権限モードを外すallowManagedPermissionRulesOnlyとallowManagedMcpServersOnly:管理設定の権限と MCP の許可リストだけを有効にするallowedMcpServers:MCP サーバーを URL で固定するstrictKnownMarketplaces:プラグインのマーケットプレイスを 1 つだけ許可するsandbox:固定のネットワーク許可リストでコマンドをサンドボックスで動かし、サンドボックス外での再試行を許さない。failIfUnavailableキーで、サンドボックスが動かない環境では Claude Code の起動を止められる(サンドボックス)requiredMinimumVersion:Claude Code の最小バージョンcleanupPeriodDays:セッションのトランスクリプトなどのローカルデータの保持を 7 日に短くするcompanyAnnouncements:起動時にメッセージを出す
管理者は、このようなファイルを managed-settings.json として配るか、同じ JSON を MDM やサーバー管理設定で配ります。配った 1 つのファイルは、届くすべてのマシンやアカウントに適用されます。グループごとに別の値にするには、そのグループに別のファイルかプロファイルを配ります(サーバー管理設定はまだグループごとのポリシーに対応していない)。組織の UUID・サーバー URL・マーケットプレイスの例は、自分のものに置き換えます。
{
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"],
"availableModels": ["opus", "sonnet"],
"enforceAvailableModels": true,
"permissions": {
"deny": ["Bash(curl *)", "Read(./.env)", "Read(./secrets/**)"],
"disableBypassPermissionsMode": "disable"
},
"allowManagedPermissionRulesOnly": true,
"allowedMcpServers": [
{ "serverUrl": "https://api.githubcopilot.com/*" }
],
"allowManagedMcpServersOnly": true,
"strictKnownMarketplaces": [
{ "source": "github", "repo": "acme-corp/approved-plugins" }
],
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"network": {
"allowedDomains": ["registry.npmjs.org", "github.com"],
"allowManagedDomainsOnly": true
}
},
"requiredMinimumVersion": "2.1.150",
"cleanupPeriodDays": 7,
"companyAnnouncements": [
"Welcome to Acme Corp! Review our code guidelines at docs.example.com"
]
}
- ログインは claude.ai アカウントだけ、かつこの組織だけ
- モデルは Opus と Sonnet だけ。
enforceAvailableModelsで「Default」の行もこのリストに従う permissions.deny:全マシンで、curl コマンドとプロジェクトの.envと secrets フォルダの読み取りを拒否。disableBypassPermissionsModeで全セッションから bypass の権限モードを外すallowManagedPermissionRulesOnly:ユーザー・プロジェクト・ローカル設定の権限ルールを無視するallowedMcpServers:GitHub の MCP サーバーだけを、名前でなく URL で照合する(ユーザーは任意のサーバーを「github」と名付けられるため)。一致しないユーザー追加のサーバーは読み込まれない(リストに URL の項目しかないとき、stdio のサーバーもすべて含む)。allowManagedMcpServersOnlyにより、この管理リストが唯一の許可リストになるstrictKnownMarketplaces:プラグインはこのマーケットプレイスからだけ入れられるsandbox:Claude が実行するすべてのコマンドをサンドボックスに入れ、サンドボックスが準備できなければ起動を拒否し、ブロックされたコマンドをサンドボックス外で再試行させない。ネットワークは npm と GitHub に限り、ユーザーはドメインを足せないrequiredMinimumVersion:2.1.150 より古いバージョンでは起動を拒否するcleanupPeriodDays:セッションのトランスクリプトとローカルのセッションデータを 7 日後に削除するcompanyAnnouncements:全ユーザーが起動時に見るメッセージ
関連ページ#
- 設定キー一覧:全キーと、置ける場所・例
- 権限ルール:allow・ask・deny のルールの書き方
- 環境変数一覧:Claude Code が読む変数と
envブロック - 設定のデバッグ:設定が効かないとき
- .claude ディレクトリの中身:サブエージェント・MCP サーバー・プラグイン・
CLAUDE.mdを含む、Claude Code が読むすべてのファイル - 組織への導入と管理設定:何を強制するかの決め方
公式ドキュメント(英語)
2026年10月5日時点の内容をもとに、日本語でまとめています。