Skip to main content
Code Guide
T06 Intermediate Technical

Settings.json — Complete Structure

All configuration keys and their scope

PDF
← All cards

File hierarchy

~/.claude/settings.json (global, all projects)
↓ overridden by
.claude/settings.json (project, shared with team)
↓ overridden by
.claude/settings.local.json (local machine, gitignore)

settings.local.json always takes precedence. It is the ideal place for personal overrides without creating Git conflicts.

Complete structure

{
"model": "claude-sonnet-4-5",
"permissions": {
"allow": ["Bash(git *)", "Bash(pnpm *)", "Read"],
"deny": ["Bash(rm -rf *)", "Write(file_path:*.env*)"],
"ask": ["Bash(npm publish)"]
},
"env": {
"NODE_ENV": "development",
"LOG_LEVEL": "debug"
},
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command",
"command": ".claude/hooks/format.sh" }]
}]
}
}

Available keys

KeyRole
modelDefault model
permissions.allowAuto-approved tools
permissions.denyBlocked tools
permissions.askTools requiring confirmation
envInjected environment variables
hooksScripts triggered on events
spinnerVerbsWords in the loading spinner
spinnerTipsOverrideTips displayed during processing
enableAllProjectMcpServersEnables all project MCP servers
mcpServers.<name>.alwaysLoadLoad this MCP server automatically every session (v2.1.121)
blockedMarketplaces.hostPatternBlock MCP marketplace by host pattern (v2.1.119)
blockedMarketplaces.pathPatternBlock MCP marketplace by path pattern (v2.1.119)
prUrlTemplateCustom PR URL template, e.g. for GitHub Enterprise (v2.1.122)
sandbox.network.deniedDomainsDomains blocked from sandbox network access (v2.1.116)

Bedrock users: set ANTHROPIC_BEDROCK_SERVICE_TIER env var to control service tier when routing through AWS Bedrock (v2.1.122).

Spinner customization

{
"spinnerVerbs": {
"mode": "replace",
"verbs": ["Caffeinating…", "Thinking…", "Optimizing…"]
},
"spinnerTipsOverride": {
"tips": ["/compact when context is full"],
"excludeDefault": true
}
}

mode: "add" extends the default list rather than replacing it. These keys have no functional impact, only cosmetic.

What should stay in .gitignore

.claude/settings.local.json # Local machine overrides
.claude/CLAUDE.md # Personal instructions
.env.local # Secrets

Files to commit (settings.json, agents/, commands/, hooks/, rules/) represent the shared team configuration. Never include API keys or tokens in these files.

Enter your email to read the full card and get the complete PDF bundle.

All content is free and open-source. We just ask for your email.

PDF: