# Ekibin paylaşabileceği ayarlar

Claude Code ayarları birkaç kapsamdan okuyup sabit bir sıraya göre birleştiriyor. Hangi dosyanın kazandığını ve neyin git'e girdiğini bilmek, ekip kurallarının tek kişinin alışkanlığına dönüşmesini önlüyor.

## Dört dosya, bir de sizin olmayan

Claude Code'da dört ayar kapsamı var:

- **User**: `~/.claude/settings.json`, bütün projelerde sizin.
- **Shared project**: `.claude/settings.json`, repoya commit edilir.
- **Project local**: `.claude/settings.local.json`, yalnızca bu projede sizin.
- **Managed**: bir kurumun dosya, MDM ya da sunucu yönetimli ayarlarla koyduğu.

Beşinci bir dosya olan `~/.claude.json`'u siz düzenlemiyorsunuz. Onu Claude kendisi yazıyor: hesap, MCP ayarları, güven durumu.

Ayrımın bütün amacı bu. Ekip kuralı, ekibin paylaştığı bir dosyada durur. Kişisel tercih, yalnızca sizde olan bir dosyada.

## Kim kazanır

Kapsamlar çeliştiğinde sıra yüksekten düşüğe şöyle: managed, komut satırı (`--settings`), project local, shared project, user.

```flow
Managed ayarlar
Komut satırı: --settings
Project local
Shared project
User
```

"En yüksek kazanır" kuralının istisnası dizilerdir. `permissions.allow` gibi listeler kapsamlar arasında birleşir; yani user düzeyinde eklenen bir kural ile projede eklenen bir kural ikisi de geçerli olur.

Model küçük bir tuzak örneği. `ANTHROPIC_MODEL`, herhangi bir dosyadaki `model` ayarını ezer; `ANTHROPIC_DEFAULT_MODEL` ise yalnızca hiçbir dosya model belirlemediyse devreye girer. Ayrıca bazı anahtarlar, managed ayarlara rağmen alt kapsamdaki daha sıkı değeri dikkate alır, örneğin `disableClaudeAiConnectors: true` ya da `permissions.blockReadsOutsideWorkingDirectories: true`. Daha sıkı olan değer kazanır.

**Question:** User ayarı bir komuta izin veriyor, proje ayarı başka bir komuta izin veriyor. Ne geçerli olur?

- Yalnızca proje olanı, çünkü daha yüksek
- Yalnızca user olanı
- İkisi de, çünkü izin dizileri kapsamlar arasında birleşir
- Hiçbiri, birbirini iptal ederler

**Answer:** İkisi de, çünkü izin dizileri kapsamlar arasında birleşir. permissions.allow gibi diziler birbirinin yerine geçmez, kapsamlar arasında birleşir.


## Git'e ne girer

Ekibin üzerinde anlaştığı kurallar için `.claude/settings.json` commit edin: sırlara deny kuralları, herkesin çalıştırdığı komutlar için allowlist, ortak hook'lar. Kişisel geçersiz kılmalar için `.claude/settings.local.json` kullanın.

İşin bir kısmını Claude kendisi yapıyor. `settings.local.json` dosyasını ilk yazdığında onu global git exclude listenize ekliyor. Git reposunda yerel dosya reponun kökünde durur (worktree'lerde ana checkout'un kökünde).

Yeni bir ekip arkadaşı için önemli bir güven ayrıntısı var. Commit edilmiş deny kuralları hemen geçerli olur. Commit edilmiş allow kuralları, her ekip arkadaşı klasör güven penceresini kabul edene kadar bekler.

> **Bazı ayarlar proje dosyasını yok sayar**
Bir proje ayar dosyasındaki `defaultMode: "auto"` ya da `"bypassPermissions"` sessizce yok sayılır. Yalnızca user ya da managed ayarlar bunu dikkate alır. Ekip için bir izin modunu commit etmeye güvenmeyin.


"Yes, and don't ask again" bir allow kuralını `.claude/settings.local.json` dosyasına yazar, yani kişisel onaylar kişisel kalır. Orada yazan bir allow, bir proje ya da managed dosyasından gelen `ask` kuralını geçemez.

## Neyin yüklendiğine bakmak

Ayar dosyaları katı JSON. Bir yorum ya da sondaki virgül, başlangıçta Settings Error penceresi açar. `"$schema": "https://json.schemastore.org/claude-code-settings.json"` ekleyin, editörünüz yazarken dosyayı doğrulasın.

```terminal
$ claude
> /status
* Hangi ayar kaynaklarının yüklendiğini gösterir
> /config model=sonnet
* Değeri doğrudan ayarlar
$ claude doctor
* Reddedilen girdileri listeler
# Çoğu değişiklik anında geçerli olur: izinler, hook'lar ve apiKeyHelper yeniden başlatma istemez.
```

Ekipte iki kişinin davranışı farklıysa önce `/status` çıktılarını, sonra `claude doctor`'ı karşılaştırın.

> **Cloud oturumları dosyalarınızı atlar**
Cloud oturumlarında user ve local ayarlar hiç okunmaz, cihazınızdaki managed dosyalar da onlara ulaşmaz. Kişisel bir ayara güveniyorsanız orada olmayacak. Bir cloud çalıştırmasının ihtiyaç duyduğunu shared project dosyasına koyun.


## Taşıma ve kurtarma

`CLAUDE_CONFIG_DIR` ayarları, geçmişi ve plugin'leri başka bir yere taşır. Bozulan bir `~/.claude.json` dosyası `~/.claude/backups/` altına yedeklenir ve en son beş `.claude.json.backup.<timestamp>` kopyası geri yüklenebilir. `/model` modeli varsayılanınız olarak kaydeder; seçicide `s`'e basmak kaydetmeden geçiş yapar.

> **Kendi ayrımınızı denetleyin**
Çalıştığınız bir repoda `.claude/settings.json` dosyasını açın ve her satır için sorun: yeni bir ekip arkadaşı bunu ister mi? Aslında kişisel bir alışkanlık olan her şey `.claude/settings.local.json` dosyasına gider. Her katkıcının ihtiyaç duyduğu şey, örneğin `.env` için bir deny kuralı, commit edilen dosyada kalır.


**Question:** Bir projede komutları onaylama tercihlerinizi hangi dosya tutmalı?

- ~/.claude.json
- .claude/settings.json
- .claude/settings.local.json
- Managed ayarlar

**Answer:** .claude/settings.local.json. Project local ayarlar size özeldir ve git exclude listesine eklenir. Shared project dosyası ekibin anlaştığı kurallar içindir.
