Skip to content

Settings schema reference

This page centralizes source-visible settings roots, policy keys, and configuration groups that shape Claude Code tools, prompts, integrations, hooks, sessions, and operations.

Scope and caveats

  • This is a known-settings reference, not a complete JSON Schema dump. The complete schema is embedded in the minified bundle and may also be extended by plugins or managed policy.
  • Settings names here are included when they are already anchored in implementation pages or are high-signal strings in cli.renamed.js.
  • The ordinary effective-object order is plugin defaults → user → project → local → flag/SDK → policy. --setting-sources controls participation of user/project/local, not that order. Some sensitive keys deliberately use narrower resolvers.

Source anchors

Semantic aliasString or symbolMeaning
ProjectUserSettingsSchema.claude/settings.jsonProject/user settings overlay schema text.
TranscriptRetentionSettingcleanupPeriodDaysTranscript retention setting.
ManagedUiPolicySettingsdisableAllHooks, statusLine, disableAgentViewManaged settings/policy surfaces for hooks/status/agent view.
RemoteControlPolicySettingdisableRemoteControlManaged policy surface for Remote Control.
SkillShellPolicySettingdisableSkillShellExecutionManaged policy surface for shell execution in skills/custom slash commands.
ApiKeyHelperSettingapiKeyHelperSettings helper script that outputs authentication values.
EmbeddedSettingsValidatorparseSettingsFileUncached(), r3().safeParseOrdinary loaded settings are sanitized, then validated as a whole through the embedded schema ~72,420.
ManagedSettingsValidatormSi()Managed settings recover per key, with field-specific fail-closed behavior for selected policy controls ~71,679.
SettingsMergeOrderSSi(), settingsMergeCustomizer()Recursive low-to-high merge; arrays normally union while fallbackModel is replaced ~72,820.
EnabledPluginsSettingenabledPluginsSettings surface for plugin enablement and version constraints.
PluginConfigsSettingpluginConfigs, MGr()Plugin user options are read only from user, flag/SDK, and policy settings; project/local values do not participate ~227,482.
ExtraMarketplacesSettingextraKnownMarketplacesSettings surface for repository/team marketplace registration.
StrictMarketplacePolicystrictKnownMarketplacesManaged marketplace allowlist.
BlockedMarketplacePolicyblockedMarketplacesManaged marketplace blocklist.
SandboxOverridePolicydangerouslyDisableSandboxSettings/policy schema text controlling sandbox override behavior.
StatusLineSettingsMutation~/.claude/settings.jsonStatus-line setup instructions mutate user settings.
StatusLineSchemastatusLine, refreshInterval, hideVimModeIndicator, subagentStatusLineMain-line and agent-row command schemas ~71,080.
SettingsInjectionFlag--settings <file-or-json>Adds settings JSON file or inline JSON for a session.
IdeIntegrationFlag--ideAuto-connect IDE integration flag.
ChromeIntegrationFlag--chromeChrome integration flag.
StartupFileResourceFlag--file <specs...>Startup file-resource download integration.
AccessibilitySettingaxScreenReaderSelects the screen-reader-friendly classic renderer; env/CLI take precedence.
AutoModeShellSettingautoMode.classifyAllShellRoutes all Bash/PowerShell commands through the auto-mode classifier.
WorkflowSettingsenableWorkflows, disableWorkflows, workflowKeywordTriggerEnabled, workflowSizeGuidelineEnables workflows, controls the ultracode trigger, and advises default fan-out size.
TeammateModeSettingteammateModeChooses auto, tmux, iterm2, or in-process for experimental Agent Teams; default in-process.
SandboxCredentialPolicysandbox.credentialsProtects credential files and environment variables inside sandboxed subprocesses.
ManagedVersionPolicyrequiredMinimumVersion, requiredMaximumVersionRefuses startup outside administrator-approved semver bounds.
DisableClaudeAiConnectorsSettingdisableClaudeAiConnectorsDisables claude.ai connector loading while leaving other MCP sources separate.
TeamOnboardingPolicyallow_team_onboardingOrganization policy gate for /team-onboarding and its optional hosted-share path.

Bundle module in cli.renamed.js

Semantic aliasLoader line(s)Representative renamed exportsAtlas entry
SettingsFileLoader62036, 62450parseSettingsFile, parseSettingsFileUncached, parseRemoteManagedSettings, loadManagedFileSettingsFromDir, updateSettingsForSource, settingsMergeCustomizer, shouldIncludeParentTier, rawSettingsContainsKeyBundle module map — permission, trust, hooks, and policy

Settings roots and loaders

SurfaceScopeNotes
~/.claude/settings.jsonUser/globalUser-level persisted configuration.
.claude/settings.jsonProjectRepository/project configuration.
.claude/settings.local.jsonLocal projectLocal overrides that are usually not committed.
Managed settings / policyOrganization/adminCan disable or constrain capabilities regardless of local preferences.
--settings <file-or-json>Per invocationAdds settings JSON file or inline JSON.
--managed-settings <file-or-json>Per invocation / SDK parent-policy pathSupplies parent-managed settings; the selected admin tier can filter or suppress that parent slice.
--setting-sources <sources...>Per invocationAdmits a comma-separated subset of user, project, and local. Flag/SDK and policy settings remain admitted, and source order stays fixed.

