Type object
File match **/.claude/settings.json
Schema URL https://catalog.lintel.tools/schemas/schemastore/claude-code-settings/latest.json
Source https://www.schemastore.org/claude-code-settings.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Configuration settings for Claude Code. Learn more: https://code.claude.com/docs/en/settings

Properties

$schema string

JSON Schema reference for Claude Code settings

apiKeyHelper string

Path to a script that outputs authentication values

Examples: "/bin/generate_temp_api_key.sh"
minLength=1
autoMemoryEnabled boolean

Enable automatic memory saves that capture useful context to .claude/memory/. Also configurable via CLAUDE_CODE_DISABLE_AUTO_MEMORY environment variable (set to 1 to disable, 0 to enable). See https://code.claude.com/docs/en/memory#auto-memory

Default: true
autoUpdatesChannel string

Release channel to follow for updates. Use "stable" for a version that is typically about one week old and skips versions with major regressions, or "latest" (default) for the most recent release. Set DISABLE_AUTOUPDATER=1 to disable background auto-updates, or DISABLE_UPDATES=1 (added in v2.1.118) to block all update paths including manual claude update.

Default: "latest"
Values: "stable" "latest"
awsCredentialExport string

Path to a script that exports AWS credentials

Examples: "/bin/generate_aws_grant.sh"
minLength=1
awsAuthRefresh string

Path to a script that refreshes AWS authentication

Examples: "aws sso login --profile myprofile"
minLength=1
claudeMdExcludes string[]

Glob patterns for CLAUDE.md files to exclude from loading. Useful in monorepos to skip irrelevant instructions from other teams. Patterns match against absolute file paths. Arrays merge across settings layers. Managed policy CLAUDE.md files cannot be excluded. See https://code.claude.com/docs/en/memory#exclude-specific-claude-md-files

Examples: ["**/monorepo/CLAUDE.md","/home/user/monorepo/other-team/.claude/rules/**"]
cleanupPeriodDays integer

Number of days to retain sessions, orphaned subagent worktrees, tasks, shell snapshots, and backups. Minimum is 1; setting 0 is rejected with a validation error. See https://code.claude.com/docs/en/settings

Default: 30
Examples: 20, 30, 60
min=1
env object

Environment variables to set for Claude Code sessions. Many environment variables provide settings dimensions not available as dedicated settings.json properties (e.g., thinking tokens, prompt caching, bash timeouts, shell configuration). See https://code.claude.com/docs/en/settings#environment-variables for the full list. UNDOCUMENTED: CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS (plugin marketplace git timeout in ms, default 120000, see https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2151). UNDOCUMENTED: ENABLE_CLAUDEAI_MCP_SERVERS (set to false to opt out of claude.ai MCP servers, see https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2163).

Default:
{}
Examples: {"ANTHROPIC_MODEL":"claude-opus-4-1","ANTHROPIC_SMALL_FAST_MODEL":"claude-3-5-haiku-latest"}
attribution object

Customize attribution for git commits and pull requests. See https://code.claude.com/docs/en/settings#attribution-settings

2 nested properties
commit string

Attribution for git commits, including any trailers. Empty string hides commit attribution

pr string

Attribution for pull request descriptions. Empty string hides pull request attribution

includeGitInstructions boolean

Include built-in git commit and PR workflow instructions in Claude's system prompt. Also configurable via CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS environment variable (set to 1 to disable). See https://code.claude.com/docs/en/settings#available-settings

Default: true
includeCoAuthoredBy boolean

DEPRECATED. Use 'attribution' instead. Whether to include the co-authored-by Claude byline in git commits and pull requests (default: true)

Default: true
plansDirectory string

Customize where plan files are stored. Path is relative to project root (default: ~/.claude/plans)

Default: "~/.claude/plans"
Examples: "./plans"
respectGitignore boolean

Control whether the @ file picker respects .gitignore patterns. When true (default), files matching .gitignore patterns are excluded from suggestions

