.claude/settings.jsonの設定項目一覧と活用法
Claude Codeの動作を細かく制御する設定ファイルの全貌
settings.jsonとは ― Claude Codeの動作設定ファイル
.claude/settings.jsonは、Claude Codeの動作・権限・ツール使用を制御する設定ファイルです。CLAUDE.mdがプロジェクトの文脈を伝えるのに対し、settings.jsonはClaude Codeの「振る舞い」そのものを制御します。
このファイルを適切に設定することで、チーム全体で統一されたClaude Code体験を提供したり、セキュリティリスクを最小限に抑えたりできます。
settings.jsonの3つの配置場所
- プロジェクト設定:
.claude/settings.json― チーム共有用(Gitにコミット) - 個人設定:
.claude/settings.local.json― 個人用上書き(.gitignoreに追加) - ユーザー設定:
~/.claude/settings.json― 全プロジェクト共通の個人設定
設定項目の完全一覧
permissions(権限設定)
Claude Codeがどのような操作を許可されるかを制御する、最も重要な設定項目です。
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff)",
"Bash(git log)",
"Bash(npm test)",
"Bash(npm run lint)",
"Read",
"Glob",
"Grep"
],
"deny": [
"Bash(rm -rf)",
"Bash(git push --force)",
"Bash(curl)*"
]
}
}
| 設定 | 説明 | 例 |
|---|---|---|
| permissions.allow | 許可するツール・コマンド | "Bash(git *)", "Read" |
| permissions.deny | 拒否するツール・コマンド | "Bash(rm -rf *)" |
permissions.allow / permissions.deny(推奨)
ツールの許可・拒否は permissions オブジェクト内の allow / deny 配列で設定します。上記の permissions セクションで解説した形式を使ってください。
{
"permissions": {
"allow": [
"Bash(git *)",
"Read",
"Write",
"Edit",
"Glob",
"Grep"
],
"deny": [
"Bash(rm -rf *)",
"Bash(sudo *)"
]
}
}
環境変数の設定
Claude Codeで使用する環境変数は、settings.jsonではなくシェルの環境変数として設定することを推奨します。
# Mac/Linux: ~/.zshrc や ~/.bashrc に追記
export ANTHROPIC_API_KEY=sk-ant-xxxxx
export EDITOR=code
# Windows PowerShell:
$env:ANTHROPIC_API_KEY="sk-ant-xxxxx"
$env:EDITOR="code"
注意: 秘密情報(APIキー等)はシェルの環境変数で管理し、settings.jsonには含めないでください。settings.jsonをGitにコミットする場合、秘密情報が漏洩します。
カスタム指示(CLAUDE.mdで管理)
Claude Codeへのカスタム指示は、settings.jsonではなくCLAUDE.mdファイルに記載することを推奨します。CLAUDE.mdはプロジェクトルートに配置し、プロジェクト固有のルールや規約を記述します。
CLAUDE.md に記載する例
# コーディング規約
- コードのコメントは日本語で書いてください
- テストを書くときはAAAパターン(Arrange-Act-Assert)を使ってください
- エラーメッセージはユーザーフレンドリーな日本語にしてください
プロジェクト設定 vs 個人設定の使い分け
| ファイル | 用途 | Gitに含める | 例 |
|---|---|---|---|
| .claude/settings.json | チーム共有設定 | はい | 権限ルール、共通コマンド許可 |
| .claude/settings.local.json | 個人の上書き設定 | いいえ | 個人のAPIキー、好みの設定 |
| ~/.claude/settings.json | 全プロジェクト共通 | 対象外 | グローバルな好み・スタイル |
設定のマージ(結合)ルール
複数の設定ファイルが存在する場合、以下の優先順位でマージされます。
- settings.local.json(最優先 ― 個人設定)
- .claude/settings.json(プロジェクト設定)
- ~/.claude/settings.json(ユーザー設定 ― 最低優先)
deny(拒否)ルールはすべての設定ファイルで合算されます。つまり、いずれかのファイルでdenyに含まれていれば、他のファイルでallowされていても拒否されます。
チーム共有のベストプラクティス
推奨するsettings.json(チーム共有用)
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(npm test*)",
"Bash(npm run *)",
"Bash(npx prisma *)",
"Read",
"Write",
"Edit",
"Glob",
"Grep"
],
"deny": [
"Bash(rm -rf /)*",
"Bash(git push --force)*",
"Bash(git reset --hard)*",
"Bash(DROP TABLE)*",
"Bash(DROP DATABASE)*"
]
},
}
※ カスタム指示はCLAUDE.mdに記載してください(例: 「Conventional Commits形式でコミットメッセージを書く」など)。
.gitignoreに追加する内容
# Claude Code個人設定
.claude/settings.local.json
まとめ
- settings.jsonはClaude Codeの動作・権限を制御する設定ファイル
- プロジェクト設定(共有)・個人設定(上書き)・ユーザー設定(グローバル)の3階層
- permissions.allow/denyで安全なコマンド実行を制御
- 秘密情報はsettings.local.jsonに記述し、Gitにはコミットしない
- denyルールは合算されるため、安全側に倒れる設計になっている