Effective order and merge exceptions

For the ordinary effective object, later rows have higher precedence:

OrderLayerImportant boundary
0Enabled-plugin defaultsOnly the plugin-default allowlist is accepted; user and higher sources override it.
1User settingsGlobal editable preferences.
2Project settingsOverrides user settings for the repository. Loading does not itself authorize every project-owned executable extension; trust checks remain owner-specific.
3Local settingsPrivate project override.
4Flag/SDK settings--settings file/inline data plus SDK inline settings.
5Managed policySelected admin policy; lower settings cannot override it.

Nested objects merge recursively. Arrays normally concatenate and de-duplicate, but a later fallbackModel array replaces the earlier array. When policy defines availableModels, that array entirely replaces the ordinarily merged lower-source array after merge (there is no lower-source union); policy enforceAvailableModels is likewise copied exactly. Lower settings therefore cannot widen model enforcement.

The policy layer is itself selected rather than universally merged. A validated policy helper wins when present; otherwise the first non-empty remote → MDM/HKLM/plist → managed-file tier is the ordinary admin object. parentSettingsBehavior:"first-wins" drops the filtered SDK-parent slice; it is not a generic first-key-wins merge mode. Security-specific consumers can still accumulate restrictions across all admin tiers.

Parsing is also source-sensitive:

  • an ordinary settings file with any remaining schema error contributes no settings, although permission/hook/MCP-list sanitizers can first remove bad individual entries with warnings;
  • managed settings validate per field, preserving unrelated valid policy and applying explicit fail-closed recovery to fields such as allowedMcpServers, allowManagedMcpServersOnly, availableModels, enforceAvailableModels, and forceLoginOrgUUID; and
  • every disk settings file is bounded to 2 MiB.

The complete load, watcher, ConfigChange, and atomic-write path is documented in Load, validate, and merge pipeline.

Known settings and policy groups

GroupSetting or surface examplesRuntime implicationPrimary owner
Retention/session cleanupcleanupPeriodDaysBounds how long local transcript/project state is retained.Session resume and transcripts
Hooks and status linedisableAllHooks, hooks, statusLine, subagentStatusLineControls lifecycle hooks plus two separate command-derived UI protocols.Status line runtime and command protocol
Remote and agent policydisableRemoteControl, disableAgentViewManaged policy can disable Remote Control and agent UI paths.Remote control and teleport
Skill/slash safetydisableSkillShellExecutionReplaces or prevents shell execution in skills/custom slash commands.Slash commands and automation
Authentication helpersapiKeyHelper, proxyAuthHelper, enterpriseGatewayPoints to credential/proxy helper mechanisms.Models, providers, and auth
MCP and pluginsmcpServers, disableClaudeAiConnectors, enabledPlugins, pluginConfigs, extraKnownMarketplaces, plugin-provided hooks/output styles/MCP/LSP serversAdds external capability providers; enablement, user options, installation, and marketplace state remain separate layers.Plugin lifecycle and configuration
Tools and permissionsallowedTools, disallowedTools, permission mode settings, denyRead-style exclusionsShapes model-visible tools and approval/deny behavior.Tool inventory and schemas
Prompt/contextsystem prompt, append prompt, output styles, memory/context exclusionsShapes model-visible context and prompt assembly.Prompt, context, and memory
Integrations--ide, autoConnectIde, --chrome, claudeInChromeDefaultEnabled, --fileAdds IDE/LSP, browser, and file-resource integration surfaces.Settings, policy, and integrations
Worktree isolationworktree.baseRef, sparsePaths, symlinkDirectories, bgIsolationSelects base ancestry, sparse checkout, explicit shared directories, and background edit isolation.Worktree isolation and handoffs
Sandbox/runtime behaviorsandbox mode, ignore-file behavior, tool-specific safety switchesConstrains process/file/network access after permission approval.Sandbox and isolation
Accessibility/UIaxScreenReader, wheelScrollAccelerationEnabled, vimInsertModeRemapsSelects accessible rendering and terminal input behavior.Accessibility and screen-reader mode
Permission defaults/auto modepermissions.defaultMode, autoMode.classifyAllShellmanual aliases historical default; auto mode can classify every shell command.Built-in tools and permissions
WorkflowsenableWorkflows, disableWorkflows, workflowKeywordTriggerEnabled, global workflowSizeGuidelineControls feature availability, ultracode keyword opt-in, and advisory workflow size.Dynamic workflows
Agent TeamsteammateModeCaptured once after team enablement; selects the in-process or terminal-pane backend. It does not enable Agent Teams by itself.Agent Teams
Team onboardingorganization policy allow_team_onboardingEnables the user-only recent-session analysis workflow; hosted sharing remains separately gated.Team onboarding and share flows
MemoryautoMemoryDirectorySets the auto-memory directory; project settings are ignored for this key.Prompt, context, and memory
Model/version policyavailableModels, enforceAvailableModels, requiredMinimumVersion, requiredMaximumVersionRestricts models/default resolution and enforces supported CLI versions.Models, providers, and auth
Sideload/process policydisableSideloadFlags, processWrapperBlocks inline plugin/agent/MCP flags or routes background self-spawns through a corporate launcher.Settings, policy, and integrations
Credential isolationsandbox.credentials.files, sandbox.credentials.envVars, allowPlaintextInjectDenies credential-file reads or masks/removes secret env vars in sandboxed commands.Sandbox and isolation

