Lesson 04 · 10 dk okuma

settings.json — bilinen ve undocumented alanlar

permissions, env, hooks, statusLine, model defaults, autoApprove pattern'leri.

.claude/settings.json repo’ya özel davranışı kontrol eder. ~/.claude/settings.json kullanıcı seviyesinde override.

En çok kullandığın alanlar

{
  "permissions": {
    "allow": ["Bash(npm test:*)", "Bash(git status:*)"],
    "deny":  ["Bash(rm -rf:*)"]
  },
  "env": {
    "DATABASE_URL": "postgres://..."
  },
  "model": "claude-sonnet-4-6",
  "fastMode": false,
  "statusLine": {
    "type": "command",
    "command": "git rev-parse --abbrev-ref HEAD"
  },
  "hooks": {
    "PostToolUse": [
      { "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "pnpm lint" }] }
    ]
  }
}

Undocumented / az bilinen alanlar

AlanNe yapar
disabledToolsBelirli tool’ları kapat
additionalDirectoriesSandbox’a ekstra dizin ekle (read-only veya yazılabilir)
apiKeyHelperToken üretimi için custom script
cleanupPeriodDaysEski oturum dosyalarını sil
forceLoginMethodclaudeai veya console
suggestedPromptsYeni session’da öneriler
defaultMode”default” veya “plan”
outputStyleUI çıktı şablonu

Permission allowlist pattern’leri

Bash(<command>:*) formatı:

  • Bash(npm:*) → npm ile başlayan her komut
  • Bash(npm test:*) → sadece npm test ve alt komutları
  • Bash(*) → her şey (önerilmez)
  • Read(/path/**) → glob

Settings dosyaları hiyerarşisi

  1. ~/.claude/settings.json (kullanıcı, tüm projeler)
  2. .claude/settings.json (repo, ekibe paylaşılan)
  3. .claude/settings.local.json (kişisel override, gitignore’da)

Aşağı doğru ezer.

Sıradaki

Hooks giriş — settings.json’da bahsi geçen hook’ları detaylı göreceğiz.