Claude Code の settings.json 完全ガイド 2026——スコープ・チーム設定・パーミッション管理を整理する
settings.json の4スコープ(管理/ローカル/プロジェクト/ユーザー)と settings.local.json の分離方法、チーム開発での permissions 設計、CLAUDE.md との違いを公式ドキュメントベースで整理。2026年6月版。
エンジニアのゆとです。
Claude Code をチームで使い始めると、最初の壁が settings.json の設計だ。「どこに何を書くか」「個人設定と共有設定をどう分けるか」「コミットすべきかgitignoreすべきか」——公式ドキュメントを読まないと判断できない問題が次々と出てくる。
この記事では .claude/settings.json の全体像を整理する。スコープの仕組み、チームで共有すべき設定と個人で持つべき設定の分け方、実用的な permissions の書き方まで、2026年6月版の公式仕様に基づいてまとめた。
settings.json の4スコープ
Claude Code は 4 つのスコープから設定を読み込み、優先度の高い順に適用する。
優先順(高い方が優先):
- Managed — 企業・組織の IT 管理者が配置(ユーザーは上書き不可)
- Local —
.claude/settings.local.json(個人・このリポジトリのみ、gitignore 推奨) - Project —
.claude/settings.json(チーム共有、git commit する) - User —
~/.claude/settings.json(個人・全プロジェクト共通)
例外として permissions と rules は上書きではなくマージ される。denylist が常に優先。
ほとんどの設定は変更後すぐに反映されるが、model と outputStyle は /clear またはセッション再起動が必要。
settings.json(共有)に書くべきもの
.claude/settings.json は「このプロジェクトでは Claude に何をやらせるか」を定義するファイルだ。個人の好みではなく、プロジェクトの仕様として書く。
permissions の基本
{
"permissions": {
"allow": [
"Bash(npm install)",
"Bash(npm run build)",
"Bash(npm run test)",
"Bash(npm run test:*)",
"Bash(npm run lint)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Edit(src/**)",
"Edit(tests/**)",
"Read(**)"
],
"deny": [
"Bash(git push *)",
"Bash(git reset --hard *)",
"Bash(rm -rf *)"
]
}
}
deny リストは「このプロジェクトで Claude がやってはいけないこと」の明示だ。git push を deny にしておけば、対話セッション中に Claude が main へ誤って push することを防げる。新しくプロジェクトに入った人が deny リストを見れば「ここは気をつけろ」というガイドラインにもなる。
便利な追加設定
{
"permissions": {
"allow": ["..."],
"deny": ["..."]
},
"env": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8000"
},
"autoUpdatesChannel": "stable"
}
autoUpdatesChannel: "stable" はチームで使う場合に有用。"stable" は最新チャンネルより約1週間遅れだが、大きなリグレッションを含むリリースをスキップする傾向がある。"latest" はリリースされ次第すぐに更新される(デフォルト)。
settings.local.json(個人)に書くべきもの
.claude/settings.local.json は個人の上書き設定。コミットしてはいけない。
{
"permissions": {
"allow": [
"Bash(~/scripts/*)"
],
"defaultMode": "bypassPermissions"
},
"env": {
"ANTHROPIC_MODEL": "claude-opus-4-8"
}
}
この例は、個人スクリプトを Claude に触らせたい、ローカルでは bypass モードを使いたい、Opus を使いたいという設定。チームの共有設定には入れず、自分のローカルだけで適用する。
.gitignore に追加しておく:
.claude/settings.local.json
.claude/.credentials.json
.claude/store/
.claude/store/ はキャッシュやセッション状態が入るディレクトリ。マシン固有なので絶対にコミットしない。
よく使う設定項目リファレンス
公式で定義されている主要設定をカテゴリ別に整理する。
モデル・パフォーマンス系:
model— デフォルトモデル指定(変更は再起動が必要)effortLevel—"low"/"medium"/"high"/"xhigh"でセッション跨ぎの努力レベルを固定alwaysThinkingEnabled—trueにすると拡張思考をデフォルト有効化
セキュリティ系:
permissions.allow— 許可ツールのパターン(例:"Bash(npm run lint)")permissions.deny— 拒否ツールのパターン(deny が常に優先)permissions.ask— 実行前に確認を取るパターン
UI 系:
editorMode—"vim"にすると入力欄が Vim キーバインドになるlanguage— Claude の応答言語を指定(日本語で使う場合は"Japanese")tui—"fullscreen"で全画面表示に
更新・バージョン管理:
autoUpdatesChannel—"stable"or"latest"(デフォルト:"latest")minimumVersion— このバージョン以下へのダウングレードをブロック
環境変数(env キー経由):
{
"env": {
"DISABLE_AUTOUPDATER": "1",
"NO_COLOR": "1"
}
}
DISABLE_AUTOUPDATER は自動更新を完全停止する。バージョン固定が必要な環境に使う。
settings.json と CLAUDE.md の違い
混同されやすいが役割が違う。
CLAUDE.md— Claude が読む「テキストのコンテキスト」。プロジェクトの背景、コーディング規約、作業の進め方を自然言語で書く。Claude の知識として機能するsettings.json— 構造化された「設定ファイル」。Claude が使えるツール、実行できるコマンド、デフォルトのパーミッションモードを制御する
CLAUDE.md は「何をやるか」の方針を伝える。settings.json は「何をやっていいか」の境界線を引く。どちらも git commit する。
正しい .claude/ ディレクトリ構造
.claude/
├── settings.json ← commit(チーム共有)
├── settings.local.json ← gitignore(個人のみ)
├── CLAUDE.md ← 任意 commit(チームのコンテキスト)
└── commands/ ← 任意 commit(カスタムスラッシュコマンド)
├── review.md
└── deploy-check.md
JSON Schema でオートコンプリートを有効にするには:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json"
}
これで VS Code や JetBrains IDE で設定項目の補完と型チェックが効くようになる。
マネージド設定(企業利用)
IT 部門や DevOps が全ユーザーに強制適用したい設定は Managed スコープで配置する。
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json - Linux/WSL:
/etc/claude-code/managed-settings.json - Windows:
C:\Program Files\ClaudeCode\managed-settings.json
Managed に設定した項目はユーザーが上書きできない。requiredMinimumVersion でバージョンを強制したり、forceLoginMethod でログイン方法を限定したりといった企業用途の設定がここで機能する。
まとめ
settings.json の設計で押さえるポイントは3つ。
- コミットするのは
.claude/settings.json(プロジェクト設定)と.claude/CLAUDE.mdだけ - 個人設定は
.claude/settings.local.jsonに分離し、gitignore に追加する - permissions は allow/deny/ask の3層で管理し、deny が常に優先される
チーム開発で「自分の設定が消えた」「Claude の挙動が人によって違う」という問題は、ほとんどがこの設定分離ができていないことが原因だ。初期セットアップ時に .gitignore への追記と 2 ファイル体制を整えておくと、後から解決するより圧倒的に楽になる。