Status-line schemas

The main status line accepts:

FieldConstraintEffect
statusLine.typeLiteral "command"Selects the command adapter.
statusLine.commandStringReceives the main session-state JSON object on stdin.
statusLine.paddingOptional numberHorizontal TUI padding.
statusLine.refreshIntervalOptional number, minimum 1Adds a periodic refresh every $N$ seconds.
statusLine.hideVimModeIndicatorOptional booleanHides the built-in Vim indicator when the script renders vim.mode.

subagentStatusLine is a separate object with only type: "command" and command. Its command receives a task-array JSON object and must emit one {id, content} JSON object per stdout line. It does not inherit the main line’s plain-text protocol, padding, interval, or Vim option.

The focused status-line page owns payload fields, refresh/cancellation, shell/environment/cwd behavior, stdout normalization, trust/policy, and rendering.

Settings versus flags versus env vars

SurfaceGood forReference
Settings filesPersisted user/project/local policy and integration configuration.This page.
Root CLI flagsPer-invocation mode, tool, prompt, session, model, and integration overrides.Command-line reference
Environment variablesCredentials, provider selection, debug/telemetry gates, feature kill switches, remote tokens.Environment variables reference
Managed policyOrganization/admin constraints that can disable high-risk features.Settings, policy, and integrations

Complete schema extraction boundary

The complete settings validator is present in the bundle, but it is embedded as minified schema construction rather than an exported JSON Schema document. The high-signal ordinary path is parseSettingsFileUncached()hGe()r3().safeParse; the managed path wraps the same field shapes through mSi() so policy can recover per key.

LayerWhat is source-confirmedDocumentation status
Embedded validatorr3().safeParse validates ordinary settings after parsing and targeted sanitization; mSi() owns managed recovery.Anchored here; not expanded into a full generated JSON Schema.
Project/user/local settings.claude/settings.json, .claude/settings.local.json, ~/.claude/settings.jsonCovered as roots and loaders.
Managed/policy settingsdisableRemoteControl, disableAgentView, disableAllHooks, disableSkillShellExecution, allow_team_onboarding, marketplace allow/block listsCovered as policy groups; exact organization policy envelopes may vary.
Plugin lifecycle/configurationenabledPlugins, pluginConfigs, extraKnownMarketplaces, strictKnownMarketplaces, blockedMarketplacesCovered here, in Plugin lifecycle and configuration, and in MCP, plugins, and hooks.
Sandbox-sensitive settingsdangerouslyDisableSandbox schema text and sandbox policy pagesCovered as policy boundary, not as a guarantee that a command bypasses sandboxing.

The remaining “complete schema” gap is mechanical extraction: a future script could reconstruct or evaluate the embedded schema into a stable JSON/Markdown reference. Until then, this page should stay a known-settings reference with exact anchors for high-signal keys, rather than hand-copying every minified schema branch.

Source restrictions for sensitive settings

Not every valid key is honored from every source. autoMemoryDirectory is ignored in checked-in project settings. processWrapper is read from managed, flag/SDK, or user settings (and can be overridden by CLAUDE_CODE_PROCESS_WRAPPER), while project/local values are ignored. sandbox.credentials.allowPlaintextInject and sandbox.network.tlsTerminate are likewise restricted to user, managed/policy, or --settings sources. autoMode classifier rules reject project/local sources because repositories control those files. pluginConfigs follows user → flag/SDK → policy and ignores both project and local settings so repository configuration cannot supply plugin options/secrets. Sensitive plugin values are stored outside settings JSON and merged last.

enabledPlugins is different: it uses the ordinary scoped cascade, so project/local values can enable or disable a plugin unless a higher source wins. extraKnownMarketplaces can also be declared by editable scopes, but project/local declarations do not enter the usable marketplace set before workspace trust. See Plugin lifecycle and configuration for the complete distinction.

statusLine normally uses the merged effective setting after workspace trust. Safe mode, managed allowManagedHooksOnly, or a non-policy merged disableAllHooks state reduces it to the managed-policy value; managed disableAllHooks: true suppresses execution. This is a source-selection boundary, not a per-refresh permission prompt.

De-duplication rule

When adding new settings detail, prefer this ownership split:

  1. Put the key name, scope, and owning behavior here.
  2. Put call paths and runtime effects in the owning implementation page.
  3. Put env-var-only toggles in Environment variables reference, not here.
  4. Put plugin enablement, plugin-owned defaults, userConfig, and sensitive option storage in Plugin lifecycle and configuration, not in the general key list.

Created and maintained by Yingting Huang.