Claude Code Einstellungsreferenz
Jeder Schlüssel in settings.json, die vollständige Umgebungsvariablenliste und die Fünf-Scope-Präzedenzkette, die entscheidet, welche Konfiguration gewinnt, wenn Managed und User kollidieren.
Hören Sie auf zu konfigurieren. Fangen Sie an zu bauen.
SaaS-Builder-Vorlagen mit KI-Orchestrierung.
Problem: Die meisten Claude Code-Schmerzen haben eine Ursache. Deine Konfiguration passt nicht dazu, wie du arbeitest. Du stempelst den ganzen Tag Bash-Befehle ab, Team-Standardwerte laden nie, oder ein Schlüssel, den du gestern bearbeitet hast, bewirkt nichts.
Die Lösung ist, das Einstellungssystem zu kennen. Nicht nur die Schlüssel, sondern die Präzedenzregeln, die einen Gewinner ermitteln, wenn zwei Scopes nicht übereinstimmen.
Schnellgewinn: Füge eine $schema-Zeile in settings.json ein und jeder Editor, der JSON-Schema versteht, leuchtet mit Autocomplete und Inline-Checks auf. VS Code, Cursor und alles andere mit Schema-Unterstützung profitiert davon.
Die Fünf-Scope-Präzedenzkette
Einstellungen folgen einer festen Rangordnung. Sie zu kennen ist der Unterschied zwischen "Warum hat meine Änderung nicht gezogen?" und "Oh, falsche Datei."
Scope-Priorität (Höchste bis Niedrigste)
| Priorität | Scope | Ort | Wen es betrifft | Geteilt? |
|---|---|---|---|---|
| 1 | Managed | Systemverzeichnisse | Alle Nutzer auf der Maschine | Ja (IT-verteilt) |
| 2 | Command line | CLI-Flags | Nur die aktuelle Session | Nein |
| 3 | Local | .claude/settings.local.json | Du, dieses Projekt | Nein (gitignored) |
| 4 | Project | .claude/settings.json | Alle Mitarbeiter | Ja (in git) |
| 5 | User | ~/.claude/settings.json | Du, alle Projekte | Nein |
Höhere Scopes schlagen immer niedrigere. Punkt. Eine Managed-Regel der IT, die Bash(curl *) blockiert, ist durch keine persönliche oder Projektdatei erreichbar.
Den richtigen Scope wählen
Managed passt für Organisationen, die Regeln ohne Ausstiegsluke brauchen:
- Sicherheitsrichtlinien (Zugriff auf Anmeldedaten blockieren, destruktive Befehle verbieten)
- Compliance, die für jeden Entwickler und jedes Repo gelten muss
- Standard-Hooks oder MCP-Konfigs, die von IT ausgerollt werden
Command line-Flags behandeln einmalige Überschreibungen innerhalb einer einzigen Session:
- Ein anderes Modell ausprobieren:
claude --model claude-sonnet-4-5-20250929 - Extra Berechtigungsspielraum für eine bestimmte Aufgabe gewähren
- Mit dem
--debug-Flag ausführen
Local ist deine private Sandbox für ein bestimmtes Repo:
- Eine Projektregel leise überschreiben, die nicht zu deiner Maschine passt
- Einen Hook ausprobieren, bevor du ihn dem Team vorschlägst
- Pfade, die einzigartig für diese Maschine sind (wo dein SSH-Schlüssel liegt, auf welchem Port der lokale Proxy läuft)
Project ist der Ort, wo das Team sich ausrichtet:
- Berechtigungsregeln, die alle befolgen
- Gemeinsame Hooks für Auto-Format und Lint
- MCP-Server-Konfigs, die jeder Teamkollege braucht
- CLAUDE.md-Anweisungen, die das Projekt beschreiben
User sind deine eigenen Standardwerte:
- Sprache, Theme und der Ausgabestil, den du bevorzugst
- Plugins, die du in jedem Repo aktiv haben willst
- Globale Berechtigungsregeln (wie eine pauschale Ablehnung für
~/.ssh)
Managed-Einstellungspfade nach Betriebssystem
Managed-Dateien brauchen Admin-Rechte und liegen außerhalb jedes Benutzer-Home-Verzeichnisses:
| Betriebssystem | Pfad |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/ |
| Linux / WSL | /etc/claude-code/ |
| Windows | C:\Program Files\ClaudeCode\ |
Zwei Dateien liegen in diesen Ordnern. managed-settings.json enthält die Einstellungen, managed-mcp.json enthält MCP-Server.
Jeder Knopf in Claude Code sitzt an einem bekannten Dateipfad in jedem Scope:
| Feature | User | Project (geteilt) | Local (persönlich) |
|---|---|---|---|
| Einstellungen | ~/.claude/settings.json | .claude/settings.json | .claude/settings.local.json |
| Subagents | ~/.claude/agents/ | .claude/agents/ | N/A |
| MCP-Server | ~/.claude.json | .mcp.json | ~/.claude.json (pro Projekt) |
| Plugins | ~/.claude/settings.json | .claude/settings.json | .claude/settings.local.json |
| CLAUDE.md | ~/.claude/CLAUDE.md | CLAUDE.md oder .claude/CLAUDE.md | CLAUDE.local.md |
Einstellungsreferenz
Allgemeine Einstellungen
| Schlüssel | Beschreibung | Standard | Beispiel |
|---|---|---|---|
model | Standard-Modell überschreiben | (Systemstandard) | "claude-sonnet-4-5-20250929" |
language | Bevorzugte Antwortsprache von Claude | Englisch | "japanese" |
outputStyle | System-Prompt-Stil anpassen | (keine) | "Explanatory" |
cleanupPeriodDays | Tage, bevor inaktive Sessions gelöscht werden | 30 | 20 |
autoUpdatesChannel | Release-Kanal: "stable" oder "latest" | "latest" | "stable" |
showTurnDuration | Antwort-Timing anzeigen ("Gekocht für 1m 6s") | true | false |
spinnerVerbs | Spinner-Text anpassen | (Standardwerte) | {"mode": "append", "verbs": ["Pondering"]} |
spinnerTipsEnabled | Tipps während Claude arbeitet anzeigen | true | false |
terminalProgressBarEnabled | Terminal-Fortschrittsbalken (iTerm2, Windows Terminal) | true | false |
alwaysThinkingEnabled | Erweitertes Denken standardmäßig aktivieren | false | true |
plansDirectory | Wo Plan-Dateien gespeichert werden | ~/.claude/plans | "./plans" |
respectGitignore | @ Datei-Picker respektiert .gitignore | true | false |
companyAnnouncements | Beim Start angezeigte Nachrichten (zufälliger Zyklus) | (keine) | ["Review guidelines at docs.acme.com"] |
Berechtigungseinstellungen
Die unten stehenden Schlüssel liegen alle innerhalb des "permissions"-Objekts.
| Schlüssel | Beschreibung | Beispiel |
|---|---|---|
allow | Regeln zum automatischen Erlauben der Tool-Nutzung | ["Bash(npm run lint)", "Read(~/.zshrc)"] |
ask | Regeln, die eine Bestätigung erfordern | ["Bash(git push *)"] |
deny | Regeln zum vollständigen Blockieren der Tool-Nutzung | ["WebFetch", "Bash(curl *)", "Read(./.env)"] |
additionalDirectories | Zusätzliche Verzeichnisse, auf die Claude zugreifen kann | ["../docs/", "../shared/"] |
defaultMode | Standard-Berechtigungsmodus beim Start | "acceptEdits" |
disableBypassPermissionsMode | --dangerously-skip-permissions blockieren | "disable" |
Auswertungsreihenfolge: Deny kommt zuerst. Dann Ask. Allow kommt zuletzt. Die erste passende Regel ist die, die greift.
Regel-Syntax-Beispiele:
| Regel | Was sie trifft |
|---|---|
Bash | Alle Bash-Befehle |
Bash(npm run *) | Befehle, die mit npm run beginnen |
Read(./.env) | Lesen der .env-Datei |
Read(./secrets/**) | Lesen von allem in secrets/ |
WebFetch(domain:example.com) | Fetch-Anfragen an example.com |
Sandbox-Einstellungen
Die unten stehenden Schlüssel liegen innerhalb des "sandbox"-Objekts und steuern, wie Bash-Befehle isoliert werden.
| Schlüssel | Beschreibung | Standard | Beispiel |
|---|---|---|---|
enabled | Bash-Sandboxing aktivieren | false | true |
autoAllowBashIfSandboxed | Befehle automatisch genehmigen, wenn sandboxed | true | true |
excludedCommands | Befehle, die außerhalb der Sandbox laufen | (keine) | ["git", "docker"] |
allowUnsandboxedCommands | dangerouslyDisableSandbox-Escape erlauben | true | false |
enableWeakerNestedSandbox | Schwächere Sandbox für Docker (Linux/WSL2) | false | true |
network.allowedDomains | Whitelist ausgehender Domains | (keine) | ["github.com", "*.npmjs.org"] |
network.allowUnixSockets | Unix-Socket-Pfade, die in der Sandbox zugänglich sind | (keine) | ["~/.ssh/agent-socket"] |
network.allowAllUnixSockets | Alle Unix-Socket-Verbindungen erlauben | false | true |
network.allowLocalBinding | Binding an localhost erlauben (nur macOS) | false | true |
network.httpProxyPort | Benutzerdefinierter HTTP-Proxy-Port | (auto) | 8080 |
network.socksProxyPort | Benutzerdefinierter SOCKS5-Proxy-Port | (auto) | 8081 |
Attributionseinstellungen
Die unten stehenden Schlüssel liegen innerhalb des "attribution"-Objekts und entscheiden, wie git Claudes Arbeit zuschreibt.
| Schlüssel | Beschreibung | Standard |
|---|---|---|
commit | Text, der an Git-Commit-Nachrichten angehängt wird | "Generated with Claude Code..." + Co-Authored-By Trailer |
pr | Text, der an Pull-Request-Beschreibungen angehängt wird | "Generated with Claude Code..." |
Leere einen der Schlüssel mit "" aus, und die entsprechende Zeile verschwindet aus git. Der Legacy-Schlüssel includeCoAuthoredBy funktioniert noch, ist aber jetzt veraltet.
Plugin-Einstellungen
| Schlüssel | Beschreibung | Beispiel |
|---|---|---|
enabledPlugins | Plugins ein-/ausschalten | {"formatter@acme-tools": true} |
extraKnownMarketplaces | Zusätzliche Plugin-Quellen | Siehe Beispiel unten |
strictKnownMarketplaces | (Nur Managed) Marktplatz-Quellen einschränken | [{"source": "github", "repo": "acme/plugins"}] |
Es gibt vier Quelltypen. github zeigt auf ein Repo. git akzeptiert jede URL. directory verwendet einen lokalen Pfad während der Entwicklung. hostPattern tut Regex-Matching auf Hostnamen.
MCP-Server-Einstellungen
| Schlüssel | Beschreibung | Beispiel |
|---|---|---|
enableAllProjectMcpServers | Alle Projekt-MCP-Server automatisch genehmigen | true |
enabledMcpjsonServers | Bestimmte MCP-Server zum Genehmigen | ["memory", "github"] |
disabledMcpjsonServers | Bestimmte MCP-Server zum Ablehnen | ["filesystem"] |
allowedMcpServers | (Nur Managed) MCP-Server-Allowlist | [{"serverName": "github"}] |
deniedMcpServers | (Nur Managed) MCP-Server-Denylist | [{"serverName": "filesystem"}] |
Authentifizierungs- und Anbietereinstellungen
| Schlüssel | Beschreibung | Beispiel |
|---|---|---|
apiKeyHelper | Skript zum Generieren des Auth-Wertes | "/bin/generate_temp_api_key.sh" |
forceLoginMethod | Auf claudeai oder console beschränken | "claudeai" |
forceLoginOrgUUID | Organisation beim Login automatisch auswählen | "xxxxxxxx-xxxx-..." |
awsAuthRefresh | Skript zum Aktualisieren von AWS-Anmeldedaten | "aws sso login --profile myprofile" |
awsCredentialExport | Skript, das AWS-Anmeldedaten-JSON ausgibt | "/bin/generate_aws_grant.sh" |
otelHeadersHelper | Skript zum Generieren von OpenTelemetry-Headern | "/bin/generate_otel_headers.sh" |
Hook- und erweiterte Einstellungen
| Schlüssel | Beschreibung | Beispiel |
|---|---|---|
hooks | Lifecycle-Event-Hook-Konfiguration | Siehe Hooks-Leitfaden |
disableAllHooks | Alle Hooks deaktivieren | true |
allowManagedHooksOnly | (Nur Managed) Nutzer-/Projekt-Hooks blockieren | true |
allowManagedPermissionRulesOnly | (Nur Managed) Nutzer-/Projekt-Berechtigungsregeln blockieren | true |
fileSuggestion | Benutzerdefiniertes @ Datei-Autocomplete-Skript | {"type": "command", "command": "~/.claude/file-suggestion.sh"} |
statusLine | Benutzerdefinierte Statusleisten-Anzeige | {"type": "command", "command": "~/.claude/statusline.sh"} |
env | Umgebungsvariablen für jede Session | {"FOO": "bar"} |
Umgebungsvariablen
Claude Code liest rund 70 Env-Variablen. Die meisten sind Randfälle. Ein funktionierendes Set von etwa 20 ist alles, was du im täglichen Gebrauch siehst.
Modell und Anbieter
| Variable | Zweck |
|---|---|
ANTHROPIC_API_KEY | API-Schlüssel für direkten API-Zugriff |
ANTHROPIC_MODEL | Standard-Modell überschreiben |
ANTHROPIC_DEFAULT_SONNET_MODEL | Modellname für Sonnet-Alias |
CLAUDE_CODE_SUBAGENT_MODEL | Modell für Subagents (getrennt vom Hauptmodell) |
CLAUDE_CODE_USE_BEDROCK | Über AWS Bedrock routen |
CLAUDE_CODE_USE_VERTEX | Über Google Vertex routen |
Die Alias-Variablen (ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL) sind nützlich, wenn deine Organisation ein feinjustiertes Modell auf die Standard-Alias-Namen zeigt.
Performance-Tuning
| Variable | Zweck |
|---|---|
CLAUDE_CODE_MAX_OUTPUT_TOKENS | Maximale Ausgabe-Tokens (Standard: 32K, Max: 64K) |
MAX_THINKING_TOKENS | Budget für erweitertes Denken (Standard: 31.999, auf 0 setzen zum Deaktivieren) |
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE | % der Kontextkapazität (1-100), die Auto-Komprimierung auslöst |
BASH_DEFAULT_TIMEOUT_MS | Standard-Bash-Befehl-Timeout |
BASH_MAX_TIMEOUT_MS | Maximaler Bash-Timeout, den Claude setzen kann |
BASH_MAX_OUTPUT_LENGTH | Maximale Bash-Ausgabezeichen vor dem Abschneiden |
Datenschutz und Telemetrie
| Variable | Zweck |
|---|---|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | Updates, Telemetrie, Fehlerberichte auf einmal deaktivieren |
DISABLE_TELEMETRY | Von Statsig-Telemetrie abmelden |
DISABLE_ERROR_REPORTING | Von Sentry-Fehlerberichten abmelden |
CLAUDE_CODE_HIDE_ACCOUNT_INFO | E-Mail und Org-Name in der UI ausblenden |
DISABLE_AUTOUPDATER | Automatische Versions-Updates deaktivieren |
Session-Kontrolle
| Variable | Zweck |
|---|---|
CLAUDE_CODE_TASK_LIST_ID | Eine Task-Liste über mehrere Sessions teilen |
CLAUDE_CODE_ENABLE_TASKS | Auf false setzen, um zur alten TODO-Liste zurückzukehren |
CLAUDE_CODE_SHELL | Automatische Shell-Erkennung überschreiben |
CLAUDE_CONFIG_DIR | Benutzerdefinierten Konfigurations-/Datenverzeichnis-Ort |
MCP_TIMEOUT | Timeout in ms für den MCP-Server-Start |
MCP_TOOL_TIMEOUT | Timeout in ms für die MCP-Tool-Ausführung |
Es gibt zwei Wege. Exportiere sie aus deinem Shell-Profil, oder leg sie in das "env"-Objekt von settings.json, damit sie Sessions überleben, ohne Shell-rc-Bearbeitungen.
Konfigurationskonflikte lösen
Die meisten klassischen Konfigurationsprobleme verschwinden, sobald du weißt, welcher Scope welchen schlägt.
Fall 1: Eine Berechtigungsregel stimmt zwischen Scopes nicht überein
Deine User-Config erlaubt Bash(curl *). Die Projekt-Config verbietet es. Wer setzt sich durch? Project sitzt bei Priorität 4 und User bei Priorität 5, also hält die Blockierung. Wenn curl auf deiner eigenen Maschine wirklich gebraucht wird, lege die Erlaubnisregel stattdessen in .claude/settings.local.json. Local bei Priorität 3 übertrifft Project bei Priorität 4, und der lokale Allow überschreibt dann die blockierte Regel.
Fall 2: Eine Managed-Datei schießt eine Projektregel ab
Dein Team-settings.json im Projekt erlaubt Bash(rm -rf *). IT liefert dann eine Managed-Datei, die denselben Befehl blockiert. Managed gewinnt. Immer. Nichts in einer User-, Local- oder Projektdatei kann über Managed-Regeln hinausreichen. Das Design ist absichtlich, und Compliance ist der Grund.
Fall 3: Etwas lokal ausprobieren
Du willst einen neuen Hook testen, bevor du ihn dem Team anbietest. Lege ihn in .claude/settings.local.json. Er übertrifft das gemeinsam genutzte .claude/settings.json und bleibt nur auf deiner Maschine.
Fall 4: Zwei Scopes werden zusammengeführt
Scopes löschen sich nicht gegenseitig vollständig aus. Sie stapeln sich. User-Config erlaubt Bash(git status) und Projekt-Config erlaubt Bash(npm run lint) - du bekommst beide Regeln gleichzeitig aktiv. Die Zusammenführung verbindet Berechtigungs-Arrays. Wenn derselbe Schlüssel an zwei Scopes einen anderen Wert trägt, ist der höhere Scope der, der für diesen einzelnen Schlüssel gilt.
Fall 5: Eine Env-Variable aus der Shell und in settings.json aufgelistet
Exportiere ANTHROPIC_MODEL aus deiner Shell und liste es auch im env-Objekt von settings.json, und der Shell-Export ist der Wert, den Claude Code verwendet.
Wie Einstellungen in den Rest des Systems eingreifen
CLAUDE.md-Dateien enthalten die Anweisungen, die Claude beim Start lädt, plus den Hintergrund, den es braucht. Ein klares mentales Modell: Einstellungen sagen, was Claude tun darf, CLAUDE.md sagt, was Claude wissen sollte.
MCP-Server stecken neue Tools in Claude. Ihre Konfiguration lebt in eigenen Dateien (.mcp.json auf Projektebene, ~/.claude.json auf User-Ebene). settings.json ist der Ort, der entscheidet, welche dieser Server genehmigt und welche blockiert sind.
Hooks leben innerhalb von settings.json unter dem hooks-Schlüssel. Jeder führt einen Shell-Befehl aus oder sendet einen LLM-Prompt, wenn ein Lifecycle-Ereignis feuert.
Plugins laufen auch durch settings.json, über enabledPlugins und deine Marktplatz-Liste.
Subagents sind einfache Markdown-Dateien. User-Subagents gehen in ~/.claude/agents/, Projekt-Subagents in .claude/agents/.
Backups und Wiederherstellung
Jedes Mal, wenn eine Konfigurationsdatei sich ändert, schreibt Claude Code ein zeitgestempeltes Backup. Die letzten fünf Kopien pro Datei bleiben erhalten. Ein schlechtes Update bedeutet nicht mehr, in git reflog zu graben. Die vorherige funktionierende Version liegt neben der kaputten.
Erste Schritte
Neu bei Claude Code-Einstellungen? Arbeite diese kurze Liste der Reihe nach durch.
- Berechtigungsregeln auf Projektebene. Jeden Lesezugriff auf
.envund andere geheime Dateien blockieren. Die Build- oder Test-Befehle, die du jeden Tag ausführst, erlauben - Einen PostToolUse-Hook, der automatisch beim Speichern formatiert. Dieser eine Eintrag vernichtet Genehmigungs-Fatigue schneller als alles andere
- Attributionseinstellungen, wenn die Co-Authored-By-Zeile angepasst oder ausgeblendet werden muss
- User-Standardwerte für die Präferenzen, die du in jedem Repo aktiv haben möchtest
- Eine CLAUDE.md-Datei mit Projektkontext und deinen Code-Konventionen
Hören Sie auf zu konfigurieren. Fangen Sie an zu bauen.
SaaS-Builder-Vorlagen mit KI-Orchestrierung.
Claude Code Sandboxing
Claude Code Sandboxing setzt Dateisystem- und Netzwerkgrenzen auf Kernel-Ebene durch. Einrichtung für macOS Seatbelt, Linux und WSL2 bubblewrap sowie Proxy-Allowlisten.
1M-Kontext-Fenster in Claude Code
Anthropic hat das 1-Mio.-Token-Kontextfenster für Opus 4.6 und Sonnet 4.6 in Claude Code aktiviert. Kein Beta-Header, kein Aufpreis, feste Preise und weniger Kompaktierungen.