Claude Code: settings.json i zmienne środowiskowe
Pełna referenca settings.json, hierarchia konfiguracji, zmienne kontrolujące thinking i kontekst.
Kompletny przegląd konfiguracji Claude Code — pliki settings.json, zmienne środowiskowe i jak je ustawić, żeby model nie chodził na pół gwizdka.
Powrót do głównego artykułu: Jak wymusić jakość w Claude Code
Hierarchia konfiguracji
Claude Code czyta ustawienia z kilku miejsc. Wyższy priorytet nadpisuje niższy:
(organizacja, nie do nadpisania)"] --> B["2. Flagi CLI
(--settings, --effort, --model)"] B --> C["3. .claude/settings.local.json
(osobiste, git-ignored)"] C --> D["4. .claude/settings.json
(zespołowe, commitowane)"] D --> E["5. ~/.claude/settings.json
(globalne osobiste)"]
Reguła: deny ma zawsze najwyższy priorytet bezpieczeństwa i nie da się go nadpisać z niższego poziomu. Listy (np. allow) są łączone i deduplikowane między poziomami.
Gdzie tworzyć pliki
| Zakres | Ścieżka | Commitować? |
|---|---|---|
| Globalny (wszystkie projekty) | ~/.claude/settings.json | nie dotyczy |
| Zespołowy (per projekt) | .claude/settings.json | tak |
| Osobisty (per projekt) | .claude/settings.local.json | nie, dodaj do .gitignore |
Ustawienia jakości — settings.json
Kluczowe pola wpływające na jakość odpowiedzi:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "opus",
"effortLevel": "high",
"alwaysThinkingEnabled": true,
"showThinkingSummaries": true,
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1",
"MAX_THINKING_TOKENS": "31999",
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000"
}
}
Opis pól
| Pole | Typ | Domyślnie | Co robi |
|---|---|---|---|
model | string | "default" | Model: "opus", "sonnet", "haiku", "opus[1m]" (1M kontekstu) |
effortLevel | string | zależy od planu | "low", "medium", "high". Persystuje między sesjami |
alwaysThinkingEnabled | boolean | false | Extended thinking domyślnie włączone |
showThinkingSummaries | boolean | false | Pokazuj streszczenia bloków thinking |
language | string | "english" | Język odpowiedzi, np. "polish" |
Aliasy modeli
| Alias | Model |
|---|---|
"default" | Rekomendowany dla twojego planu |
"sonnet" | Claude Sonnet 4.6 |
"opus" | Claude Opus 4.6 |
"haiku" | Claude Haiku 4.5 |
"opus[1m]" | Opus 4.6 z 1M kontekstem |
"sonnet[1m]" | Sonnet 4.6 z 1M kontekstem |
Zmienne środowiskowe — thinking i reasoning
Te zmienne kontrolują ile model „myśli”:
| Zmienna | Wartość | Co robi |
|---|---|---|
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING | 1 | Wyłącza adaptive thinking, wymusza stały budżet |
CLAUDE_CODE_DISABLE_THINKING | 1 | Wyłącza thinking całkowicie (nie rób tego) |
MAX_THINKING_TOKENS | np. 31999 | Budżet tokenów na reasoning. Default 31 999, to dobry sweet spot |
CLAUDE_CODE_EFFORT_LEVEL | low/medium/high/max | Effort jako zmienna (alternatywa dla /effort) |
DISABLE_INTERLEAVED_THINKING | 1 | Wyłącza thinking między wywołaniami narzędzi |
Jak ustawić zmienne
Trzy sposoby:
A) W settings.json (rekomendowane):
{
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1",
"MAX_THINKING_TOKENS": "31999"
}
}
B) W shellu (per sesja):
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1
export MAX_THINKING_TOKENS=31999
claude
C) W .zshrc/.bashrc (trwale):
echo 'export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1' >> ~/.zshrc
Opcja A jest najlepsza, bo env w settings.json jest wstrzykiwane automatycznie przy starcie i nie trzeba pamiętać o eksporcie.
Zmienne środowiskowe — kontekst i output
| Zmienna | Wartość | Co robi |
|---|---|---|
CLAUDE_CODE_MAX_OUTPUT_TOKENS | 64000 | Max tokenów na odpowiedź. Opus 4.6: do 128 000 |
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE | 50 | Próg auto-kompakcji kontekstu (%). Niższy = częstsza kompakcja |
DISABLE_AUTO_COMPACT | 1 | Wyłącza auto-kompakcję (ręczny /compact nadal działa) |
CLAUDE_CODE_DISABLE_1M_CONTEXT | 1 | Wymusza mniejsze okno kontekstu |
BASH_DEFAULT_TIMEOUT_MS | ms | Timeout na komendy bash |
API_TIMEOUT_MS | 600000 | Timeout na request do API (default 10 min) |
Kompakcja kontekstu
Okno kontekstu Claude Code zapełnia się szybko — każdy odczytany plik, każdy output komendy. Gdy zapełnienie przekroczy próg (domyślnie ~95%), Claude automatycznie kompaktuje kontekst.
Community rekomenduje ustawienie CLAUDE_AUTOCOMPACT_PCT_OVERRIDE na 50 — wcześniejsza kompakcja zachowuje lepszą jakość kontekstu. Plus agresywne używanie /clear między niepowiązanymi zadaniami.
Zmienne środowiskowe — telemetria i prywatność
| Zmienna | Wartość | Co robi |
|---|---|---|
DISABLE_TELEMETRY | 1 | Wyłącza telemetrię |
DISABLE_ERROR_REPORTING | 1 | Wyłącza raportowanie błędów |
CLAUDE_CODE_HIDE_ACCOUNT_INFO | 1 | Ukrywa email/org |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 1 | Wyłącza telemetrię + autoupdate + feedback + error reporting |
Uprawnienia — permissions
{
"permissions": {
"allow": [
"Edit(*)",
"Write(*.md)",
"Bash(npm run *)",
"Bash(git *)"
],
"deny": [
"Read(.env)",
"Read(./secrets/**)"
]
}
}
Składnia wzorców:
Bash(npm run *)— pozwól na komendy pasujące do wzorcaRead(.env)— zablokuj odczyt pliku .envEdit(src/**)— pozwól edytować wszystko w src/mcp__*— pozwól na wszystkie narzędzia MCP
Rekomendowana konfiguracja
Dla złożonej pracy inżynieryjnej:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "opus",
"effortLevel": "high",
"alwaysThinkingEnabled": true,
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1",
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50",
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000",
"DISABLE_TELEMETRY": "1"
},
"permissions": {
"allow": [
"Edit(*)",
"Write(*)",
"Bash(npm run *)",
"Bash(git *)"
],
"deny": [
"Read(.env)",
"Read(./secrets/**)"
]
}
}
Dla szybkich, rutynowych zadań (np. formatowanie, drobne edycje):
{
"model": "sonnet",
"effortLevel": "medium"
}
Pełna lista zmiennych
Na dzień pisania tego artykułu Claude Code ma ponad 170 zmiennych środowiskowych. Pełna lista (wyciągnięta z kodu źródłowego) jest dostępna w gist jedisct1 na GitHubie. Repozytorium shanraisshan/claude-code-best-practice dokumentuje 60+ ustawień settings.json.