Settings System
Full settings.json Example
Section titled “Full settings.json Example”{ "$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "claude-sonnet-4-6", "theme": "dark", "editorMode": "normal", "language": "english",
"permissions": { "allow": [ "Bash(npm run *)", "Bash(git *)", "Read", "Edit" ], "deny": [ "Bash(rm -rf *)", "Edit(./secrets/**)" ] },
"defaultMode": "default",
"env": { "NODE_ENV": "development", "MY_VAR": "value" },
"hooks": [ { "event": "PostToolUse", "if": { "tool": "Edit" }, "run": "sh", "args": ["-c", "prettier --write $file_path 2>/dev/null || true"], "continueOnError": true } ],
"mcpServers": { "playwright": { "type": "stdio", "command": "npx", "args": ["-y", "@playwright/mcp@latest"] } },
"autoMemoryEnabled": true, "autoCompactEnabled": true, "fileCheckpointingEnabled": true, "autoUpdatesChannel": "latest", "minimumVersion": "2.1.100",
"additionalDirectories": ["/path/to/shared"], "cleanupPeriodDays": 30}Key Settings Reference
Section titled “Key Settings Reference”Core Behavior
Section titled “Core Behavior”| Key | Values | Default |
|---|---|---|
model | model ID string | claude-sonnet-4-6 |
theme | dark, light, auto | dark |
editorMode | normal, vim | normal |
language | language name | english |
defaultMode | default, acceptEdits, plan, auto, bypassPermissions | default |
Features
Section titled “Features”| Key | Type | Default | Purpose |
|---|---|---|---|
autoMemoryEnabled | boolean | true | Auto save learnings |
autoCompactEnabled | boolean | true | Auto compact context |
fileCheckpointingEnabled | boolean | true | Enable /rewind |
alwaysThinkingEnabled | boolean | false | Extended thinking always on |
disableArtifact | boolean | false | Disable artifact publishing |
Updates
Section titled “Updates”| Key | Values | Purpose |
|---|---|---|
autoUpdatesChannel | latest, stable | Update channel |
minimumVersion | version string | Floor version |
Managed/Policy Only (org-level enforcement)
Section titled “Managed/Policy Only (org-level enforcement)”| Key | Purpose |
|---|---|
allowManagedPermissionRulesOnly | Enforce only managed rules |
disableBypassPermissionsMode | Prevent bypass mode |
disableAutoMode | Prevent auto mode |
Scope-Specific Usage
Section titled “Scope-Specific Usage”// .claude/settings.json — shared team settings{ "permissions": { "allow": ["Bash(npm run *)", "Bash(git *)"] }}
// .claude/settings.local.json — personal overrides{ "model": "claude-opus-4-8", "theme": "light"}
// ~/.claude/settings.json — applies to all projects{ "autoMemoryEnabled": true, "theme": "dark"}🧠 Quick Recall
Section titled “🧠 Quick Recall”- Trick: MLPU — Managed > Local > Project > User (“My Laptop, Project, User”).
- settings.json = flags made permanent.
👨🏫 Teach It
Section titled “👨🏫 Teach It”- Show: set the same key in project and user scope — watch who wins.
- They’ll trip on: editing user settings when they meant project (or vice versa).
Learning path: ⬅ 11-real-world-workflows.md · Index · ➡ 13-model-config-env-vars.md
Written by Fenil Patel