Default: true
permissions object
Examples: {"allow":["Bash(git add:*)"],"ask":["Bash(gh pr create:*)","Bash(git commit:*)"],"deny":["Read(*.env)","Bash(rm:*)","Bash(curl:*)"],"defaultMode":"default"}
7 nested properties

List of permission rules for allowed operations

uniqueItems=true

List of permission rules for denied operations

uniqueItems=true

List of permission rules that should always prompt for confirmation

uniqueItems=true
defaultMode string

Default permission mode. "default": prompts on first use. "acceptEdits": auto-accepts file edits. "plan": read-only, no modifications. UNDOCUMENTED. "delegate": coordination-only for agent team leads (agent teams are experimental; enable via CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS). "dontAsk": auto-denies unless pre-approved via permissions. "bypassPermissions": skips all prompts (use only in isolated environments). "auto": auto-approves tool calls with background safety checks that verify actions align with your request. See https://code.claude.com/docs/en/permissions

Values: "acceptEdits" "bypassPermissions" "default" "delegate" "dontAsk" "plan" "auto"
disableBypassPermissionsMode string

Disable the ability to bypass permission prompts

Values: "disable"
disableAutoMode string

Set to "disable" to prevent auto mode from being activated. Removes auto from the Shift+Tab cycle and rejects --permission-mode auto at startup. Most useful in managed settings where users cannot override it. See https://code.claude.com/docs/en/permissions

Values: "disable"
additionalDirectories string[]

Additional directories to include in the permission scope

Examples: ["//Users/alice/Documents","~/projects"]
uniqueItems=true
language string

Preferred language for Claude's responses

Examples: "japanese", "spanish", "french"
model string

Override the default model used by Claude Code. For finer control, use environment variables: ANTHROPIC_MODEL (runtime override), ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL (per-class pinning), CLAUDE_CODE_SUBAGENT_MODEL (subagent model). See https://code.claude.com/docs/en/model-config

availableModels string[]

Restrict which models users can select. When defined at multiple settings levels (user, project, etc.), arrays are merged and deduplicated. See https://code.claude.com/docs/en/model-config#restrict-model-selection

Examples: ["sonnet","haiku"]
modelOverrides Record<string, string>

Map Anthropic model IDs to provider-specific model IDs such as Bedrock inference profile ARNs, Vertex AI version names, or Foundry deployment names. Each model picker entry uses its mapped value when calling the provider API. Unknown keys are ignored. See https://code.claude.com/docs/en/model-config#override-model-ids-per-version

Examples: {"claude-opus-4-6":"arn:aws:bedrock:us-east-2:123456789012:application-inference-profile/opus-prod"}
effortLevel string

Persist adaptive reasoning effort across sessions. Effort is supported on Opus 4.7, Opus 4.6, and Sonnet 4.6. Opus 4.7 supports low/medium/high/xhigh/max (xhigh sits between high and max, added in v2.1.111); Opus 4.6 and Sonnet 4.6 support low/medium/high/max (xhigh falls back to high). Defaults: Opus 4.6 and Sonnet 4.6 default to high on all plans (Pro/Max raised from medium to high in v2.1.117); Opus 4.7 defaults to xhigh on Max plan. The max value is session-only unless set via CLAUDE_CODE_EFFORT_LEVEL. Use /effort auto to reset to model default. Also configurable via CLAUDE_CODE_EFFORT_LEVEL environment variable. See https://code.claude.com/docs/en/model-config#adjust-effort-level

Values: "low" "medium" "high" "xhigh" "max"
fastMode boolean

Enable fast mode for Opus 4.6 (research preview). Fast mode uses the same model with 2.5x faster output at higher per-token cost. Requires extra usage enabled. Alternatively, toggle with /fast command. See https://code.claude.com/docs/en/fast-mode

Default: false
fastModePerSessionOptIn boolean

Require per-session opt-in for fast mode. When true, fast mode does not persist across sessions and users must enable it with /fast each session. Useful for controlling costs. See https://code.claude.com/docs/en/fast-mode

Default: false
feedbackSurveyRate number

