Settings files
User settings
~/.claude/settings.jsonApplies to every Claude Code session for your account. Suitable for personal defaults like preferred model, effort level, or shell.Project settings
.claude/settings.jsonChecked into the repository. Shared with your team. Use for project-wide permissions, MCP servers, and hooks.Local settings
.claude/settings.local.jsonGitignored automatically. Per-developer overrides that should not be committed (e.g. personal API keys or local tool paths).Policy settings
managed-settings.jsonSet by enterprise administrators. Always wins. Users cannot override policy settings.Precedence order
When the same key appears in multiple files, the later source wins:JSON Schema
Add$schema to any settings file for editor autocompletion and validation:
All configuration options
Authentication
apiKeyHelper
apiKeyHelper
awsCredentialExport
awsCredentialExport
awsAuthRefresh
awsAuthRefresh
gcpAuthRefresh
gcpAuthRefresh
forceLoginMethod
forceLoginMethod
"claudeai" for Claude Pro/Max, "console" for Console billing.forceLoginOrgUUID
forceLoginOrgUUID
Model and inference
model
model
sonnet, opus, haiku, best).effortLevel
effortLevel
"low", "medium", "high". Affects how much the model thinks before responding."max" effort is Opus 4.6 only and is session-scoped for external users — it is not persisted to settings.availableModels
availableModels
"opus"), version prefixes ("opus-4-5"), and full model IDs. An empty array restricts users to only the default model.modelOverrides
modelOverrides
alwaysThinkingEnabled
alwaysThinkingEnabled
false, thinking (extended reasoning) is disabled entirely. When absent or true, thinking is enabled automatically for models that support it.fastMode
fastMode
true, Claude routes certain requests to a faster, lighter model.fastModePerSessionOptIn
fastModePerSessionOptIn
true, fast mode does not persist across sessions. Each new session starts with fast mode off.advisorModel
advisorModel
Permissions
permissions
permissions
allow, deny, and ask rule lists.ToolName(pattern). The defaultMode controls what happens when no rule matches.allowManagedPermissionRulesOnly
allowManagedPermissionRulesOnly
true (and set in managed settings), only allow/deny/ask rules from managed settings are respected. User, project, local, and CLI argument rules are ignored.disableBypassPermissionsMode
disableBypassPermissionsMode
"disable" to prevent users from enabling bypass permissions mode.Hooks
hooks
hooks
disableAllHooks
disableAllHooks
true, disables all hooks and statusLine execution.allowManagedHooksOnly
allowManagedHooksOnly
true (set in managed settings only), only hooks from managed settings run. User, project, and local hooks are ignored.allowedHttpHookUrls
allowedHttpHookUrls
* as a wildcard. When set, HTTP hooks with non-matching URLs are blocked.httpHookAllowedEnvVars
httpHookAllowedEnvVars
Environment variables
env
env
MCP servers
enableAllProjectMcpServers
enableAllProjectMcpServers
.mcp.json.allowedMcpServers
allowedMcpServers
serverName, serverCommand, or serverUrl. When set, only listed servers are permitted.deniedMcpServers
deniedMcpServers
allowManagedMcpServersOnly
allowManagedMcpServersOnly
true (set in managed settings), allowedMcpServers is only read from managed settings. Users can still add their own servers, but only the admin-defined allowlist applies.Git and attribution
attribution
attribution
"" to suppress attribution entirely for that surface.includeGitInstructions
includeGitInstructions
true.worktree
worktree
--worktree flag.symlinkDirectories avoids disk bloat by symlinking shared directories from the main repository. sparsePaths uses git sparse-checkout (cone mode) to check out only the listed paths — dramatically faster in large monorepos.UI and appearance
language
language
outputStyle
outputStyle
syntaxHighlightingDisabled
syntaxHighlightingDisabled
prefersReducedMotion
prefersReducedMotion
statusLine
statusLine
spinnerVerbs
spinnerVerbs
mode: "append" adds to the defaults; "replace" uses only your verbs.terminalTitleFromRename
terminalTitleFromRename
true (default), /rename updates the terminal tab title.Memory and sessions
cleanupPeriodDays
cleanupPeriodDays
30. Setting to 0 disables session persistence entirely — no transcripts are written and existing ones are deleted at startup.autoMemoryEnabled
autoMemoryEnabled
false, Claude will not read from or write to the auto-memory directory.autoMemoryDirectory
autoMemoryDirectory
~/ prefix. Ignored if set in project settings for security. Defaults to ~/.claude/projects/<sanitized-cwd>/memory/.plansDirectory
plansDirectory
~/.claude/plans/.claudeMdExcludes
claudeMdExcludes
CLAUDE.md files to exclude from loading.Enterprise controls
strictPluginOnlyCustomization
strictPluginOnlyCustomization
true (lock all four surfaces), false (explicit no-op), or an array of surface names: "skills", "agents", "hooks", "mcp".autoUpdatesChannel
autoUpdatesChannel
"latest" or "stable".minimumVersion
minimumVersion
companyAnnouncements
companyAnnouncements
skipWebFetchPreflight
skipWebFetchPreflight