claude-code ai

Claude Code: settings.json i zmienne środowiskowe

Pełna referenca settings.json, hierarchia konfiguracji, zmienne kontrolujące thinking i kontekst.

MO Maciej Olszewski ·

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:

graph TD A["1. Managed settings
(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żkaCommitować?
Globalny (wszystkie projekty)~/.claude/settings.jsonnie dotyczy
Zespołowy (per projekt).claude/settings.jsontak
Osobisty (per projekt).claude/settings.local.jsonnie, 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

PoleTypDomyślnieCo robi
modelstring"default"Model: "opus", "sonnet", "haiku", "opus[1m]" (1M kontekstu)
effortLevelstringzależy od planu"low", "medium", "high". Persystuje między sesjami
alwaysThinkingEnabledbooleanfalseExtended thinking domyślnie włączone
showThinkingSummariesbooleanfalsePokazuj streszczenia bloków thinking
languagestring"english"Język odpowiedzi, np. "polish"

Aliasy modeli

AliasModel
"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”:

ZmiennaWartośćCo robi
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING1Wyłącza adaptive thinking, wymusza stały budżet
CLAUDE_CODE_DISABLE_THINKING1Wyłącza thinking całkowicie (nie rób tego)
MAX_THINKING_TOKENSnp. 31999Budżet tokenów na reasoning. Default 31 999, to dobry sweet spot
CLAUDE_CODE_EFFORT_LEVELlow/medium/high/maxEffort jako zmienna (alternatywa dla /effort)
DISABLE_INTERLEAVED_THINKING1Wyłą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

ZmiennaWartośćCo robi
CLAUDE_CODE_MAX_OUTPUT_TOKENS64000Max tokenów na odpowiedź. Opus 4.6: do 128 000
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE50Próg auto-kompakcji kontekstu (%). Niższy = częstsza kompakcja
DISABLE_AUTO_COMPACT1Wyłącza auto-kompakcję (ręczny /compact nadal działa)
CLAUDE_CODE_DISABLE_1M_CONTEXT1Wymusza mniejsze okno kontekstu
BASH_DEFAULT_TIMEOUT_MSmsTimeout na komendy bash
API_TIMEOUT_MS600000Timeout 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ść

ZmiennaWartośćCo robi
DISABLE_TELEMETRY1Wyłącza telemetrię
DISABLE_ERROR_REPORTING1Wyłącza raportowanie błędów
CLAUDE_CODE_HIDE_ACCOUNT_INFO1Ukrywa email/org
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1Wyłą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 wzorca
  • Read(.env) — zablokuj odczyt pliku .env
  • Edit(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.