Probability (0–1) that the session quality survey appears when eligible. A value of 0.05 means 5% of eligible sessions. See https://code.claude.com/docs/en/settings

Examples: 0.05
min=0max=1
enableAllProjectMcpServers boolean

Whether to automatically approve all MCP servers in the project. See https://code.claude.com/docs/en/mcp

Examples: true
enabledMcpjsonServers string[]

List of approved MCP servers from .mcp.json. See https://code.claude.com/docs/en/mcp

Examples: ["memory","github"]
disabledMcpjsonServers string[]

List of rejected MCP servers from .mcp.json. See https://code.claude.com/docs/en/mcp

Examples: ["filesystem"]
allowedMcpServers object | object | object[]

Enterprise allowlist of MCP servers that can be used. Applies to all scopes including enterprise servers from managed-mcp.json. If undefined, all servers are allowed. If empty array, no servers are allowed. Denylist takes precedence - if a server is on both lists, it is denied. See https://code.claude.com/docs/en/mcp#restriction-options

deniedMcpServers object | object | object[]

Enterprise denylist of MCP servers that are explicitly blocked. If a server is on the denylist, it will be blocked across all scopes including enterprise. Denylist takes precedence over allowlist - if a server is on both lists, it is denied. See https://code.claude.com/docs/en/mcp#restriction-options

httpHookAllowedEnvVars string[]

Allowlist of environment variable names HTTP hooks may interpolate into headers. When set, each hook's effective allowedEnvVars is the intersection with this list. Undefined = no restriction. Arrays merge across settings sources. See https://code.claude.com/docs/en/settings#hook-configuration

Examples: ["MY_TOKEN","HOOK_SECRET"]
hooks object

Custom commands to run before/after tool executions. See https://code.claude.com/docs/en/hooks

Examples: {"PostToolUse":[{"matcher":"Edit|Write","hooks":[{"type":"command","command":"prettier --write","timeout":5}]}]}
25 nested properties
PreToolUse hookMatcher[]

Hooks that run before tool calls

PostToolUse hookMatcher[]

Hooks that run after tool completion

PostToolUseFailure hookMatcher[]

Hooks that run after a tool fails

PermissionRequest hookMatcher[]

Hooks that run when a permission dialog appears

Notification hookMatcher[]

Hooks that trigger on notifications

UserPromptSubmit hookMatcher[]

Hooks that run when a user submits a prompt

Hooks that run when agents finish responding. Does not run on user interrupt

StopFailure hookMatcher[]

Hooks that run when a turn ends due to an API error (e.g., rate_limit, authentication_failed, billing_error, invalid_request, server_error, max_output_tokens, unknown). Matcher can scope to specific error types. Hook output and exit code are ignored. See https://code.claude.com/docs/en/hooks

SubagentStart hookMatcher[]

Hooks that run when a subagent is spawned

SubagentStop hookMatcher[]

Hooks that run when subagents finish responding

PreCompact hookMatcher[]

Hooks that run before the context is compacted

PostCompact hookMatcher[]

Hooks that run after the context is compacted. See https://code.claude.com/docs/en/hooks

Elicitation hookMatcher[]

Hooks that run when an MCP server requests user input during a tool call. See https://code.claude.com/docs/en/hooks

ElicitationResult hookMatcher[]

Hooks that run after a user responds to an MCP elicitation, before the response is sent back to the server. See https://code.claude.com/docs/en/hooks

TeammateIdle hookMatcher[]

Hooks that run when an agent team teammate is about to go idle. Exit code 2 sends feedback and keeps the teammate working. Does not support matchers. Agent teams are experimental. See https://code.claude.com/docs/en/hooks#teammateidle

TaskCompleted hookMatcher[]

Hooks that run when a task is being marked as completed. Exit code 2 prevents completion and sends feedback. Does not support matchers. See https://code.claude.com/docs/en/hooks#taskcompleted

UNDOCUMENTED. Hooks that run during repository initialization (--init, --init-only) or maintenance (--maintenance)

InstructionsLoaded hookMatcher[]

