Claude Code の settings.local.json とは:settings.json との違いと .gitignore の扱い
Claude Code の .claude/settings.local.json の役割を解説します。settings.json との優先順位、対話中に「今後も許可」を選んだときに追記される仕組み、Git 管理から外す方法、チームで共有すべき設定との切り分けを紹介します。
.claude/ ディレクトリを見ると、settings.json のほかに settings.local.json というファイルができていることがあります。これは Claude Code が自動生成する個人用の設定ファイルで、チームで共有する settings.json とは役割が違います。
結論として、settings.json は Git で共有するチームのルール、settings.local.json は Git に入れない自分専用の追加設定です。
KEY POINT
この記事で分かること
- settings.json と settings.local.json の役割と優先順位
- 「今後も許可」が settings.local.json に追記される仕組み
- どちらに何を書くべきかの切り分け
2 つのファイルの違い
| 項目 | .claude/settings.json | .claude/settings.local.json |
|---|---|---|
| 役割 | プロジェクト共通の設定 | 個人の追加設定 |
| Git 管理 | する | しない(自動で .gitignore に追加される) |
| 作られ方 | 手で作る | 「今後も許可」を選ぶと自動生成 |
| 優先順位 | ローカルより低い | プロジェクトより高い(ただし deny は常に最優先) |
同じキーが両方にある場合、settings.local.json の値が優先されます。ただし permissions.deny は例外で、プロジェクト側の deny をローカルの allow で解除することはできません。
用語解説
設定の適用順: 管理者設定 → ローカル → プロジェクト → ユーザー(~/.claude/settings.json)の順に強く、より限定的なスコープが優先されます。deny だけは、どのスコープに書かれていても最優先です。
「今後も許可」で何が起きるか
対話中に確認ダイアログで「今後も許可する」を選ぶと、そのコマンドのパターンが settings.local.json の allow に追記されます。
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(git diff:*)"
]
}
}
気付かないうちに allow が増えていくため、/permissions コマンドで定期的に確認し、不要なものは削除してください。「あのコマンドが確認なしで走るのはなぜか」と思ったら、まずこのファイルを見ます。
どちらに何を書くか
| 設定 | 書く場所 |
|---|---|
| チーム全員に守らせたい deny(秘密情報の読み取り禁止、force push 禁止) | settings.json |
| 誰が実行しても安全な allow(lint、テスト) | settings.json |
| 共有 hooks(編集後の format) | settings.json |
自分の作業速度のための allow(git commit、npm install) | settings.local.json |
自分だけの defaultMode(acceptEdits など) | settings.local.json |
| ローカル環境固有の hooks や環境変数 | settings.local.json |
チームの settings.json は慎重側に倒し、速く進めたい人は settings.local.json で上書きする、という分担が扱いやすいです。
.gitignore の扱い
Claude Code は settings.local.json を作成するときに .gitignore へ追記します。追記されていない場合は手で追加します。
.claude/settings.local.json
CLAUDE.local.md(個人用のメモ)も同じく Git 管理外です。あわせて追加しておくと安全です(CLAUDE.local.md の使い方)。
settings.local.json に秘密情報を書かない
Git 管理外とはいえ、hooks の command に API キーを直接書くのは避けてください。環境変数から読ませる形にします。
関連する設定
permissions の allow / ask / deny の書き方と全体設計は、親記事の settings.json で permissions を設計する を参照してください。
まとめ
settings.jsonはチーム共有(Git 管理)、settings.local.jsonは個人用(Git 管理外)- 「今後も許可」は
settings.local.jsonの allow に追記される。/permissionsで定期的に見直す - 優先順位はローカル > プロジェクト > ユーザー。deny だけはどこに書いても最優先
- チームの設定は慎重側に、個人の高速化はローカルで上書きする
よくある質問
- settings.local.json は自分で作る必要がありますか?
- 対話中に「今後も許可」を選ぶと自動で作られます。先に作っておいても構いません。
- settings.local.json は Git にコミットされますか?
- Claude Code が自動で .gitignore に追加するため、通常はコミットされません。既存の .gitignore の状態によっては手で追加が必要です。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。