Settings.json と Permissions の詳細
重要キーワード (4 語)
settings.json
(設定ファイル)
— Claude Code の挙動を JSON で設定
Permissions
(権限ルール)
— ツールごとに許可/拒否/確認を細かく指定
Statusline
(ステータスライン)
— ターミナル下部の状態表示。カスタム可
Local vs Shared
(個人 vs 共有)
— settings.local.json と settings.json の使い分け
Settings.json: Claude Code の中央管制
.claude/settings.json (プロジェクト用) と ~/.claude/settings.json (グローバル) で
Claude Code のあらゆる挙動を設定できます。
階層と優先順位
{
"model": "claude-sonnet-4-6",
"permissions": {
"allow": [
"Read(*)",
"Glob(*)",
"Grep(*)",
"Edit(src/**)",
"Edit(tests/**)",
"Edit(docs/**)",
"Write(src/**)",
"Write(tests/**)",
"Bash(ls*)",
"Bash(pwd)",
"Bash(cat*)",
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git branch*)",
"Bash(pytest*)",
"Bash(ruff*)",
"Bash(mypy*)",
"Bash(npm test*)",
"Bash(npm run*)",
"Bash(uv run*)"
],
"ask": [
"Bash(git add*)",
"Bash(git commit*)",
"Bash(pip install*)",
"Bash(npm install*)",
"Bash(docker*)",
"Edit(*.yml)",
"Edit(*.yaml)",
"Edit(Dockerfile*)",
"Edit(.github/**)"
],
"deny": [
"Bash(rm -rf*)",
"Bash(git push --force*)",
"Bash(git push -f*)",
"Bash(git reset --hard*)",
"Bash(curl*|*bash*)",
"Bash(wget*|*sh*)",
"Read(.env)",
"Read(.env.*)",
"Read(**/*.pem)",
"Read(**/*.key)",
"Edit(.env)",
"Edit(.env.*)",
"Edit(secrets/**)",
"Write(.env)"
]
},
"env": {
"CLAUDE_PROJECT_NAME": "my-app"
}
}
下の階層が上書き優先。API キーやトークンは local に書くのが安全。
主なトップレベル項目
{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"GITHUB_TOKEN": "ghp_..."
},
"permissions": {
"allow": [
"Bash(open*)",
"Bash(code*)"
]
}
}
Permissions の書き方
ツールごとに allow / ask / deny をルールで指定できます。
{
"model": "claude-sonnet-4-6",
"permissions": {
"allow": [
"Read(*)",
"Glob(*)",
"Grep(*)",
"Edit(src/**)",
"Edit(tests/**)",
"Edit(docs/**)",
"Write(src/**)",
"Write(tests/**)",
"Bash(ls*)",
"Bash(pwd)",
"Bash(cat*)",
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git branch*)",
"Bash(pytest*)",
"Bash(ruff*)",
"Bash(mypy*)",
"Bash(npm test*)",
"Bash(npm run*)",
"Bash(uv run*)"
],
"ask": [
"Bash(git add*)",
"Bash(git commit*)",
"Bash(pip install*)",
"Bash(npm install*)",
"Bash(docker*)",
"Edit(*.yml)",
"Edit(*.yaml)",
"Edit(Dockerfile*)",
"Edit(.github/**)"
],
"deny": [
"Bash(rm -rf*)",
"Bash(git push --force*)",
"Bash(git push -f*)",
"Bash(git reset --hard*)",
"Bash(curl*|*bash*)",
"Bash(wget*|*sh*)",
"Read(.env)",
"Read(.env.*)",
"Read(**/*.pem)",
"Read(**/*.key)",
"Edit(.env)",
"Edit(.env.*)",
"Edit(secrets/**)",
"Write(.env)"
]
},
"env": {
"CLAUDE_PROJECT_NAME": "my-app"
}
}
マッチャ構文
Read(*)... 任意の引数で許可Bash(pytest *)... 引数のプレフィックスマッチEdit(.env)... 完全一致
移行戦略
- 最初は
askを多めに → 慣れたらallowに移す - 危険操作は 常に deny に固定 (
rm -rf,git push --force,.env編集)
Statusline をカスタマイズ
{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"GITHUB_TOKEN": "ghp_..."
},
"permissions": {
"allow": [
"Bash(open*)",
"Bash(code*)"
]
}
}
ブランチ名や残トークンなどを常時表示できます。
env で環境変数を固定
セッション内で常時有効な環境変数。秘匿情報は 絶対に書かない こと (commit 漏れ事故を防ぐ)。
Plugin
カスタムスキル + コマンド + MCP を 1 パッケージで配布できる仕組み。
wzxhzdk:2
設定の確認
wzxhzdk:3
よくある失敗
- ❌
settings.jsonに API キーを書いて commit - ❌
allowでBash(*)を許可してしまう (危険) - ❌
denyを使わず権限制御を諦める - ✅
settings.jsonは チームで共有する固定ルール,settings.local.jsonで個別設定
試す
設定の改善案を Claude に提案させましょう。
次の `.claude/settings.json` の安全性を評価してください。問題点と改善案を箇条書きで。
```json
{
"permissions": {
"allow": ["Bash(*)", "Edit(*)"],
"deny": []
}
}
```チーム標準 settings.json テンプレ (コピペ用)
新規プロジェクトに置く デフォルト として:
{
"model": "claude-sonnet-4-6",
"permissions": {
"allow": [
"Read(*)",
"Glob(*)",
"Grep(*)",
"Edit(src/**)",
"Edit(tests/**)",
"Edit(docs/**)",
"Write(src/**)",
"Write(tests/**)",
"Bash(ls*)",
"Bash(pwd)",
"Bash(cat*)",
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(git branch*)",
"Bash(pytest*)",
"Bash(ruff*)",
"Bash(mypy*)",
"Bash(npm test*)",
"Bash(npm run*)",
"Bash(uv run*)"
],
"ask": [
"Bash(git add*)",
"Bash(git commit*)",
"Bash(pip install*)",
"Bash(npm install*)",
"Bash(docker*)",
"Edit(*.yml)",
"Edit(*.yaml)",
"Edit(Dockerfile*)",
"Edit(.github/**)"
],
"deny": [
"Bash(rm -rf*)",
"Bash(git push --force*)",
"Bash(git push -f*)",
"Bash(git reset --hard*)",
"Bash(curl*|*bash*)",
"Bash(wget*|*sh*)",
"Read(.env)",
"Read(.env.*)",
"Read(**/*.pem)",
"Read(**/*.key)",
"Edit(.env)",
"Edit(.env.*)",
"Edit(secrets/**)",
"Write(.env)"
]
},
"env": {
"CLAUDE_PROJECT_NAME": "my-app"
}
}
→ 読み取りはほぼ自由 / 編集は対象ディレクトリだけ / 危険コマンドと秘密ファイルは絶対 deny。 新人がリポジトリを clone してすぐ Claude Code を使い始めても安全。
個人 (settings.local.json) のテンプレ
.gitignore に settings.local.json を必ず追加してから:
{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"GITHUB_TOKEN": "ghp_..."
},
"permissions": {
"allow": [
"Bash(open*)",
"Bash(code*)"
]
}
}
→ 個人の API キー・好みの追加コマンドはここに。チーム共有 settings.json と統合される。