Hooks that run when a CLAUDE.md or .claude/rules/*.md file is loaded into context. Fires at session start and when files are lazily loaded (e.g., nested traversal, path glob match). No decision control; used for audit logging and observability. Does not support matchers. See https://code.claude.com/docs/en/hooks#instructionsloaded

CwdChanged hookMatcher[]

Hooks that run when the working directory changes. Provides cwd (new directory) and previous_cwd. Matchers are ignored; fires on every directory change. See https://code.claude.com/docs/en/hooks#cwdchanged

FileChanged hookMatcher[]

Hooks that run when a watched file is created, modified, or deleted. Supports filename matchers. Provides file_path and file_event_type (created, modified, deleted). See https://code.claude.com/docs/en/hooks#filechanged

ConfigChange hookMatcher[]

Hooks that run when settings, managed settings, or skill files change during a session. Supports matchers: user_settings, project_settings, local_settings, policy_settings, skills. Command handlers only. Exit code 2 blocks the change (except policy_settings which is audit-only). See https://code.claude.com/docs/en/hooks#configchange

WorktreeCreate hookMatcher[]

Hooks that run when a worktree is created via --worktree or isolation: "worktree" in subagents. Command handlers only, no matchers. Hook must print absolute path to created worktree on stdout; non-zero exit fails creation. See https://code.claude.com/docs/en/hooks#worktreecreate

WorktreeRemove hookMatcher[]

Hooks that run when a worktree is being removed at session exit or when a subagent finishes. Command handlers only, no matchers. Used for cleanup tasks; cannot block removal. See https://code.claude.com/docs/en/hooks#worktreeremove

SessionStart hookMatcher[]

Hooks that run when a new session starts

SessionEnd hookMatcher[]

Hooks that run when a session ends

disableAllHooks boolean

Disable all hooks and statusLine execution. When true in managed settings, user and project-level disableAllHooks cannot override it. See https://code.claude.com/docs/en/hooks#disable-or-remove-hooks

allowedChannelPlugins string[]

(Managed settings only) Allowlist of plugin IDs whose MCP servers may advertise channel notifications when channelsEnabled is true. When set, only the listed plugins can push inbound messages. See https://code.claude.com/docs/en/mcp

allowedHttpHookUrls string[]

Allowlist of URL patterns that HTTP hooks may target. Supports * as a wildcard. When set, hooks with non-matching URLs are blocked. Undefined = no restriction, empty array = block all HTTP hooks. Arrays merge across settings sources. See https://code.claude.com/docs/en/settings#hook-configuration

Examples: ["https://hooks.example.com/*","http://localhost:*"]
allowManagedHooksOnly boolean

(Managed settings only) Prevent loading of user, project, and plugin hooks. Only allows managed hooks and SDK hooks. See https://code.claude.com/docs/en/settings#hook-configuration

allowManagedPermissionRulesOnly boolean

(Managed settings only) Prevent user and project settings from defining allow, ask, or deny permission rules. Only rules in managed settings apply. See https://code.claude.com/docs/en/settings#permission-settings

statusLine object

Custom status line display configuration. See https://code.claude.com/docs/en/statusline

Examples: {"type":"command","command":"~/.claude/statusline.sh"}
4 nested properties
type string required

The type of status line handler; must be set to "command" to run a custom shell script that receives JSON session data via stdin.

Constant: "command"
command string required

A shell command or path to a script that displays session information (context usage, costs, git status, etc.) by reading JSON data from stdin and writing output to stdout. See https://code.claude.com/docs/en/statusline

padding number

Optional number of extra horizontal spacing characters added to the status line content; defaults to 0.

refreshInterval integer

Re-run the status line command every N seconds in addition to event-driven updates. Leave unset to run only on events. Useful for time-based data like clocks, or when background subagents change git state while the main session is idle. See https://code.claude.com/docs/en/statusline

min=1
fileSuggestion object

Configure a custom script for @ file autocomplete. See https://code.claude.com/docs/en/settings#file-suggestion-settings

Examples: {"type":"command","command":"~/.claude/file-suggestion.sh"}
2 nested properties
type string required

The type of file suggestion handler; must be set to "command" to execute a custom shell script that generates file suggestions for the @ file picker.

Constant: "command"
command string required

Shell command to execute for file suggestions

enabledPlugins Record<string, string[] | boolean>

Enabled plugins using plugin-id@marketplace-id format. Example: { "formatter@anthropic-tools": true }. See https://code.claude.com/docs/en/plugins

extraKnownMarketplaces Record<string, object>

Additional marketplaces to make available for this repository. Typically used in repository .claude/settings.json to ensure team members have required plugin sources. See https://code.claude.com/docs/en/plugin-marketplaces

strictKnownMarketplaces object | object | object | object | object | object | object | object[]

(Managed settings only) Allowlist of plugin marketplaces users can add. Undefined = no restrictions, empty array = lockdown. Uses exact matching for source specifications. See https://code.claude.com/docs/en/settings#strictknownmarketplaces

Examples: [{"source":"github","repo":"acme-corp/approved-plugins"},{"source":"npm","package":"@acme-corp/compliance-plugins"}]
skippedMarketplaces string[]

List of marketplace names the user has chosen not to install when prompted

skippedPlugins string[]

List of plugin IDs (plugin@marketplace format) the user has chosen not to install when prompted

forceLoginMethod string

Force a specific login method: "claudeai" for Claude Pro/Max, "console" for Console billing

Values: "claudeai" "console"
Examples: "claudeai"
forceLoginOrgUUID string

Organization UUID to use for OAuth login

Examples: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
minLength=1
otelHeadersHelper string

Path to a script that outputs OpenTelemetry headers

minLength=1
outputStyle string

Controls the output style for assistant responses. Built-in styles: default, Explanatory, Learning. Custom styles can be added in ~/.claude/output-styles/ or .claude/output-styles/. See https://code.claude.com/docs/en/output-styles

Examples: "default", "Explanatory", "Learning"
minLength=1
skipWebFetchPreflight boolean

Skip the WebFetch blocklist check for enterprise environments with restrictive security policies

sandbox object

Sandbox execution configuration. See https://code.claude.com/docs/en/sandboxing

10 nested properties
network object

Configures network isolation settings for the sandboxed bash environment, including domain restrictions, Unix socket access, and custom proxy configuration.

9 nested properties
allowUnixSockets string[]

Allow Unix domain sockets for local IPC (SSH agent, Docker, etc.). Provide an array of specific paths. Defaults to blocking if not specified

allowLocalBinding boolean

Allow binding to local network addresses (e.g., localhost ports). Defaults to false if not specified

httpProxyPort integer

HTTP proxy port to use for network filtering. If not specified, a proxy server will be started automatically

min=1max=65535
socksProxyPort integer

SOCKS proxy port to use for network filtering. If not specified, a proxy server will be started automatically

min=1max=65535
allowAllUnixSockets boolean

Allow all Unix domain socket connections. If true, this overrides allowUnixSockets

allowedDomains string[]

Allowlist of network domains for sandboxed commands. Supports wildcard patterns like *.example.com

deniedDomains string[]

Blocklist of network domains for sandboxed commands. Blocks specific domains even when a broader allowedDomains wildcard would otherwise permit them. Supports wildcard patterns like *.example.com. See https://code.claude.com/docs/en/sandboxing

allowManagedDomainsOnly boolean

(Managed settings only) Only allowedDomains and WebFetch(domain:...) allow rules from managed settings are respected. User, project, local, and flag settings domains are ignored. Denied domains are still respected from all sources. Non-allowed domains are automatically blocked without user prompts.

allowMachLookup string[]

macOS only. Additional XPC/Mach service names the sandbox may look up. Supports a single trailing * for prefix matching. Needed for tools that communicate via XPC such as the iOS Simulator or Playwright. See https://code.claude.com/docs/en/settings

Examples: ["com.apple.coresimulator.*"]
ignoreViolations Record<string, string[]>

Map of command patterns to filesystem paths to ignore violations for. Use "*" to match all commands

excludedCommands string[]

Commands that should never run in the sandbox (e.g., ["git", "docker"])

autoAllowBashIfSandboxed boolean

Automatically allow bash commands without prompting when they run in the sandbox. Only applies to commands that will run sandboxed.

Default: true
enableWeakerNetworkIsolation boolean

macOS only. Allow access to the system TLS trust service (com.apple.trustd.agent) in the sandbox. Required for Go-based tools like gh, gcloud, and terraform to verify TLS certificates when using httpProxyPort with a MITM proxy and custom CA. Reduces security by opening a potential data exfiltration path. Default: false. See https://code.claude.com/docs/en/settings#sandbox-settings

Default: false
enableWeakerNestedSandbox boolean

Enable weaker sandbox mode for unprivileged docker environments where --proc mounting fails. This significantly reduces the strength of the sandbox and should only be used when this risk is acceptable.Default: false (secure).

allowUnsandboxedCommands boolean

Allow commands to run outside the sandbox via the dangerouslyDisableSandbox parameter. When false, the dangerouslyDisableSandbox parameter is completely ignored and all commands must run sandboxed. Default: true.

enabled boolean

Enable sandboxed bash

filesystem object

Filesystem access control for sandboxed commands. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation

5 nested properties
allowWrite string[]

Paths where subprocesses are allowed to write. Supports prefixes: // (absolute), ~/ (home directory), / (relative to settings file), ./ or no prefix (relative path)

denyWrite string[]

Paths where subprocesses are explicitly denied write access. Takes precedence over allowWrite

denyRead string[]

Paths where subprocesses are explicitly denied read access

allowRead string[]

Paths to re-allow reading within denyRead regions. Takes precedence over denyRead for matching paths

allowManagedReadPathsOnly boolean

When true (managed settings only), only allowRead paths from managed settings are used

ripgrep object

Custom ripgrep configuration for Claude Code's bundled ripgrep support. Overrides the bundled binary and arguments.

2 nested properties
command string required

Path to the ripgrep binary to use

minLength=1
args string[]

Additional arguments to pass to the ripgrep binary

spinnerVerbs object

Customize the verbs shown in spinner progress messages

2 nested properties
verbs string[] required

Custom verbs used in spinner progress text

minItems=1
mode string

How to combine custom verbs with default spinner verbs: 'append' adds custom verbs to the default list, 'replace' uses only custom verbs

Values: "append" "replace"
spinnerTipsEnabled boolean

Show tips in the spinner while Claude is working. Set to false to disable tips (default: true)

Default: true
spinnerTipsOverride object

Customize the tips displayed in the spinner while Claude is working. See https://code.claude.com/docs/en/settings#available-settings

2 nested properties
tips string[] required

Custom tip strings to display in the spinner

minItems=1
excludeDefault boolean

If true, only show custom tips. If false or absent, custom tips merge with built-in tips

Default: false
terminalProgressBarEnabled boolean

Enable the terminal progress bar that shows progress in supported terminals like Windows Terminal and iTerm2 (default: true)

Default: true
showTurnDuration boolean

Show turn duration messages after responses (e.g., "Cooked for 1m 6s"). Set to false to hide these messages (default: true)

Default: true
prefersReducedMotion boolean

Reduce or disable UI animations (spinners, shimmer, flash effects) for accessibility

Default: false
prUrlTemplate string

URL template for the PR badge shown in the footer and in tool-result summaries. Substitutes placeholders {host}, {owner}, {repo}, {number}, {url} from the gh-reported PR URL. Use this to point PR links at an internal code-review tool instead of github.com. Does not affect #123 autolinks in Claude's prose. See https://code.claude.com/docs/en/settings

Examples: "https://reviews.example.com/{owner}/{repo}/pull/{number}"
alwaysThinkingEnabled boolean

Enable extended thinking by default for all sessions. Typically configured via the /config command rather than editing directly. See https://code.claude.com/docs/en/common-workflows#use-extended-thinking-thinking-mode

companyAnnouncements string[]

Company announcements to display at startup (one will be randomly selected if multiple are provided)

teammateMode string

How agent team teammates display: "auto" picks split panes in tmux or iTerm2, in-process otherwise. Agent teams are experimental and disabled by default. Enable them by adding CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS to your settings.json or environment. See https://code.claude.com/docs/en/agent-teams

Default: "auto"
Values: "auto" "in-process" "tmux"
worktree object

Configuration for --worktree sessions. See https://code.claude.com/docs/en/settings

1 nested properties
sparsePaths string[]

Directories to check out in each worktree via git sparse-checkout (cone mode). Only the listed paths are written to disk, which is faster in large monorepos.

Examples: ["packages/my-app","shared/utils"]
pluginTrustMessage string

(Managed settings only) Custom message appended to the plugin trust warning shown before installation. Use to provide organization-specific context about approved plugins. See https://code.claude.com/docs/en/settings#plugin-settings

minLength=1
pluginConfigs Record<string, object>

Per-plugin configuration including MCP server user configs and plugin options, keyed by plugin ID (plugin@marketplace format). See https://code.claude.com/docs/en/plugins

allowManagedMcpServersOnly boolean

(Managed settings only) Only allowedMcpServers from managed settings are respected. deniedMcpServers still merges from all sources. Users can still add their own MCP servers, but only the admin-defined allowlist applies.

blockedMarketplaces object | object | object | object | object | object | object | object[]

(Managed settings only) Blocklist of marketplace sources. These exact sources are blocked from being added as marketplaces. The check happens before downloading, so blocked sources never touch the filesystem.

agent string

Name of an agent (built-in or custom) to use for the main thread. Applies the agent's system prompt, tool restrictions, and model. See https://code.claude.com/docs/en/sub-agents

minLength=1
autoMemoryDirectory string

Custom directory path for auto-memory storage. Supports ~/ prefix for home-directory expansion. Ignored if set in checked-in project settings (.claude/settings.json) for security. Defaults to ~/.claude/projects//memory/ when unset. See https://code.claude.com/docs/en/memory

minLength=1
autoMode object

Customization for the auto mode classifier prompt. Typically configured in managed settings to tune the allow/deny rules used when permissions.defaultMode is "auto". By default, allow, soft_deny, and environment REPLACE the corresponding built-in classifier section entirely. Include the literal string "$defaults" as an array entry (added in v2.1.118) to splice the built-in defaults in at that position alongside your custom rules. See https://code.claude.com/docs/en/permissions

3 nested properties
allow string[]

Rules for the auto mode classifier allow section. Replaces the built-in allow rules entirely unless the literal string "$defaults" is included as an entry, which splices the built-in defaults in at that position.

soft_deny string[]

Rules for the auto mode classifier soft-deny section. Replaces the built-in soft-deny rules entirely unless the literal string "$defaults" is included as an entry, which splices the built-in defaults in at that position.

environment string[]

Entries for the auto mode classifier environment section. Replaces the built-in environment context entirely unless the literal string "$defaults" is included as an entry, which splices the built-in defaults in at that position.

channelsEnabled boolean

(Teams/Enterprise) Opt-in for channel notifications — MCP servers with the claude/channel capability pushing inbound messages. Default off. When true, users can select servers via --channels. See https://code.claude.com/docs/en/mcp

Default: false
defaultShell string

Default shell for input-box ! commands. Default: bash. Using "powershell" routes ! commands through PowerShell on Windows and requires CLAUDE_CODE_USE_POWERSHELL_TOOL=1 with pwsh on PATH. See https://code.claude.com/docs/en/settings

Values: "bash" "powershell"
disableDeepLinkRegistration string

Set to "disable" to prevent Claude Code from registering the claude:// deep-link protocol handler on startup. Most useful in managed settings where users cannot override it. See https://code.claude.com/docs/en/settings

Values: "disable"
disableSkillShellExecution boolean

Disable inline shell execution for !`...` and ```! blocks in skills and custom slash commands from user, project, plugin, or additional-directory sources. Commands are replaced with [shell command execution disabled by policy] instead of being run. Bundled and managed skills are not affected. Most useful in managed settings where users cannot override it. See https://code.claude.com/docs/en/settings

forceRemoteSettingsRefresh boolean

(Managed settings only) Block CLI startup until remote managed settings are freshly fetched from the server. If the fetch fails, the CLI exits (fail-closed) rather than continuing with cached settings. When not set, startup continues without waiting for remote settings. See https://code.claude.com/docs/en/server-managed-settings

minimumVersion string

Minimum Claude Code version to stay on. Prevents downgrades when switching release channels. See https://code.claude.com/docs/en/settings

Examples: "2.1.0"
minLength=1
showClearContextOnPlanAccept boolean

When true, the plan-approval dialog offers a "clear context" option. Defaults to false.

Default: false
showThinkingSummaries boolean

Show thinking summaries in the transcript view (Ctrl+O). Thinking summaries are not generated by default in interactive sessions; set to true to restore. See https://code.claude.com/docs/en/settings

Default: false
skipDangerousModePermissionPrompt boolean

Whether the user has accepted the bypass permissions mode dialog. Typically managed by the CLI rather than set by hand.

strictPluginOnlyCustomization boolean | string[]

(Managed settings) Block non-plugin customization sources for the listed surfaces. Array form locks specific surfaces (e.g., ["skills", "hooks"]); true locks all four; false is an explicit no-op. See https://code.claude.com/docs/en/plugins-reference

tui string

TUI rendering mode. Use "fullscreen" for the flicker-free alt-screen renderer with virtualized scrollback; "default" for the classic main-screen renderer. Corresponds to the /tui command. See https://code.claude.com/docs/en/settings

Values: "fullscreen" "default"
viewMode string

Transcript view mode. "default" shows standard interactive view; "verbose" shows expanded tool details; "focus" shows prompt, one-line tool summaries, and final response only (Ctrl+O toggle). See https://code.claude.com/docs/en/settings

Values: "default" "verbose" "focus"
useAutoModeDuringPlan boolean

When true, apply the auto mode classifier during plan mode to auto-approve safe read-only tool calls while planning. Has no effect unless permissions.defaultMode allows auto. See https://code.claude.com/docs/en/permissions

voiceEnabled boolean

Enable push-to-talk voice dictation. Typically written automatically when /voice is used. Requires a Claude.ai account. See https://code.claude.com/docs/en/settings

wslInheritsWindowsSettings boolean

(Windows managed settings only) When true, Claude Code on WSL reads managed settings from the Windows policy chain in addition to /etc/claude-code, with Windows sources taking priority. Only honored when set in the HKLM registry key or C:\Program Files\ClaudeCode\managed-settings.json, both of which require Windows admin to write. For HKCU policy to also apply on WSL, the flag must additionally be set in HKCU itself. Has no effect on native Windows. See https://code.claude.com/docs/en/settings

Definitions

permissionRule string

Tool permission rule. See https://code.claude.com/docs/en/settings#permission-rule-syntax See https://code.claude.com/docs/en/tools-reference for full list of tools available to Claude.

Examples:
  • "Bash"
  • "Bash(npm run build)"
  • "Bash(git commit *)"
  • "Bash(npm run *)"
  • "Bash(ls*)"
  • "Bash(git * main)"
  • "Edit"
  • "Edit(/src/**/*.ts)"
  • "Read(./.env)"
  • "Read(./secrets/**)"
  • "Read(//Users/alice/secrets/**)"
  • "Read(~/Documents/*.pdf)"
  • "Agent(Explore)"
  • "WebFetch"
  • "WebFetch(domain:example.com)"
  • "mcp__puppeteer"
  • "mcp__github__search_repositories"
hookCommand object | object | object | object | object
hookMatcher object

Hook matcher configuration with multiple hooks

hooks hookCommand[] required

Array of hooks to execute

matcher string

Optional pattern to match event contexts, case-sensitive. Behavior depends on event type. See https://code.claude.com/docs/en/hooks#matcher-patterns for event-specific details and examples