Claude Codeの設定ファイル、どこに何を書けばいいか迷いませんか。~/.claude/settings.json、.claude/settings.json、.claude/settings.local.json……似た名前のファイルがいくつもあって、編集したのに反映されない、という経験をした人もいるでしょう。この記事では、4つの設定スコープの違いを表で整理し、.claude/settings.jsonをGit管理してチーム全体に同じ設定を配る手順を案内します。Windows環境前提で進めます。
この記事でやること
押さえるポイントは3つです。
- 設定スコープ(User / Project / Local / Managed)の違いを整理する
- プロジェクトスコープの
.claude/settings.jsonをGit管理してチームに展開する - 設定が反映されないときの確認方法を知る
前提として、ターミナルでClaude Codeを操作する手順で案内します。
Claude Codeの設定ファイルは4種類ある
Claude Codeの設定は、スコープ(適用範囲)ごとに読み込むファイルが異なります。ざっくり次の4つです。
| スコープ | ファイルのパス | 用途 | Git管理 |
|---|---|---|---|
| User | ~/.claude/settings.json(Windowsの例:C:\Users\あなた\.claude\settings.json) |
個人PC全体の設定 | しない |
| Project | プロジェクトの`.claude\settings.json` | チーム共有の設定 | **する** |
| Local | プロジェクトの`.claude\settings.local.json` | 個人のローカル設定 | しない |
| Managed | 組織のポリシー(MDM等) | 組織全体の強制設定 | 管理者による |
初心者が一番使うのはProjectスコープ(.claude\settings.json)です。このファイルをGitにコミットすれば、チーム全員に同じ設定が配られます。
複数スコープに同じ項目が書かれていた場合、優先順位は次のとおりです。
Managed > CLI引数 > Local > Project > User
上にあるほど強く、下位の設定を上書きします。「Userに書いたのに反映されない」という場合は、ProjectやLocalで同じ項目が上書きしている可能性があります。
事前に必要なもの
始める前に、環境を確認しておきます。
- Claude Codeがインストール済み — ターミナルで
claude --versionを実行してバージョンが表示されればOK - Gitが使える環境 — チーム共有に使います。
git --versionで確認 - テキストエディタ — メモ帳でもVS Codeでも構いません。JSONファイルを編集できれば十分です
いずれかが不足している場合は、先にインストールを済ませてからこの先に進んでください。
settings.jsonの基本構造を知る
編集に入る前に、settings.jsonの中身がどうなっているか押さえておきましょう。最小構成はこんな形です。
{
"permissions": {
"allow": [
"Bash(python *)",
"Read"
],
"deny": [
"Bash(rm *)"
]
},
"env": {
"DEFAULT_BRANCH": "main"
}
}
主要なキーをざっくり紹介します。
permissions.allow— 自動で許可する操作。Bash(python *)ならpythonコマンド、Readならファイル読み込みpermissions.deny— 禁止する操作。危険なコマンドをブロックする用途
権限モードの設定と混同しやすいポイントですが、permissionsは「どのツール操作を自動許可するか」を制御し、権限モードは「確認プロンプトを出す頻度」を制御します。
– env — 環境変数の設定
– hooks — フック(特定のタイミングで自動実行する処理)
– mcpServers — MCPサーバーの接続設定(後で説明する.mcp.jsonを使うことが多いです)
スキル機能を使えば、こうした設定を組み合わせた定型作業をコマンド一つで実行できるようになります。
allowとdenyの書き方で迷いやすいのが、ツール名のあとのカッコ書きです。Bash(python *)は「pythonで始まるBashコマンドを許可」、Bash(rm *)は「rmで始まるBashコマンドを禁止」という意味になります。
JSONを書き換える前に、元のファイルのバックアップを取っておくと安心です。ファイル名をsettings.json.bakのようにコピーしておけば、書き損じても元に戻せます。
チーム共有設定をGitで管理する
ここからがメインの手順です。架空のプロジェクトmy-appを例に進めます。
手順1:.claudeディレクトリとsettings.jsonを作る
プロジェクトのルートフォルダに.claudeフォルダを作り、その中にsettings.jsonを置きます。
my-app\
├── .claude/
│ ├── settings.json ← ここにチーム共通設定を書く
│ └── settings.local.json ← 個人設定(Git管理しない)
├── src/
└── .gitignore
手順2:settings.jsonにチーム設定を書く
{
"permissions": {
"allow": [
"Bash(python *)",
"Bash(npm *)",
"Read",
"Write"
],
"deny": [
"Bash(rm -rf *)",
"Bash(del *)",
"Bash(rmdir *)"
]
}
}
チームで許可・禁止したい操作をここにまとめます。
手順3:.gitignoreでsettings.local.jsonを除外する
個人のローカル設定(settings.local.json)はGit管理しないため、.gitignoreに追記します。
.claude/settings.local.json
こうしておけば、各メンバーが自分用の設定をsettings.local.jsonに書いても、他人のリポジトリには影響しません。
手順4:Gitにコミット・プッシュする
git add .claude/settings.json .gitignore
git commit -m "Claude Codeのチーム共有設定を追加"
git push
手順5:チームメンバーが取り込む
他のメンバーはgit pullするだけで設定が反映されます。
git pull
git pullしたあと、Claude Codeを起動すれば.claude/settings.jsonの内容が読み込まれます。追加の操作は不要です。
settings.json(チーム共通)とsettings.local.json(個人)の使い分けを簡単にまとめると、チーム全員に適用したいルールはsettings.json、自分のPCだけで変えたい設定はsettings.local.jsonに書きます。
MCPサーバーの接続設定もチームで共有する
MCPサーバーの接続先もチームで統一したい場面があります。そのときはプロジェクトルートに.mcp.jsonを置きます。
MCPサーバーの追加手順(外部ツールとの連携方法)は別記事で詳しく解説しています。
{
"mcpServers": {
"my-tools": {
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"env": {
"API_KEY": "${MY_API_KEY}"
}
}
}
}
ポイントは${MY_API_KEY}の部分です。APIキーそのものを書かず、環境変数を参照する形にします。これでGitにコミットしても秘密情報は漏れません。
各メンバーは、自分の環境で環境変数を設定します。Windowsなら次のように設定します。
setx MY_API_KEY "あなたのAPIキー"
setxで設定した変数は、新しいターミナルを開き直してから有効になります。設定したはずなのに読まれない、という場合はターミナルの再起動を試してください。
.mcp.jsonも.claude/settings.jsonと同じくGit管理して構いません。APIキーを直接書き込まなければ安全に共有できます。
なお、プロジェクト共有のMCPサーバーは、初回利用時にClaude Code側で承認を求められる場合があります。これは異常ではなく、安全確認のための挙動です。
CLAUDE.mdでチーム指示を統一する
設定ファイル(JSON)とは別に、CLAUDE.mdというMarkdownファイルでチームの作業ルールをClaude Codeに伝えられます。
設定ファイルが「許可・禁止」のような機械的な制御だとすると、CLAUDE.mdは「コーディング規約」や「作業フロー」のような文章での指示に向きます。
CLAUDE.mdの具体的な書き方(5要素50行で書くプロジェクト設定)は別記事で詳しく解説しています。
最小限の例を示します。
# プロジェクトルール
- コミットメッセージは日本語で書く
- テストは`pytest`を使う
- 変数名はキャメルケース
このファイルを.claude/CLAUDE.mdに置いてGit管理すれば、チーム全員に同じ指示が反映されます。
指示が増えてきたら.claude/rules/フォルダに個別のファイル(例:.claude/rules/testing.md)として分けて管理することもできます。規約が長くなりすぎたら分割を検討してみてください。
Managed設定で組織ポリシーを強制する(参考)
Enterpriseや組織導入の文脈では、Managed設定という仕組みがあります。これは管理者が組織全体のセキュリティポリシーをClaude Codeに強制するもので、個人設定で上書きできません。
Windows環境では、MDM(Mobile Device Management)やレジストリを使って設定を配る仕組みが用意されています。具体的な適用方法は組織の管理者に確認してください。
個人や小規模チームで使う分には、Managed設定を意識する必要はほぼありません。User・Project・Localの3スコープで十分対応できます。組織導入が決まった段階で改めて調べる、くらいの認識で大丈夫です。
設定が反映されないときの確認方法
設定を書いたのに反映されない、というときは次の順序で確認します。
/configコマンドで現在の設定を見る
Claude Codeのチャット画面で/configと入力すると、現在読み込まれている設定が表示されます。ここに意図した内容が含まれていれば反映済み、含まれていなければ何かが上書きしています。
よくあるつまずきポイント
- ファイルの場所を間違えている — Userスコープ(
C:\Users\ユーザー名\.claude\settings.json)に書いているつもりでProjectスコープ(プロジェクト内の.claude\settings.json)を見ている、あるいはその逆 settings.local.jsonが上書きしている — LocalスコープはProjectより優先されるため、Localに古い設定が残っているとProjectの設定が無視される- JSONの構文エラー — カンマ忘れやカッコの対応ミスがあるとファイル全体が読み込まれない
設定ファイルのJSONミスでClaude Codeがエラーを出したときの対処方法は、別記事で事例付きで解説しています。
JSONの構文チェックは、テキストエディタの機能やオンラインのJSONバリデータを使うと簡単です。VS Codeなら保存時にエラー箇所に赤い波線が表示されます。
/configで意図した設定が表示されているか確認し、表示されていなければ「どのファイルに何が書かれているか」を見直す、という流れで原因を絞り込めます。
最後に確認すること
設定が完了したら、次の3点を確認してください。
.claude/settings.jsonがGitにコミットされている(git statusで確認)- チームメンバーが
git pullしたあとにClaude Codeを起動し、/configで設定が表示される .mcp.jsonを使っている場合、環境変数が設定済みである- PowerShell:
echo $env:MY_API_KEY - コマンドプロンプト:
echo %MY_API_KEY%
これらが揃っていれば、チーム共有設定は機能しています。
設定の基本が固まったら、次はCLAUDE.mdの書き方を深掘りするか、MCPサーバーの具体的な追加手順に取り組んでみてください。






