---
title: "Claude Code: settings.json i zmienne środowiskowe"
description: "Pełny opis pól settings.json, hierarchia konfiguracji i zmienne środowiskowe sterujące thinking i kontekstem."
author: Maciej Olszewski
date: 2026-05-07
tags:
  - claude-code
  - ai
url: "https://inprojects.ai/blog/claude-code-settings-i-zmienne/"
language: pl
---

# Claude Code: settings.json i zmienne środowiskowe

> Pełny opis pól settings.json, hierarchia konfiguracji i zmienne środowiskowe sterujące thinking i kontekstem.

> Przegląd konfiguracji Claude Code: pliki settings.json, zmienne środowiskowe i sposób ich ustawienia, żeby model nie chodził na pół gwizdka.

Powrót do głównego artykułu: [Jak wymusić jakość w Claude Code](https://inprojects.ai/blog/claude-code-wymuszanie-jakosci/)

## Hierarchia konfiguracji

Claude Code czyta ustawienia z kilku miejsc. Wyższy priorytet nadpisuje niższy:

```mermaid
graph TD
    A["1. Managed settings<br/>(organizacja, nie do nadpisania)"] --> B["2. Flagi CLI<br/>(--settings, --effort, --model)"]
    B --> C["3. .claude/settings.local.json<br/>(osobiste, git-ignored)"]
    C --> D["4. .claude/settings.json<br/>(zespołowe, commitowane)"]
    D --> E["5. ~/.claude/settings.json<br/>(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 w settings.json

Pola, które mają największy wpływ na jakość odpowiedzi:

```json
{
  "$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 określają, 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. Domyślnie 31 999 i ta wartość sprawdza się najlepiej |
| `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):**
```json
{
  "env": {
    "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1",
    "MAX_THINKING_TOKENS": "31999"
  }
}
```

**B) W shellu (per sesja):**
```bash
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1
export MAX_THINKING_TOKENS=31999
claude
```

**C) W .zshrc/.bashrc (trwale):**
```bash
echo 'export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1' >> ~/.zshrc
```

Opcja A jest najlepsza, bo zmienne z sekcji `env` w settings.json są ustawiane 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 (domyślnie 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 ok. 95%), Claude automatycznie kompaktuje kontekst.

Społeczność zaleca ustawienie `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` na `50`, bo wcześniejsza kompakcja zachowuje lepszą jakość kontekstu. Do tego częste `/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)

```json
{
  "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:

```json
{
  "$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):

```json
{
  "model": "sonnet",
  "effortLevel": "medium"
}
```

## Pełna lista zmiennych

W chwili 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](https://gist.github.com/jedisct1/9627644cda1c3929affe9b1ce8eaf714). Repozytorium [shanraisshan/claude-code-best-practice](https://github.com/shanraisshan/claude-code-best-practice) dokumentuje 60+ ustawień settings.json.
