{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/claude-code-settings.json","$defs":{"permissionRule":{"type":"string","description":"Tool permission rule.\nSee https://code.claude.com/docs/en/settings#permission-rule-syntax\nSee https://code.claude.com/docs/en/tools-reference for full list of tools available to Claude.","pattern":"^((Agent|Artifact|Bash|Cd|Edit|EnterWorktree|ExitPlanMode|Glob|Grep|KillShell|LSP|Monitor|MultiEdit|NotebookEdit|PowerShell|Read|ShareOnboardingGuide|Skill|TaskCreate|TaskGet|TaskList|TaskOutput|TaskStop|TaskUpdate|TodoWrite|ToolSearch|WebFetch|WebSearch|Workflow|Write)(\\([^)]+\\))?|mcp__.*)$","examples":["Bash","Bash(npm run build)","Bash(git commit *)","Bash(npm run *)","Bash(ls*)","Bash(git * main)","Edit","Edit(/src/**/*.ts)","Read(*)","Skill(*)","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":{"anyOf":[{"type":"object","description":"Bash command hook","additionalProperties":false,"required":["type","command"],"properties":{"type":{"type":"string","description":"Hook type","const":"command"},"command":{"type":"string","description":"Shell command to execute","minLength":1},"timeout":{"type":"number","description":"Optional timeout in seconds (default: 600; lowered to 30 on UserPromptSubmit and 10 on MessageDisplay)","exclusiveMinimum":0},"async":{"type":"boolean","description":"Run this hook asynchronously without blocking Claude Code"},"asyncRewake":{"type":"boolean","description":"When true, the hook runs in the background and wakes the model when it exits with code 2. Implies async."},"shell":{"type":"string","enum":["bash","powershell"],"description":"Shell interpreter for the command. \"bash\" uses the login shell (bash/zsh/sh); \"powershell\" uses pwsh. Defaults to bash."},"if":{"type":"string","description":"Optional permission-rule-syntax filter (e.g., \"Bash(git *)\"). Evaluated only on tool-related events (PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionDenied); on other events a hook with `if` set never runs. See https://code.claude.com/docs/en/hooks-guide#filter-hooks-with-matchers"},"statusMessage":{"type":"string","description":"Custom spinner message displayed while the hook runs"},"args":{"type":"array","items":{"type":"string"},"description":"Argument list for exec form. When present, spawns the command directly without shell interpretation — each element is passed as-is, so path placeholders never need quoting. See https://code.claude.com/docs/en/hooks#command-hook-fields"}}},{"type":"object","description":"LLM prompt hook. See https://code.claude.com/docs/en/hooks#prompt-based-hooks","additionalProperties":false,"required":["type","prompt"],"properties":{"type":{"type":"string","description":"Hook type","const":"prompt"},"prompt":{"type":"string","description":"Prompt to evaluate with LLM. Use $ARGUMENTS placeholder for hook input JSON.","minLength":1},"model":{"type":"string","description":"Model to use for evaluation. Defaults to a fast model"},"timeout":{"type":"number","description":"Optional timeout in seconds (default: 30)","exclusiveMinimum":0},"if":{"type":"string","description":"Optional permission-rule-syntax filter. Evaluated only on tool-related events (PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionDenied); on other events a hook with `if` set never runs. See https://code.claude.com/docs/en/hooks-guide#filter-hooks-with-matchers"},"statusMessage":{"type":"string","description":"Custom spinner message displayed while the hook runs"},"continueOnBlock":{"type":"boolean","default":false,"description":"When the prompt returns ok: false, feed the reason back to Claude and continue the turn instead of stopping. Implemented as continue: true on the resulting decision: \"block\". See https://code.claude.com/docs/en/hooks#prompt-hook-configuration"}}},{"type":"object","description":"Agent hook with multi-turn tool access for verification. See https://code.claude.com/docs/en/hooks#agent-based-hooks","additionalProperties":false,"required":["type","prompt"],"properties":{"type":{"type":"string","description":"Hook type","const":"agent"},"prompt":{"type":"string","description":"Prompt describing what to verify. Use $ARGUMENTS placeholder for hook input JSON.","minLength":1},"model":{"type":"string","description":"Model to use for evaluation. Defaults to a fast model"},"timeout":{"type":"number","description":"Optional timeout in seconds (default: 60)","exclusiveMinimum":0},"if":{"type":"string","description":"Optional permission-rule-syntax filter. Evaluated only on tool-related events (PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionDenied); on other events a hook with `if` set never runs. See https://code.claude.com/docs/en/hooks-guide#filter-hooks-with-matchers"},"statusMessage":{"type":"string","description":"Custom spinner message displayed while the hook runs"}}},{"type":"object","description":"HTTP webhook hook. POST JSON to a URL and receive JSON response. See https://code.claude.com/docs/en/hooks#http-hook-fields","additionalProperties":false,"required":["type","url"],"properties":{"type":{"type":"string","description":"Hook type","const":"http"},"url":{"type":"string","description":"URL to POST hook input JSON to. Endpoint must accept POST requests and return JSON.","minLength":1},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., Authorization: Bearer token). Values support $VAR_NAME or ${VAR_NAME} interpolation."},"allowedEnvVars":{"type":"array","items":{"type":"string","minLength":1},"description":"List of environment variable names permitted for interpolation in headers. If not set, no env var interpolation is allowed."},"timeout":{"type":"number","description":"Optional timeout in seconds (default: 600; lowered to 30 on UserPromptSubmit and 10 on MessageDisplay)","exclusiveMinimum":0},"if":{"type":"string","description":"Optional permission-rule-syntax filter. Evaluated only on tool-related events (PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionDenied); on other events a hook with `if` set never runs. See https://code.claude.com/docs/en/hooks-guide#filter-hooks-with-matchers"},"statusMessage":{"type":"string","description":"Custom spinner message displayed while the hook runs"}}},{"type":"object","description":"MCP tool hook. Call a tool on an already-connected MCP server. See https://code.claude.com/docs/en/hooks#mcp-tool-hook-fields","additionalProperties":false,"required":["type","server","tool"],"properties":{"type":{"type":"string","description":"Hook type","const":"mcp_tool"},"server":{"type":"string","description":"Name of a configured MCP server (must already be connected)","minLength":1},"tool":{"type":"string","description":"Name of the tool to call on that server","minLength":1},"input":{"type":"object","additionalProperties":true,"description":"Arguments passed to the tool. String values support ${path} substitution from hook JSON input (e.g., ${tool_input.file_path}, ${cwd})"},"timeout":{"type":"number","description":"Optional timeout in seconds (default: 600; lowered to 30 on UserPromptSubmit and 10 on MessageDisplay)","exclusiveMinimum":0},"if":{"type":"string","description":"Optional permission-rule-syntax filter. Evaluated only on tool-related events (PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionDenied); on other events a hook with `if` set never runs. See https://code.claude.com/docs/en/hooks-guide#filter-hooks-with-matchers"},"statusMessage":{"type":"string","description":"Custom spinner message displayed while the hook runs"}}}]},"hookMatcher":{"type":"object","description":"Hook matcher configuration with multiple hooks","additionalProperties":false,"required":["hooks"],"properties":{"matcher":{"type":"string","description":"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"},"hooks":{"type":"array","description":"Array of hooks to execute","items":{"$ref":"#/$defs/hookCommand"}}}}},"description":"Configuration settings for Claude Code. Learn more: https://code.claude.com/docs/en/settings","allowTrailingCommas":false,"additionalProperties":true,"type":"object","properties":{"$schema":{"type":"string","description":"JSON Schema reference for Claude Code settings"},"apiKeyHelper":{"type":"string","description":"Path to a script that outputs authentication values. See https://code.claude.com/docs/en/settings#available-settings","examples":["/bin/generate_temp_api_key.sh"],"minLength":1},"autoMemoryEnabled":{"type":"boolean","description":"Enable automatic memory saves that capture useful context to ~/.claude/projects/<project>/memory/ (derived from the git repository, shared across worktrees). 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#storage-location","default":true},"autoUpdatesChannel":{"type":"string","enum":["stable","latest"],"description":"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"},"awsCredentialExport":{"type":"string","description":"Command that outputs AWS credentials as JSON (in the form {\"Credentials\": {\"AccessKeyId\": ..., \"SecretAccessKey\": ..., \"SessionToken\": ...}}). The output is captured silently. Use when you cannot modify the .aws directory and must return credentials directly. See https://code.claude.com/docs/en/amazon-bedrock#advanced-credential-configuration","examples":["/bin/generate_aws_grant.sh"],"minLength":1},"awsAuthRefresh":{"type":"string","description":"Command to run when AWS credentials are expired or unavailable; its output is shown to the user but interactive input is not supported. Also drives the \"Claude Platform on AWS · refresh credentials\" option in /login when configured. See https://code.claude.com/docs/en/amazon-bedrock#advanced-credential-configuration","examples":["aws sso login --profile myprofile"],"minLength":1},"claudeMdExcludes":{"type":"array","items":{"type":"string","minLength":1},"description":"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":{"type":"integer","minimum":1,"description":"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#available-settings","examples":[20,30,60],"default":30},"env":{"type":"object","description":"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.","examples":[{"ANTHROPIC_MODEL":"claude-opus-4-1","ANTHROPIC_SMALL_FAST_MODEL":"claude-3-5-haiku-latest"}],"default":{},"properties":{"ANTHROPIC_API_KEY":{"type":"string","description":"API key for Anthropic API authentication"},"ANTHROPIC_AUTH_TOKEN":{"type":"string","description":"Custom Authorization header bearer token for API requests"},"ANTHROPIC_AWS_API_KEY":{"type":"string","description":"Workspace API key for Claude Platform on AWS; takes precedence over SigV4 authentication. See https://code.claude.com/docs/en/claude-platform-on-aws#1-configure-aws-credentials"},"ANTHROPIC_AWS_BASE_URL":{"type":"string","description":"Override the Claude Platform on AWS endpoint URL. Default is https://aws-external-anthropic.{region}.api.aws. See https://code.claude.com/docs/en/claude-platform-on-aws#route-through-a-corporate-proxy"},"ANTHROPIC_AWS_WORKSPACE_ID":{"type":"string","description":"Required workspace ID for Claude Platform on AWS; sent as the anthropic-workspace-id header on every request. See https://code.claude.com/docs/en/claude-platform-on-aws#2-configure-claude-code"},"ANTHROPIC_BASE_URL":{"type":"string","description":"Override API endpoint URL for proxy or gateway routing"},"ANTHROPIC_BEDROCK_BASE_URL":{"type":"string","description":"Override Amazon Bedrock endpoint URL"},"ANTHROPIC_BEDROCK_MANTLE_BASE_URL":{"type":"string","description":"Override Bedrock Mantle endpoint URL"},"ANTHROPIC_BEDROCK_SERVICE_TIER":{"type":"string","description":"Select Bedrock service tier; sent as X-Amzn-Bedrock-Service-Tier header. See https://code.claude.com/docs/en/amazon-bedrock#service-tiers","enum":["default","flex","priority"]},"ANTHROPIC_BETAS":{"type":"string","description":"Comma-separated beta header values to include in API requests"},"ANTHROPIC_CUSTOM_HEADERS":{"type":"string","description":"Custom HTTP headers for API requests (newline-separated 'Name: Value' pairs)"},"ANTHROPIC_CUSTOM_MODEL_OPTION":{"type":"string","description":"Custom model ID to add as an entry in the model picker"},"ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION":{"type":"string","description":"Display description for the custom model in the model picker"},"ANTHROPIC_CUSTOM_MODEL_OPTION_NAME":{"type":"string","description":"Display name for the custom model in the model picker"},"ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES":{"type":"string","description":"JSON object specifying capability flags for the custom model"},"ANTHROPIC_DEFAULT_FABLE_MODEL":{"type":"string","description":"Override the default Fable-class model ID. See https://code.claude.com/docs/en/model-config#environment-variables"},"ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION":{"type":"string","description":"Display description shown for the Fable model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_FABLE_MODEL_NAME":{"type":"string","description":"Display name shown for the Fable model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES":{"type":"string","description":"Comma-separated list of capabilities the pinned Fable model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_HAIKU_MODEL":{"type":"string","description":"Override default Haiku model ID"},"ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION":{"type":"string","description":"Display description shown for the Haiku model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME":{"type":"string","description":"Display name shown for the Haiku model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES":{"type":"string","description":"Comma-separated list of capabilities the pinned Haiku model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_OPUS_MODEL":{"type":"string","description":"Override default Opus model ID"},"ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION":{"type":"string","description":"Display description shown for the Opus model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_OPUS_MODEL_NAME":{"type":"string","description":"Display name shown for the Opus model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES":{"type":"string","description":"Comma-separated list of capabilities the pinned Opus model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_SONNET_MODEL":{"type":"string","description":"Override default Sonnet model ID"},"ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION":{"type":"string","description":"Display description shown for the Sonnet model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_SONNET_MODEL_NAME":{"type":"string","description":"Display name shown for the Sonnet model in the model picker. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES":{"type":"string","description":"Comma-separated list of capabilities the pinned Sonnet model supports. See https://code.claude.com/docs/en/model-config#customize-pinned-model-display-and-capabilities"},"ANTHROPIC_FOUNDRY_API_KEY":{"type":"string","description":"Microsoft Foundry authentication key"},"ANTHROPIC_FOUNDRY_AUTH_TOKEN":{"type":"string","description":"Bearer token for Microsoft Foundry authentication, such as a Microsoft Entra access token. Claude Code sends it as the Authorization: Bearer header. Takes precedence over ANTHROPIC_FOUNDRY_API_KEY and over the Azure default credential chain. Requires Claude Code v2.1.203 or later. See https://code.claude.com/docs/en/microsoft-foundry"},"ANTHROPIC_FOUNDRY_BASE_URL":{"type":"string","description":"Microsoft Foundry resource URL"},"ANTHROPIC_FOUNDRY_RESOURCE":{"type":"string","description":"Microsoft Foundry resource name"},"ANTHROPIC_MODEL":{"type":"string","description":"Model to use (e.g., 'claude-opus-4-1', 'claude-sonnet-4-5-20250514', 'opus', 'sonnet', 'haiku')"},"ANTHROPIC_SMALL_FAST_MODEL":{"type":"string","description":"DEPRECATED (prefer ANTHROPIC_DEFAULT_HAIKU_MODEL). Haiku-class model to use for background and low-complexity tasks (e.g., 'claude-3-5-haiku-latest')"},"ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION":{"type":"string","description":"Override the AWS region for the Haiku-class model on Bedrock and Bedrock Mantle. Has no effect without ANTHROPIC_DEFAULT_HAIKU_MODEL (or the deprecated ANTHROPIC_SMALL_FAST_MODEL) set on Bedrock. See https://code.claude.com/docs/en/amazon-bedrock#3-configure-claude-code"},"ANTHROPIC_VERTEX_BASE_URL":{"type":"string","description":"Override Google Cloud's Agent Platform (formerly Vertex AI) endpoint URL. Use for custom endpoints or when routing through an LLM gateway"},"ANTHROPIC_VERTEX_PROJECT_ID":{"type":"string","description":"GCP project ID for Google Cloud's Agent Platform (formerly Vertex AI) requests. Overridden by GCLOUD_PROJECT, GOOGLE_CLOUD_PROJECT, or the project in your GOOGLE_APPLICATION_CREDENTIALS credential file"},"ANTHROPIC_WORKSPACE_ID":{"type":"string","description":"Workspace ID for workload identity federation. Scopes the minted token to a specific workspace when the federation rule covers more than one. See https://code.claude.com/docs/en/env-vars"},"API_FORCE_IDLE_TIMEOUT":{"type":"string","description":"Override the 5-minute idle timeout for streaming responses (0 disables it). See https://code.claude.com/docs/en/env-vars"},"API_TIMEOUT_MS":{"type":"string","description":"Timeout for API requests in milliseconds (default: 600000, or 10 minutes; maximum: 2147483647). Increase this when requests time out on slow networks or when routing through a proxy. Values above the maximum overflow the underlying timer and cause requests to fail immediately."},"AWS_BEARER_TOKEN_BEDROCK":{"type":"string","description":"Bearer token for Bedrock API authentication"},"AWS_REGION":{"type":"string","description":"AWS region for Amazon Bedrock and Claude Platform on AWS requests (e.g. us-east-1). See https://code.claude.com/docs/en/amazon-bedrock#3-configure-claude-code"},"BASH_DEFAULT_TIMEOUT_MS":{"type":"string","description":"Default bash command timeout in milliseconds (default: 120000)"},"BASH_MAX_OUTPUT_LENGTH":{"type":"string","description":"Maximum bash output characters before truncation"},"BASH_MAX_TIMEOUT_MS":{"type":"string","description":"Maximum bash command timeout in milliseconds (default: 600000)"},"BETA_TRACING_ENDPOINT":{"type":"string","description":"Endpoint that, together with ENABLE_BETA_TRACING_DETAILED=1, activates detailed beta tracing spans (e.g. claude_code.hook). See https://code.claude.com/docs/en/monitoring-usage#traces-beta"},"CCR_FORCE_BUNDLE":{"type":"string","description":"Force local repo bundling for --remote invocations","enum":["0","1"]},"CLAUDECODE":{"type":"string","description":"Set to 1 in subprocesses Claude Code spawns (Bash and PowerShell tools, tmux sessions, hook commands, status line commands, stdio MCP server subprocesses). IDE extensions also set this in their integrated terminals. To distinguish a direct tool/hook subprocess from a stdio MCP server subprocess, use CLAUDE_CODE_CHILD_SESSION instead. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_AFK_COUNTDOWN_MS":{"type":"string","description":"How many milliseconds before auto-continue the on-screen countdown appears on an unanswered AskUserQuestion dialog. Default 20000 (20 seconds). See CLAUDE_AFK_TIMEOUT_MS. Requires Claude Code v2.1.198 or later. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_AFK_TIMEOUT_MS":{"type":"string","description":"How many milliseconds of idle time before an unanswered AskUserQuestion dialog auto-continues without you. Default 60000 (60 seconds). Requires Claude Code v2.1.198 or later. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS":{"type":"string","description":"Disable built-in subagent types in Agent SDK","enum":["0","1"]},"CLAUDE_AGENT_SDK_MCP_NO_PREFIX":{"type":"string","description":"Skip 'mcp__<server>__' prefix on MCP tool names in Agent SDK","enum":["0","1"]},"CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS":{"type":"string","description":"Stall timeout for background subagents in milliseconds (default 600000). The timer resets on each streaming progress event; if no progress arrives within the window the subagent is aborted and the task is marked failed, surfacing any partial result to the parent. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE":{"type":"string","description":"Context capacity percentage threshold for auto-compaction (1-100)"},"CLAUDE_AUTO_BACKGROUND_TASKS":{"type":"string","description":"Force-enable automatic backgrounding of tasks","enum":["0","1"]},"CLAUDE_AX_SCREEN_READER":{"type":"string","description":"Set to 1 to render screen-reader friendly output: flat text without decorative borders or animations. Set to 0 to force screen-reader mode off even when axScreenReader is true. The --ax-screen-reader flag takes precedence. Requires Claude Code v2.1.181 or later. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR":{"type":"string","description":"Return to original project directory after each bash command","enum":["0","1"]},"CLAUDE_CLIENT_PRESENCE_FILE":{"type":"string","description":"Path to a file whose existence marks the user as present; while it exists, mobile push notifications are skipped (v2.1.181+). See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_ACCESSIBILITY":{"type":"string","description":"Keep native cursor visible for screen magnifiers and assistive tools","enum":["0","1"]},"CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD":{"type":"string","description":"Load CLAUDE.md memory files from additional directories","enum":["0","1"]},"CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT":{"type":"string","description":"Force a full-screen repaint on every frame in fullscreen mode. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_ALWAYS_ENABLE_EFFORT":{"type":"string","description":"Send the effort parameter for all models, not just those with effort enabled by default. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_API_KEY_HELPER_TTL_MS":{"type":"string","description":"Credential helper refresh interval in milliseconds"},"CLAUDE_CODE_ARTIFACT_AUTO_OPEN":{"type":"string","description":"Set to 0 to stop auto-opening the browser when a new artifact is created. See https://code.claude.com/docs/en/artifacts#create-an-artifact","enum":["0","1"]},"CLAUDE_CODE_ATTRIBUTION_HEADER":{"type":"string","description":"Include attribution block in the system prompt","enum":["0","1"]},"CLAUDE_CODE_AUTO_COMPACT_WINDOW":{"type":"string","description":"Context capacity for compaction calculations in tokens"},"CLAUDE_CODE_AUTO_CONNECT_IDE":{"type":"string","description":"Override automatic IDE connection behavior","enum":["true","false"]},"CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS":{"type":"string","description":"Time in milliseconds Claude Code waits for the AWS default credential provider chain to produce credentials before the request fails with \"AWS default-chain credential resolve timed out\" (default: 60000). Raise it when a step in your chain legitimately needs longer, such as a browser-based SSO sign-in with MFA through a wrapper like aws-vault. Applies wherever Claude Code signs with the default chain. Requires Claude Code v2.1.207 or later. See https://code.claude.com/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout"},"CLAUDE_CODE_BRIDGE_SESSION_ID":{"type":"string","description":"Set automatically in Bash tool and hook command subprocesses while the session has an active Remote Control connection, and removed when the connection ends. The value is the session's ID in session_ form, the same identifier that appears in the session's claude.ai/code URL, so a script can link back to the session that ran it. Requires Claude Code v2.1.199 or later. See https://code.claude.com/docs/en/remote-control"},"CLAUDE_CODE_CERT_STORE":{"type":"string","description":"CA certificate sources (comma-separated: 'bundled', 'system')"},"CLAUDE_CODE_CHILD_SESSION":{"type":"string","description":"Set by Claude Code to 1 in nested subprocesses (Bash, PowerShell, Monitor, hook commands, status-line commands) to distinguish nested sessions from a top-level claude launched in IDE terminals (v2.1.172+). A nested interactive claude TUI started this way is excluded from --resume, --continue, up-arrow history, and the claude agents list; non-interactive claude -p sessions still persist (override with CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_CLIENT_CERT":{"type":"string","description":"Client certificate file path for mutual TLS"},"CLAUDE_CODE_CLIENT_KEY":{"type":"string","description":"Client private key file path for mutual TLS"},"CLAUDE_CODE_CLIENT_KEY_PASSPHRASE":{"type":"string","description":"Passphrase for encrypted client private key"},"CLAUDE_CODE_DEBUG_LOGS_DIR":{"type":"string","description":"Override the debug log file path. Despite the name, this is a file path, not a directory."},"CLAUDE_CODE_DEBUG_LOG_LEVEL":{"type":"string","description":"Debug log verbosity level","enum":["verbose","debug","info","warn","error"]},"CLAUDE_CODE_DISABLE_1M_CONTEXT":{"type":"string","description":"Disable 1M context window models","enum":["0","1"]},"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING":{"type":"string","description":"Disable adaptive reasoning","enum":["0","1"]},"CLAUDE_CODE_DISABLE_ADVISOR_TOOL":{"type":"string","description":"Disable the server-side advisor tool. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_AGENT_VIEW":{"type":"string","description":"Turn off background agents and agent view (claude agents, --bg, /background, and the on-demand supervisor). Equivalent to the disableAgentView setting. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN":{"type":"string","description":"Disable alternate screen buffer rendering. When set to 1, keeps conversation in native scrollback instead of fullscreen renderer","enum":["0","1"]},"CLAUDE_CODE_DISABLE_ARTIFACT":{"type":"string","description":"Disable the Artifact tool. Equivalent to setting disableArtifact. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_ATTACHMENTS":{"type":"string","description":"Disable attachment processing","enum":["0","1"]},"CLAUDE_CODE_DISABLE_AUTO_MEMORY":{"type":"string","description":"Disable automatic memory feature","enum":["0","1"]},"CLAUDE_CODE_DISABLE_BACKGROUND_TASKS":{"type":"string","description":"Disable all background task functionality","enum":["0","1"]},"CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD":{"type":"string","description":"Set to 1 to skip the check that an Amazon Bedrock streaming response carries the application/vnd.amazon.eventstream content-type. Without this variable, a response with a different content-type fails with an error naming that content-type, which means a gateway or proxy is transforming the response. Set it only when the gateway rewrites the Content-Type header but passes the binary event-stream body through unmodified; if the body itself was transformed, requests fail with \"Truncated event message received\" instead. Requires Claude Code v2.1.208 or later. See https://code.claude.com/docs/en/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy","enum":["0","1"]},"CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF":{"type":"string","description":"Set to 1 to stop a background session's running background shell commands, dynamic workflows, and (as of v2.1.198) background subagents when the supervisor stops, restarts, or updates that session's process, instead of handing them off to the session's next process. Affects only that handoff; CLAUDE_DISABLE_ADOPT turns off both. Requires Claude Code v2.1.196 or later. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP":{"type":"string","description":"UNDOCUMENTED. Disable automatic memory-pressure reaping of idle background shell commands (added v2.1.193).","enum":["0","1"]},"CLAUDE_CODE_DISABLE_BUNDLED_SKILLS":{"type":"string","description":"Disable the skills and workflows bundled with Claude Code (plugins and project .claude/skills are unaffected). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_CLAUDE_MDS":{"type":"string","description":"Prevent loading CLAUDE.md memory files","enum":["0","1"]},"CLAUDE_CODE_DISABLE_CRON":{"type":"string","description":"Disable scheduled/cron tasks","enum":["0","1"]},"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS":{"type":"string","description":"Strip anthropic-beta headers from API requests. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21123","enum":["0","1"]},"CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS":{"type":"string","description":"Set to 1 to disable the built-in Explore and Plan subagents. Requires Claude Code v2.1.198 or later. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_FAST_MODE":{"type":"string","description":"Disable fast mode toggle","enum":["0","1"]},"CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY":{"type":"string","description":"Disable session quality feedback surveys","enum":["0","1"]},"CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING":{"type":"string","description":"Disable file checkpointing for /rewind","enum":["0","1"]},"CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS":{"type":"string","description":"Remove git commit and PR workflow instructions from the system prompt","enum":["0","1"]},"CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP":{"type":"string","description":"Prevent automatic remapping of legacy model names","enum":["0","1"]},"CLAUDE_CODE_DISABLE_MOUSE":{"type":"string","description":"Disable mouse tracking in fullscreen mode. See https://code.claude.com/docs/en/fullscreen#keep-native-text-selection","enum":["0","1"]},"CLAUDE_CODE_DISABLE_MOUSE_CLICKS":{"type":"string","description":"Disable mouse click/drag/hover in fullscreen mode while keeping wheel scroll (requires v2.1.195+). CLAUDE_CODE_DISABLE_MOUSE takes precedence when both variables are set. See https://code.claude.com/docs/en/fullscreen#keep-native-text-selection","enum":["0","1"]},"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":{"type":"string","description":"Disable auto-update checks, telemetry, and feedback in one setting","enum":["0","1"]},"CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK":{"type":"string","description":"Disable fallback to non-streaming API mode","enum":["0","1"]},"CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK":{"type":"string","description":"Set to 1 to send desktop notifications from the PushNotification tool even while focused on the terminal. Requires Claude Code v2.1.193 or later. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL":{"type":"string","description":"Skip automatic installation of official marketplace plugins. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_POLICY_SKILLS":{"type":"string","description":"Skip loading system-wide policy skills. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_DISABLE_TERMINAL_TITLE":{"type":"string","description":"Disable terminal title updates","enum":["0","1"]},"CLAUDE_CODE_DISABLE_THINKING":{"type":"string","description":"Force-disable extended thinking","enum":["0","1"]},"CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL":{"type":"string","description":"Disable virtual scrolling in fullscreen mode","enum":["0","1"]},"CLAUDE_CODE_DISABLE_WORKFLOWS":{"type":"string","description":"Set to 1 to disable workflows. Equivalent to the disableWorkflows setting. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_EFFORT_LEVEL":{"type":"string","description":"Reasoning effort level","enum":["low","medium","high","xhigh","max","auto"]},"CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT":{"type":"string","description":"Set to 1 to enable appending extra text to the end of every subagent's system prompt. The --append-subagent-system-prompt flag supplies the appended text and sets this variable automatically, so you do not need to set it yourself. Requires Claude Code v2.1.205 or later. See https://code.claude.com/docs/en/sub-agents","enum":["0","1"]},"CLAUDE_CODE_ENABLE_AUTO_MODE":{"type":"string","description":"Set to 1 to make auto mode available on Amazon Bedrock, Google Cloud Vertex AI, and Microsoft Foundry (requires v2.1.158+; no effect on the Anthropic API where auto mode is available by default). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_ENABLE_AWAY_SUMMARY":{"type":"string","description":"Override session recap/away summary availability","enum":["0","1"]},"CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH":{"type":"string","description":"Refresh plugins at turn boundaries. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL":{"type":"string","description":"Enable feedback survey collection via OpenTelemetry for enterprises","enum":["0","1"]},"CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING":{"type":"string","description":"Force fine-grained tool output streaming","enum":["0","1"]},"CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY":{"type":"string","description":"Enable model discovery from LLM gateway /v1/models endpoint when ANTHROPIC_BASE_URL points at an Anthropic-compatible gateway","enum":["0","1"]},"CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION":{"type":"string","description":"Enable prompt suggestions","enum":["true","false"]},"CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING":{"type":"string","description":"Enable file checkpointing for a non-interactive CLI run, so `claude -p --resume <session-id> --rewind-files <checkpoint-uuid>` can rewind files. The Agent SDK sets this internally when enable_file_checkpointing (Python) or enableFileCheckpointing (TypeScript) is enabled; the bare CLI never sets it. Without it, a non-interactive rewind fails with \"File rewinding is not enabled\". See https://code.claude.com/docs/en/agent-sdk/file-checkpointing"},"CLAUDE_CODE_ENABLE_TASKS":{"type":"string","description":"Enable task tracking in non-interactive mode","enum":["0","1"]},"CLAUDE_CODE_ENABLE_TELEMETRY":{"type":"string","description":"Set to 1 to enable telemetry collection. Required for all OpenTelemetry integration. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["0","1"]},"CLAUDE_CODE_ENHANCED_TELEMETRY_BETA":{"type":"string","description":"Enable the enhanced telemetry (tracing) beta. ENABLE_ENHANCED_TELEMETRY_BETA is also accepted. See https://code.claude.com/docs/en/monitoring-usage#traces-beta","enum":["0","1"]},"CLAUDE_CODE_EXIT_AFTER_STOP_DELAY":{"type":"string","description":"Wait time in milliseconds before auto-exit after stop"},"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":{"type":"string","description":"Enable experimental agent teams feature","enum":["0","1"]},"CLAUDE_CODE_EXTRA_BODY":{"type":"string","description":"JSON object to merge into every API request body"},"CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS":{"type":"string","description":"Token limit for file read operations"},"CLAUDE_CODE_FORCE_SESSION_PERSISTENCE":{"type":"string","description":"Set to 1 to override the automatic exclusion of nested interactive claude TUI sessions from --resume, --continue, up-arrow history, and the claude agents list (requires v2.1.172+). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_FORCE_STRIKETHROUGH":{"type":"string","description":"Set to 1 to force strikethrough rendering for ~~text~~ in Claude's responses when the terminal supports it but is not auto-detected, such as over SSH without TERM_PROGRAM forwarded. Without this, undetected terminals show the literal ~~ markers. Requires Claude Code v2.1.186 or later. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_FORCE_SYNC_OUTPUT":{"type":"string","description":"Force synchronous output flushing. When set to 1, forces synchronized output on terminals that auto-detection misses (e.g., Emacs eat)","enum":["0","1"]},"CLAUDE_CODE_FORK_SUBAGENT":{"type":"string","description":"Fork subagent processes in non-interactive sessions. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21120","enum":["0","1"]},"CLAUDE_CODE_FORWARD_SUBAGENT_TEXT":{"type":"string","description":"Set to 1 to emit subagent text and thinking blocks in claude -p --output-format stream-json output, the same behavior as the --forward-subagent-text flag. Use the variable when a harness invokes claude and cannot pass the flag itself. Unlike the flag, which exits with an error outside non-interactive mode with stream-json output, the variable is ignored there so that nested invocations keep working when it is set process-wide. Requires Claude Code v2.1.211 or later. See https://code.claude.com/docs/en/sub-agents","enum":["0","1"]},"CLAUDE_CODE_GIT_BASH_PATH":{"type":"string","description":"Path to Git Bash executable (Windows only)"},"CLAUDE_CODE_GLOB_HIDDEN":{"type":"string","description":"Include dotfiles/hidden files in Glob results","enum":["true","false"]},"CLAUDE_CODE_GLOB_NO_IGNORE":{"type":"string","description":"Don't respect .gitignore rules in Glob results","enum":["true","false"]},"CLAUDE_CODE_GLOB_TIMEOUT_SECONDS":{"type":"string","description":"Glob tool timeout in seconds (default: 20-60)"},"CLAUDE_CODE_HIDE_CWD":{"type":"string","description":"Hide the working directory in the startup logo. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#21126","enum":["0","1"]},"CLAUDE_CODE_IDE_HOST_OVERRIDE":{"type":"string","description":"Override IDE connection address"},"CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL":{"type":"string","description":"Skip automatic IDE extension installation","enum":["0","1"]},"CLAUDE_CODE_IDE_SKIP_VALID_CHECK":{"type":"string","description":"Skip IDE lockfile validation","enum":["0","1"]},"CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS":{"type":"string","description":"How many subagents can be running in one session before the Agent tool refuses to spawn another (default: 20). Accepts a positive whole number in plain digits; anything else is ignored, so the variable can adjust the cap but cannot disable it. Requires Claude Code v2.1.217 or later. See https://code.claude.com/docs/en/sub-agents#concurrent-subagent-limit"},"CLAUDE_CODE_MAX_CONTEXT_TOKENS":{"type":"string","description":"Override context window size in tokens"},"CLAUDE_CODE_MAX_OUTPUT_TOKENS":{"type":"string","description":"Maximum output tokens per API request"},"CLAUDE_CODE_MAX_RETRIES":{"type":"string","description":"Maximum API request retry attempts (default: 10)"},"CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION":{"type":"string","description":"Cap on the number of subagents one session can spawn with the Agent tool (default: 200). When Claude reaches the cap, spawning another subagent fails with an error telling Claude to finish the remaining work directly. Accepts a positive whole number in plain digits with no upper bound; this variable does not take the scientific notation or digit-separator spellings. Anything else is ignored and the default applies, so the cap can be raised but not turned off. Requires Claude Code v2.1.212 or later. See https://code.claude.com/docs/en/sub-agents#session-subagent-limit"},"CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH":{"type":"string","description":"Number of subagent layers allowed below the main conversation (default: 1). At the default, subagents cannot spawn their own subagents; set 2 or higher to allow it. Accepts a positive whole number in plain digits; anything else is ignored, so the limit can be raised but not turned off. Requires Claude Code v2.1.217 or later. See https://code.claude.com/docs/en/sub-agents#let-subagents-spawn-their-own-subagents"},"CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY":{"type":"string","description":"Maximum parallel tool executions (default: 10)"},"CLAUDE_CODE_MAX_TURNS":{"type":"string","description":"Cap the number of agentic turns when no explicit limit is passed. Equivalent to --max-turns, which takes precedence. A non-positive integer is rejected at startup. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION":{"type":"string","description":"Cap on the total number of WebSearch calls one session can make (default: 200). When Claude reaches the cap, further WebSearch calls return a notice telling it to continue with the information it already gathered. Accepts a positive whole number with no upper bound. Anything else is ignored and the default applies, so the cap can be raised but not turned off. Requires Claude Code v2.1.212 or later. See https://code.claude.com/docs/en/tools-reference#websearch-tool-behavior"},"CLAUDE_CODE_MCP_ALLOWLIST_ENV":{"type":"string","description":"Isolate MCP server environments to allowlisted variables","enum":["0","1"]},"CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS":{"type":"string","description":"Elapsed time in milliseconds before a still-running MCP tool call moves to a background task (default: 120000, or 2 minutes). Set to 0 to turn automatic backgrounding off. Requires Claude Code v2.1.212 or later. See https://code.claude.com/docs/en/mcp#automatic-backgrounding-of-long-tool-calls"},"CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT":{"type":"string","description":"Idle timeout in milliseconds for MCP tool calls. When a stdio, HTTP, SSE, WebSocket, or claude.ai connector MCP server sends no response and no progress notification for this long, the tool call aborts with an error instead of waiting for the overall MCP_TOOL_TIMEOUT. Overrides the per-transport defaults of 300000 (5 minutes) for network servers and 1800000 (30 minutes) for stdio servers. Set to 0 to disable the idle check. Values below 1000 are raised to one second, and the value is capped at the effective MCP_TOOL_TIMEOUT. A per-server timeout in .mcp.json of at least 1000 raises that server's idle window to at least the timeout value. Does not apply to IDE servers or SDK in-process servers. Requires Claude Code v2.1.187 or later. Before v2.1.203, stdio servers were exempt from the idle timeout. See https://code.claude.com/docs/en/mcp"},"CLAUDE_CODE_NATIVE_CURSOR":{"type":"string","description":"Set to 1 to show the terminal's own cursor at the input caret instead of a drawn block. The cursor respects the terminal's blink, shape, and focus settings. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_NEW_INIT":{"type":"string","description":"Use the interactive /init setup flow","enum":["0","1"]},"CLAUDE_CODE_NO_FLICKER":{"type":"string","description":"Enable fullscreen rendering mode to reduce flicker","enum":["0","1"]},"CLAUDE_CODE_OAUTH_REFRESH_TOKEN":{"type":"string","description":"OAuth refresh token"},"CLAUDE_CODE_OAUTH_SCOPES":{"type":"string","description":"OAuth scopes (space-separated)"},"CLAUDE_CODE_OAUTH_TOKEN":{"type":"string","description":"OAuth access token"},"CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH":{"type":"string","description":"Maximum length of content-bearing OpenTelemetry attributes (model responses, tool content, system prompts, raw API bodies), truncation marker included, in UTF-16 code units (default: 61440, i.e. 60 KB). Raise it only if your telemetry backend accepts attribute values larger than 64 KB, or lower it to cut telemetry volume. Requires Claude Code v2.1.214 or later. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"CLAUDE_CODE_OTEL_DIAG_STDERR":{"type":"string","description":"Set to 1 to write OpenTelemetry exporter diagnostic errors to stderr (otherwise shown only with --debug). Requires v2.1.179+. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS":{"type":"string","description":"OpenTelemetry span flush timeout in milliseconds (default: 5000)"},"CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS":{"type":"string","description":"OpenTelemetry header helper refresh interval in milliseconds"},"CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS":{"type":"string","description":"OpenTelemetry shutdown timeout in milliseconds (default: 2000)"},"CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE":{"type":"string","description":"Enable automatic package manager updates. When set, Claude Code runs the upgrade command in background on Homebrew/WinGet and prompts to restart","enum":["0","1"]},"CLAUDE_CODE_PERFORCE_MODE":{"type":"string","description":"Enable Perforce write protection mode","enum":["0","1"]},"CLAUDE_CODE_PLUGIN_CACHE_DIR":{"type":"string","description":"Override the plugins root directory. Despite the name, this sets the parent directory, not the cache itself: marketplaces and the plugin cache live in subdirectories under this path. Defaults to ~/.claude/plugins. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS":{"type":"string","description":"Plugin marketplace git operations timeout in milliseconds (default: 120000). See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2151"},"CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE":{"type":"string","description":"Keep plugin cache on update failure","enum":["0","1"]},"CLAUDE_CODE_PLUGIN_PREFER_HTTPS":{"type":"string","enum":["0","1"],"description":"Set to 1 to clone GitHub owner/repo plugin sources over HTTPS instead of SSH. Useful in CI runners, containers, or environments without a configured SSH key for github.com. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_PLUGIN_SEED_DIR":{"type":"string","description":"Path(s) to pre-populated plugin directories. See https://code.claude.com/docs/en/plugin-marketplaces#pre-populate-plugins-for-containers"},"CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY":{"type":"string","enum":["0","1"],"description":"Set to 1 to stop Claude Code from passing -ExecutionPolicy Bypass when spawning PowerShell for tool calls, hooks, and status line commands. By default Claude Code bypasses execution policy so .ps1 scripts work on default-Restricted Windows installs. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS":{"type":"string","description":"Cap, in milliseconds, on how long `claude -p` waits for background subagents at exit (default 10 minutes; set to 0 to wait without limit, added v2.1.182). See https://code.claude.com/docs/en/headless#background-tasks-at-exit"},"CLAUDE_CODE_PROCESS_WRAPPER":{"type":"string","description":"Launch the processes Claude Code starts from its own binary, such as the background service that hosts agent view sessions, through a corporate launcher given as an argv prefix like /opt/corp/launcher. Set it in the env block of user or managed settings, not as a shell export, so the detached background service inherits it; project and local settings cannot set it. Equivalent to the processWrapper setting, which requires Claude Code v2.1.210 or later; this variable takes precedence when both are set. The VS Code extension configures its own launcher separately through its claudeProcessWrapper setting. Ignored on Windows. Requires Claude Code v2.1.208 or later. See https://code.claude.com/docs/en/corporate-launcher"},"CLAUDE_CODE_PROPAGATE_TRACEPARENT":{"type":"string","description":"Propagate the W3C traceparent header on API requests when using a custom ANTHROPIC_BASE_URL. See https://code.claude.com/docs/en/monitoring-usage#traces-beta","enum":["0","1"]},"CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST":{"type":"string","description":"Indicate that the host application manages provider routing","enum":["0","1"]},"CLAUDE_CODE_PROXY_RESOLVES_HOSTS":{"type":"string","description":"Allow proxy to handle DNS resolution","enum":["0","1"]},"CLAUDE_CODE_REMOTE":{"type":"string","description":"Indicates a remote web environment session","enum":["true","false"]},"CLAUDE_CODE_REMOTE_SESSION_ID":{"type":"string","description":"Cloud session identifier for remote sessions"},"CLAUDE_CODE_RESUME_INTERRUPTED_TURN":{"type":"string","description":"Automatically resume from a mid-turn interruption","enum":["0","1"]},"CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS":{"type":"string","description":"Maximum age in milliseconds of the last transcript message for a session that ended mid-turn to continue automatically on resume. When the last message is older than this bound, Claude Code skips both the CLAUDE_CODE_RESUME_INTERRUPTED_TURN automatic resume and the injected CLAUDE_CODE_RESUME_PROMPT continuation message, and the session starts idle so you continue explicitly. Unset or 0 means no bound; a negative or non-numeric value applies a one-hour bound. Spawn scripts for long-running agents can set this so a restart against an old transcript does not re-run a stale prompt. Claude Code sets a one-hour bound itself when it restarts a crashed agent view session that inherited its conversation from an interactive session. Requires Claude Code v2.1.211 or later. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_RESUME_PROMPT":{"type":"string","description":"Override the continuation message injected when resuming a session that ended mid-turn (default \"Continue from where you left off.\"). An empty string uses the default. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_RETRY_WATCHDOG":{"type":"string","description":"Set to 1 for unattended sessions (eval harnesses, CI, remote workers) to retry 429/529 capacity errors indefinitely, backing off up to 5 minutes, instead of failing after CLAUDE_CODE_MAX_RETRIES. Requires v2.1.186+. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_SAFE_MODE":{"type":"string","description":"Set to 1 to start in safe mode: CLAUDE.md, skills, plugins, hooks, MCP servers, custom commands and agents, output styles, workflows, custom themes, custom keybindings, status line and file-suggestion commands, LSP servers, and auto-memory do not load, for troubleshooting a broken configuration. Managed settings policy still applies. Equivalent to passing --safe-mode; directly spawned child processes inherit the variable. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_SCRIPT_CAPS":{"type":"string","description":"Script invocation limits (JSON object)"},"CLAUDE_CODE_SCROLL_SPEED":{"type":"string","description":"Set the mouse wheel scroll multiplier in fullscreen rendering. Accepts any positive value up to 20, including fractional values below 1 such as 0.5 to slow accelerated trackpad and wheel scrolling in terminals that already amplify wheel events. Set to 3 to match vim if your terminal sends one wheel event per notch without amplification. See https://code.claude.com/docs/en/fullscreen#mouse-wheel-scrolling"},"CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS":{"type":"string","description":"Override the time budget in milliseconds for SessionEnd hooks (default 1500, raised up to 60000 by the highest configured per-hook timeout). See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_SESSION_ID":{"type":"string","description":"Set automatically to the current session ID in Bash/PowerShell tool subprocesses, hook command subprocesses, and stdio MCP server subprocesses. Read-only. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_SHELL":{"type":"string","description":"Override automatic shell detection (e.g., '/bin/zsh', '/bin/bash')"},"CLAUDE_CODE_SHELL_PREFIX":{"type":"string","description":"Command prefix wrapper for shell commands"},"CLAUDE_CODE_SIMPLE":{"type":"string","description":"Minimal mode with core tools only","enum":["0","1"]},"CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT":{"type":"string","description":"Use a shortened system prompt","enum":["0","1"]},"CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH":{"type":"string","description":"Skip client-side SigV4 authentication for Claude Platform on AWS; use when a proxy or gateway adds authentication before forwarding. See https://code.claude.com/docs/en/claude-platform-on-aws#route-through-a-corporate-proxy","enum":["0","1"]},"CLAUDE_CODE_SKIP_AWS_CRED_CACHE":{"type":"string","description":"Set to 1 to turn off the in-process cache of credentials resolved from the AWS default credential provider chain, so Claude Code resolves the chain on every API request. With the cache off, an SSO-backed profile requests credentials from IAM Identity Center on every request. Requires Claude Code v2.1.207 or later. See https://code.claude.com/docs/en/amazon-bedrock#credential-caching-and-resolution-timeout","enum":["0","1"]},"CLAUDE_CODE_SKIP_BEDROCK_AUTH":{"type":"string","description":"Skip AWS authentication for Bedrock","enum":["0","1"]},"CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS":{"type":"string","description":"Set to 1 to treat a failed fast mode availability check as available, for networks that block the check's direct request to api.anthropic.com. Claude Code still honors a \"disabled by your organization\" response. See https://code.claude.com/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways","enum":["0","1"]},"CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK":{"type":"string","description":"Set to 1 to skip the client-side fast mode availability check, for proxies that intercept the check's request rather than refuse it. The API still rejects fast mode requests when your organization has fast mode disabled. See https://code.claude.com/docs/en/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways","enum":["0","1"]},"CLAUDE_CODE_SKIP_FOUNDRY_AUTH":{"type":"string","description":"Skip Azure authentication for Foundry","enum":["0","1"]},"CLAUDE_CODE_SKIP_MANTLE_AUTH":{"type":"string","description":"Skip AWS authentication for Bedrock Mantle (for example, when using an LLM gateway). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_SKIP_PROMPT_HISTORY":{"type":"string","description":"Disable transcript writes entirely. See https://code.claude.com/docs/en/settings#environment-variables","enum":["0","1"]},"CLAUDE_CODE_SKIP_VERTEX_AUTH":{"type":"string","description":"Skip Google authentication for Google Cloud's Agent Platform","enum":["0","1"]},"CLAUDE_CODE_STOP_HOOK_BLOCK_CAP":{"type":"string","description":"Override the default maximum consecutive Stop hook blocks (default: 8) before the turn ends with a warning. Raise this when a stop hook legitimately needs more than 8 iterations to converge. See https://code.claude.com/docs/en/hooks-guide"},"CLAUDE_CODE_SUBAGENT_MODEL":{"type":"string","description":"Override model used by subagents"},"CLAUDE_CODE_SUBPROCESS_ENV_SCRUB":{"type":"string","description":"Strip credentials from subprocess environments","enum":["0","1"]},"CLAUDE_CODE_SYNC_PLUGIN_INSTALL":{"type":"string","description":"Wait synchronously for plugin installation","enum":["0","1"]},"CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS":{"type":"string","description":"Timeout in milliseconds for synchronous plugin installation"},"CLAUDE_CODE_SYNC_SKILLS":{"type":"string","description":"Set to 1 to download enabled claude.ai skills into ~/.claude/skills/ before the first query and resync every 10 minutes (non-interactive -p mode only; requires claude.ai auth). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS":{"type":"string","description":"Timeout in milliseconds for a mid-session skills resync when CLAUDE_CODE_SYNC_SKILLS is set (default 30000). See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS":{"type":"string","description":"Timeout in milliseconds for the first query to wait on the initial skills sync when CLAUDE_CODE_SYNC_SKILLS is set (default 5000). See https://code.claude.com/docs/en/env-vars"},"CLAUDE_CODE_SYNTAX_HIGHLIGHT":{"type":"string","description":"UNDOCUMENTED. Enable syntax highlighting in diffs","enum":["true","false"]},"CLAUDE_CODE_TASK_LIST_ID":{"type":"string","description":"Shared task list identifier for team collaboration"},"CLAUDE_CODE_TEAM_NAME":{"type":"string","description":"Agent team membership name"},"CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS":{"type":"string","description":"Override, in milliseconds, how long a non-interactive session waits at exit for its agent team to finish tearing down. Accepts 1000 to 60000; an out-of-range value is ignored and the default of 10000 applies. Requires Claude Code v2.1.206 or later. See https://code.claude.com/docs/en/agent-teams"},"CLAUDE_CODE_TMPDIR":{"type":"string","description":"Override temp directory path"},"CLAUDE_CODE_TMUX_TRUECOLOR":{"type":"string","description":"Allow 24-bit truecolor rendering in tmux","enum":["0","1"]},"CLAUDE_CODE_USE_ANTHROPIC_AWS":{"type":"string","description":"Enable Claude Platform on AWS as the API provider. Bedrock and Foundry take precedence if also set. See https://code.claude.com/docs/en/claude-platform-on-aws#2-configure-claude-code","enum":["0","1"]},"CLAUDE_CODE_USE_BEDROCK":{"type":"string","description":"Enable Amazon Bedrock as the API provider. See https://code.claude.com/docs/en/amazon-bedrock#3-configure-claude-code","enum":["0","1"]},"CLAUDE_CODE_USE_FOUNDRY":{"type":"string","description":"Enable Microsoft Foundry as the API provider. See https://code.claude.com/docs/en/microsoft-foundry#3-configure-claude-code","enum":["0","1"]},"CLAUDE_CODE_USE_MANTLE":{"type":"string","description":"Enable the Mantle endpoint (native Anthropic API shape on Bedrock). See https://code.claude.com/docs/en/amazon-bedrock#enable-mantle","enum":["0","1"]},"CLAUDE_CODE_USE_NATIVE_FILE_SEARCH":{"type":"string","description":"Set to 1 to discover custom commands, subagents, and output styles using Node.js file APIs instead of ripgrep (for environments where the bundled ripgrep is unavailable). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_CODE_USE_POWERSHELL_TOOL":{"type":"string","description":"Enable PowerShell as default shell for interactive commands (Windows)","enum":["0","1"]},"CLAUDE_CODE_USE_VERTEX":{"type":"string","description":"Enable Google Cloud's Agent Platform as the API provider. See https://code.claude.com/docs/en/google-vertex-ai#4-configure-claude-code","enum":["0","1"]},"CLAUDE_CONFIG_DIR":{"type":"string","description":"Override the configuration directory (default ~/.claude) where settings, credentials, session history, and plugins are stored. Useful for running multiple accounts side by side. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_DISABLE_ADOPT":{"type":"string","description":"Set to 1 to stop in-flight background work instead of carrying it over when you background a session by pressing ← or with /background. Claude Code asks you to confirm before backgrounding, then stops the tasks that would otherwise carry over. Requires Claude Code v2.1.195 or later. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_EFFORT":{"type":"string","enum":["low","medium","high","xhigh","max"],"description":"Set automatically in Bash tool subprocesses and hook commands to the active effort level for the turn (low, medium, high, xhigh, or max; ultracode reports as xhigh). Read-only. See https://code.claude.com/docs/en/env-vars"},"CLAUDE_ENABLE_BYTE_WATCHDOG":{"type":"string","description":"Set to 1 to force-enable, or 0 to force-disable, the byte-level streaming idle watchdog that aborts a connection when no bytes arrive within the configured timeout. Enabled by default on direct Anthropic API and Claude Platform on AWS connections. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK":{"type":"string","description":"Set to 1 to enable the byte-level streaming idle watchdog on Amazon Bedrock eventstream responses (off by default). Configure the timeout with CLAUDE_STREAM_IDLE_TIMEOUT_MS. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_ENABLE_STREAM_WATCHDOG":{"type":"string","description":"Set to 1 to force-enable, or 0 to force-disable, the event-level streaming idle watchdog. When unset, the watchdog is on by default for all providers (as of v2.1.196; before that the unset default was server-controlled on the direct Anthropic API and off on other providers). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"CLAUDE_ENV_FILE":{"type":"string","description":"File path for persisting environment variables across Bash commands"},"CLAUDE_PID":{"type":"string","description":"Claude Code sets this to its own process ID in the subprocesses it spawns: Bash and PowerShell tool commands and hook commands. On Linux, the Bash tool's shell integration uses it to refuse a pkill pattern that would match the Claude Code process itself. Read it from your own scripts to identify or signal the parent Claude Code process deliberately. Requires Claude Code v2.1.214 or later. See https://code.claude.com/docs/en/errors#pkill-pattern-matches-the-claude-code-process"},"CLAUDE_PROJECT_DIR":{"type":"string","description":"Project root directory path (also provided to hooks)"},"CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX":{"type":"string","description":"Prefix for auto-generated Remote Control session names when no explicit name is set. Defaults to the machine hostname, producing names like myhost-graceful-unicorn. See https://code.claude.com/docs/en/remote-control#start-a-remote-control-session"},"CLAUDE_STREAM_IDLE_TIMEOUT_MS":{"type":"string","description":"Timeout in milliseconds before the streaming idle watchdog closes a stalled connection. When set explicitly the minimum is 300000 (5 minutes); lower values are clamped. See https://code.claude.com/docs/en/env-vars"},"CLOUD_ML_REGION":{"type":"string","description":"Google Cloud's Agent Platform region: global, a multi-region location (eu, us), or a specific region (e.g. us-east5). See https://code.claude.com/docs/en/google-vertex-ai#region-configuration"},"DEBUG":{"type":"string","description":"Set to a truthy value (1, true, yes, or on) to enable debug mode, equivalent to --debug. Logs are written to ~/.claude/debug/<session-id>.txt. See https://code.claude.com/docs/en/env-vars"},"DISABLE_AUTOUPDATER":{"type":"string","description":"Set to 1 to disable automatic background updates. Manual claude update still works; use DISABLE_UPDATES to block both. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_AUTO_COMPACT":{"type":"string","description":"Set to 1 to disable automatic compaction when approaching the context limit. The manual /compact command remains available. Equivalent to autoCompactEnabled: false. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_COMPACT":{"type":"string","description":"Set to 1 to disable all compaction: both automatic compaction and the manual /compact command. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_COST_WARNINGS":{"type":"string","description":"Set to 1 to disable cost warning messages. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_DOCTOR_COMMAND":{"type":"string","description":"Set to 1 to hide the /doctor command (useful for managed deployments). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_ERROR_REPORTING":{"type":"string","description":"Disable Sentry error reporting","enum":["0","1"]},"DISABLE_EXTRA_USAGE_COMMAND":{"type":"string","description":"Set to 1 to hide the /usage-credits command for purchasing additional usage beyond rate limits. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_FEEDBACK_COMMAND":{"type":"string","description":"Set to 1 to disable the /feedback command. The older name DISABLE_BUG_COMMAND is also accepted. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_GROWTHBOOK":{"type":"string","description":"Set to 1 to disable GrowthBook feature-flag fetching and use code defaults for every flag. Telemetry stays on unless DISABLE_TELEMETRY is also set. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_INSTALLATION_CHECKS":{"type":"string","description":"Set to 1 to disable installation warnings (use only when manually managing the installation location). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_INSTALL_GITHUB_APP_COMMAND":{"type":"string","description":"Set to 1 to hide the /install-github-app command (already hidden on Bedrock, Vertex, or Foundry). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_INTERLEAVED_THINKING":{"type":"string","description":"Set to 1 to prevent sending the interleaved-thinking beta header (useful when a gateway or provider does not support interleaved thinking). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_LOGIN_COMMAND":{"type":"string","description":"Set to 1 to hide the /login command (useful when authentication is handled externally via API keys or apiKeyHelper). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_LOGOUT_COMMAND":{"type":"string","description":"Set to 1 to hide the /logout command. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_PROMPT_CACHING":{"type":"string","description":"Disable prompt caching for all models. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching","enum":["0","1"]},"DISABLE_PROMPT_CACHING_FABLE":{"type":"string","description":"Disable prompt caching for Fable models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching","enum":["0","1"]},"DISABLE_PROMPT_CACHING_HAIKU":{"type":"string","description":"Disable prompt caching for Haiku models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching","enum":["0","1"]},"DISABLE_PROMPT_CACHING_OPUS":{"type":"string","description":"Disable prompt caching for Opus models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching","enum":["0","1"]},"DISABLE_PROMPT_CACHING_SONNET":{"type":"string","description":"Disable prompt caching for Sonnet models only. See https://code.claude.com/docs/en/prompt-caching#disable-prompt-caching","enum":["0","1"]},"DISABLE_TELEMETRY":{"type":"string","description":"Set to 1 to opt out of telemetry. Also disables feature-flag fetching (same effect as DISABLE_GROWTHBOOK). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DISABLE_UPDATES":{"type":"string","description":"Block all update paths including manual updates","enum":["0","1"]},"DISABLE_UPGRADE_COMMAND":{"type":"string","description":"Set to 1 to hide the /upgrade command. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"DO_NOT_TRACK":{"type":"string","description":"Set to 1 to opt out of telemetry (cross-tool convention; equivalent to DISABLE_TELEMETRY). See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"ENABLE_BETA_TRACING_DETAILED":{"type":"string","description":"Emit detailed spans including hook execution when the tracing beta is enabled. See https://code.claude.com/docs/en/monitoring-usage#traces-beta","enum":["0","1"]},"ENABLE_CLAUDEAI_MCP_SERVERS":{"type":"string","description":"Opt in/out of claude.ai MCP servers. See https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2163","enum":["true","false"]},"ENABLE_PROMPT_CACHING_1H":{"type":"string","description":"Request a 1-hour prompt cache TTL instead of the 5-minute default (billed at a higher rate). See https://code.claude.com/docs/en/prompt-caching#cache-lifetime","enum":["0","1"]},"ENABLE_TOOL_SEARCH":{"type":"string","description":"Control MCP tool search: \"true\" always defers and sends the beta header (requests fail on Google Cloud's Agent Platform models earlier than Sonnet 4.5/Opus 4.5 or on proxies that do not support tool_reference); \"auto\" loads tools upfront if they fit within 10% of context; \"auto:N\" sets a custom threshold percentage (e.g. auto:5); \"false\" loads all tools upfront. Also applies when ANTHROPIC_BASE_URL points to a non-first-party host. See https://code.claude.com/docs/en/google-vertex-ai#4-configure-claude-code"},"FALLBACK_FOR_ALL_PRIMARY_MODELS":{"type":"string","description":"Set to any non-empty value to make all models (not only Opus) stop retrying with a repeated-overload error when no fallback model is configured. See https://code.claude.com/docs/en/env-vars"},"FORCE_AUTOUPDATE_PLUGINS":{"type":"string","description":"Keep plugin auto-updates enabled even when DISABLE_AUTOUPDATER=1 is set. See https://code.claude.com/docs/en/discover-plugins#configure-auto-updates","enum":["0","1"]},"FORCE_HYPERLINK":{"type":"string","description":"Set to 1 to enable clickable OSC 8 hyperlinks when your terminal supports them but is not auto-detected, or 0 to disable them","enum":["0","1"]},"FORCE_PROMPT_CACHING_5M":{"type":"string","description":"Force a 5-minute cache TTL regardless of authentication method; overrides ENABLE_PROMPT_CACHING_1H or a managed-settings TTL. See https://code.claude.com/docs/en/prompt-caching#override-the-ttl","enum":["0","1"]},"GOOGLE_APPLICATION_CREDENTIALS":{"type":"string","description":"Path to a GCP credential configuration file (service account key or workload identity federation config) used for Google Cloud's Agent Platform authentication. See https://code.claude.com/docs/en/google-vertex-ai#3-configure-gcp-credentials"},"HTTPS_PROXY":{"type":"string","description":"HTTPS proxy URL (recommended over HTTP_PROXY)"},"HTTP_PROXY":{"type":"string","description":"HTTP proxy URL"},"IS_DEMO":{"type":"string","description":"Set to 1 to enable demo mode: hides email and organization name from the header and /status output and skips onboarding. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"MAX_MCP_OUTPUT_TOKENS":{"type":"string","description":"Maximum number of tokens allowed in MCP tool output before truncation (default: 25000). Claude Code displays a warning above 10000 tokens. For tools that declare anthropic/maxResultSizeChars, that character limit replaces this token limit for text content, but image content from those tools is still subject to this limit. See https://code.claude.com/docs/en/mcp"},"MAX_STRUCTURED_OUTPUT_RETRIES":{"type":"string","description":"Number of times to retry when the model's response fails validation against --json-schema in non-interactive (-p) mode (default 5). See https://code.claude.com/docs/en/env-vars"},"MAX_THINKING_TOKENS":{"type":"string","description":"Override the extended thinking token budget; set to 0 to disable thinking on the Anthropic API. On adaptive reasoning models (Opus 4.7+, Opus 4.8, Fable 5) a nonzero budget is ignored unless CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING is set. See https://code.claude.com/docs/en/model-config#extended-thinking"},"MCP_CLIENT_SECRET":{"type":"string","description":"OAuth client secret for MCP servers that require pre-configured credentials (avoids the interactive prompt when adding a server with --client-secret). See https://code.claude.com/docs/en/env-vars"},"MCP_CONNECTION_NONBLOCKING":{"type":"string","description":"Controls whether startup waits for MCP servers to connect before the first query. Non-blocking by default since v2.1.142; set to 0 to restore the blocking 5-second connection wait. See https://code.claude.com/docs/en/env-vars","enum":["0","1"]},"MCP_CONNECT_TIMEOUT_MS":{"type":"string","description":"How long blocking MCP startup waits in milliseconds for the connection batch before snapshotting the tool list (default 5000). Applies when MCP_CONNECTION_NONBLOCKING=0 or for alwaysLoad servers. See https://code.claude.com/docs/en/env-vars"},"MCP_OAUTH_CALLBACK_PORT":{"type":"string","description":"Fixed port for the OAuth redirect callback, as an alternative to --callback-port when adding an MCP server with pre-configured credentials. See https://code.claude.com/docs/en/env-vars"},"MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE":{"type":"string","description":"Maximum number of remote MCP servers (HTTP/SSE) to connect in parallel during startup (default 20). See https://code.claude.com/docs/en/env-vars"},"MCP_SERVER_CONNECTION_BATCH_SIZE":{"type":"string","description":"Maximum number of local MCP servers (stdio) to connect in parallel during startup (default 3). See https://code.claude.com/docs/en/env-vars"},"MCP_TIMEOUT":{"type":"string","description":"Timeout in milliseconds for MCP server startup (default 30000). See https://code.claude.com/docs/en/env-vars"},"MCP_TOOL_TIMEOUT":{"type":"string","description":"Timeout in milliseconds for MCP tool execution (default: 100000000, about 28 hours). A per-server timeout field in .mcp.json overrides this for that server. Values below 1000 are floored to one second. See https://code.claude.com/docs/en/mcp"},"NODE_EXTRA_CA_CERTS":{"type":"string","description":"Path to custom CA certificate file"},"NO_PROXY":{"type":"string","description":"Domains to bypass proxy (space or comma-separated, or '*' for all)"},"OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT":{"type":"string","description":"Standard OpenTelemetry SDK limit on attribute value length. Claude Code caps content-bearing telemetry attributes at the smaller of this and CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH, so the truncation marker stays within the SDK limit. Claude Code reads the OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT and OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT variants the same way, and the smallest set value applies to all signals. Requires Claude Code v2.1.214 or later. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_EXPORTER_OTLP_CERTIFICATE":{"type":"string","description":"Path to the CA certificate for gRPC OTLP mTLS. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE":{"type":"string","description":"Path to the client certificate for gRPC OTLP mTLS. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_CLIENT_KEY":{"type":"string","description":"Path to the client private key for gRPC OTLP mTLS. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_ENDPOINT":{"type":"string","description":"OTLP exporter endpoint for all signals (e.g. http://localhost:4317). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_EXPORTER_OTLP_HEADERS":{"type":"string","description":"Headers sent with OTLP exporter requests (e.g. Authorization=Bearer token). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE":{"type":"string","description":"Path to the client certificate for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE for logs only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY":{"type":"string","description":"Path to the client private key for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_KEY for logs only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_LOGS_ENDPOINT":{"type":"string","description":"OTLP exporter endpoint override for logs. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_EXPORTER_OTLP_LOGS_PROTOCOL":{"type":"string","description":"OTLP protocol override for logs: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["grpc","http/json","http/protobuf"]},"OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE":{"type":"string","description":"Path to the client certificate for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE for metrics only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY":{"type":"string","description":"Path to the client private key for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_KEY for metrics only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_METRICS_ENDPOINT":{"type":"string","description":"OTLP exporter endpoint override for metrics. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_EXPORTER_OTLP_METRICS_PROTOCOL":{"type":"string","description":"OTLP protocol override for metrics: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["grpc","http/json","http/protobuf"]},"OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE":{"type":"string","description":"Metrics temporality preference: delta (default) or cumulative. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["delta","cumulative"]},"OTEL_EXPORTER_OTLP_PROTOCOL":{"type":"string","description":"OTLP exporter protocol for all signals: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["grpc","http/json","http/protobuf"]},"OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE":{"type":"string","description":"Path to the client certificate for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE for traces only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY":{"type":"string","description":"Path to the client private key for gRPC OTLP mTLS, overriding OTEL_EXPORTER_OTLP_CLIENT_KEY for traces only. See https://code.claude.com/docs/en/monitoring-usage#mtls-authentication"},"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT":{"type":"string","description":"OTLP exporter endpoint override for traces. See https://code.claude.com/docs/en/monitoring-usage#traces-beta"},"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL":{"type":"string","description":"OTLP protocol override for traces: grpc, http/json, or http/protobuf. See https://code.claude.com/docs/en/monitoring-usage#traces-beta","enum":["grpc","http/json","http/protobuf"]},"OTEL_LOGS_EXPORTER":{"type":"string","description":"OpenTelemetry logs exporter(s) as a comma-separated list. Valid values: otlp, console, none. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_LOGS_EXPORT_INTERVAL":{"type":"string","description":"Logs export interval in milliseconds (default 5000). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_LOG_ASSISTANT_RESPONSES":{"type":"string","description":"UNDOCUMENTED. Include assistant response text in the claude_code.assistant_response OpenTelemetry log event (added v2.1.193). When unset, follows OTEL_LOG_USER_PROMPTS; set to 0 to keep prompts-only.","enum":["0","1"]},"OTEL_LOG_RAW_API_BODIES":{"type":"string","description":"Log raw API request/response bodies. Set to 1, or to file:<dir> to write them to a directory. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_LOG_TOOL_CONTENT":{"type":"string","description":"Include full tool input/output content in OpenTelemetry log events (requires tracing; disabled by default). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["0","1"]},"OTEL_LOG_TOOL_DETAILS":{"type":"string","description":"Include tool name and parameters in OpenTelemetry log events (disabled by default). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["0","1"]},"OTEL_LOG_USER_PROMPTS":{"type":"string","description":"Include user prompt text in OpenTelemetry log events (disabled by default). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables","enum":["0","1"]},"OTEL_METRICS_EXPORTER":{"type":"string","description":"OpenTelemetry metrics exporter(s) as a comma-separated list. Valid values: otlp, prometheus, console, none. See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_METRICS_INCLUDE_ACCOUNT_UUID":{"type":"string","description":"Include the user.account_uuid and user.account_id attributes on metrics (default true). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control","enum":["true","false"]},"OTEL_METRICS_INCLUDE_ENTRYPOINT":{"type":"string","description":"Include the app.entrypoint attribute on metrics (default false). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control","enum":["true","false"]},"OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES":{"type":"string","description":"Include configured OTEL_RESOURCE_ATTRIBUTES on metric data points (default true). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control","enum":["true","false"]},"OTEL_METRICS_INCLUDE_SESSION_ID":{"type":"string","description":"Include the session.id attribute on metrics (default true). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control","enum":["true","false"]},"OTEL_METRICS_INCLUDE_VERSION":{"type":"string","description":"Include the app.version attribute on metrics (default false). See https://code.claude.com/docs/en/monitoring-usage#metrics-cardinality-control","enum":["true","false"]},"OTEL_METRIC_EXPORT_INTERVAL":{"type":"string","description":"Metrics export interval in milliseconds (default 60000). See https://code.claude.com/docs/en/monitoring-usage#common-configuration-variables"},"OTEL_RESOURCE_ATTRIBUTES":{"type":"string","description":"Comma-separated key=value resource attributes attached to all telemetry. See https://code.claude.com/docs/en/monitoring-usage#multi-team-organization-support"},"OTEL_TRACES_EXPORTER":{"type":"string","description":"OpenTelemetry traces exporter(s) as a comma-separated list. Valid values: otlp, console, none. See https://code.claude.com/docs/en/monitoring-usage#traces-beta"},"OTEL_TRACES_EXPORT_INTERVAL":{"type":"string","description":"Traces export interval in milliseconds (default 5000). See https://code.claude.com/docs/en/monitoring-usage#traces-beta"},"SLASH_COMMAND_TOOL_CHAR_BUDGET":{"type":"string","description":"Override the character budget for skill metadata shown to the Skill tool. The budget scales dynamically at 1% of the context window, with a fallback of 8000 characters. Legacy name kept for backwards compatibility. See https://code.claude.com/docs/en/skills#control-who-invokes-a-skill"},"TASK_MAX_OUTPUT_LENGTH":{"type":"string","description":"Maximum number of characters in subagent output before truncation (default 32000, maximum 160000). When truncated, the full output is saved to disk and the path is included in the response. See https://code.claude.com/docs/en/env-vars"},"USE_BUILTIN_RIPGREP":{"type":"string","description":"Use the bundled ripgrep binary instead of system ripgrep","enum":["0","1"]},"VERTEX_REGION_CLAUDE_3_5_HAIKU":{"type":"string","description":"Override the Vertex AI region for Claude 3.5 Haiku (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_3_5_SONNET":{"type":"string","description":"Override the Vertex AI region for Claude 3.5 Sonnet (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_3_7_SONNET":{"type":"string","description":"Override the Vertex AI region for Claude 3.7 Sonnet (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_0_OPUS":{"type":"string","description":"Override the Vertex AI region for Claude 4.0 Opus (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_0_SONNET":{"type":"string","description":"Override the Vertex AI region for Claude 4.0 Sonnet (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_1_OPUS":{"type":"string","description":"Override the Vertex AI region for Claude 4.1 Opus (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_5_OPUS":{"type":"string","description":"Override the Vertex AI region for Claude Opus 4.5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_5_SONNET":{"type":"string","description":"Override the Vertex AI region for Claude Sonnet 4.5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_6_OPUS":{"type":"string","description":"Override the Vertex AI region for Claude Opus 4.6 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_6_SONNET":{"type":"string","description":"Override the Vertex AI region for Claude Sonnet 4.6 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_7_OPUS":{"type":"string","description":"Override the Vertex AI region for Claude Opus 4.7 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_4_8_OPUS":{"type":"string","description":"Override the Vertex AI region for Claude Opus 4.8 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_5_OPUS":{"type":"string","description":"Override region for Claude Opus 5 when using Google Cloud's Agent Platform (formerly Vertex AI). Added in v2.1.219. See https://code.claude.com/docs/en/google-vertex-ai"},"VERTEX_REGION_CLAUDE_5_SONNET":{"type":"string","description":"Override region for Claude Sonnet 5 when using Google Cloud's Agent Platform (formerly Vertex AI). Added in v2.1.197. See https://code.claude.com/docs/en/google-vertex-ai"},"VERTEX_REGION_CLAUDE_FABLE_5":{"type":"string","description":"Override the Vertex AI region for Claude Fable 5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"},"VERTEX_REGION_CLAUDE_HAIKU_4_5":{"type":"string","description":"Override the Vertex AI region for Claude Haiku 4.5 (used when CLOUD_ML_REGION=global). See https://code.claude.com/docs/en/env-vars"}},"propertyNames":{"pattern":"^[A-Z_][A-Z0-9_]*$"},"additionalProperties":{"type":"string","description":"Environment variable value"}},"attribution":{"type":"object","description":"Customize attribution for git commits and pull requests. See https://code.claude.com/docs/en/settings#attribution-settings","additionalProperties":false,"properties":{"commit":{"type":"string","description":"Attribution for git commits, including any trailers. Empty string hides commit attribution"},"pr":{"type":"string","description":"Attribution for pull request descriptions. Empty string hides pull request attribution"},"sessionUrl":{"type":"boolean","description":"Whether to append the claude.ai session link as a Claude-Session trailer on commits and a link in pull request descriptions when running from a web or Remote Control session. Defaults to true; set to false to omit the link. See https://code.claude.com/docs/en/settings#attribution-settings","default":true}}},"includeGitInstructions":{"type":"boolean","description":"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":{"type":"boolean","description":"DEPRECATED. Use 'attribution' instead. Whether to include the co-authored-by Claude byline in git commits and pull requests (default: true)","default":true},"plansDirectory":{"type":"string","description":"Customize where plan files are stored. Path is relative to project root (default: ~/.claude/plans)","default":"~/.claude/plans","examples":["./plans"]},"respectGitignore":{"type":"boolean","description":"Control whether the @ file picker respects .gitignore patterns. When true (default), files matching .gitignore patterns are excluded from suggestions","default":true},"permissions":{"type":"object","properties":{"allow":{"type":"array","items":{"$ref":"#/$defs/permissionRule"},"description":"List of permission rules for allowed operations","uniqueItems":true},"deny":{"type":"array","items":{"$ref":"#/$defs/permissionRule"},"description":"List of permission rules for denied operations","uniqueItems":true},"ask":{"type":"array","items":{"$ref":"#/$defs/permissionRule"},"description":"List of permission rules that should always prompt for confirmation","uniqueItems":true},"defaultMode":{"type":"string","enum":["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan","auto","manual"],"description":"Default permission mode.\n\"default\": prompts on first use.\nUNDOCUMENTED. \"manual\": accepted alias for \"default\" (the CLI/VS Code/JetBrains UI now labels this mode \"Manual\" as of v2.1.200; permission-modes.md has not yet been updated to mention it).\n\"acceptEdits\": auto-accepts file edits.\n\"plan\": read-only, no modifications.\nUNDOCUMENTED. \"delegate\": coordination-only for agent team leads (agent teams are experimental; enable via CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS).\n\"dontAsk\": auto-denies unless pre-approved via permissions.\n\"bypassPermissions\": skips all prompts (use only in isolated environments).\n\"auto\": auto-approves tool calls with background safety checks that verify actions align with your request.\nSee https://code.claude.com/docs/en/permissions"},"disableBypassPermissionsMode":{"type":"string","enum":["disable"],"description":"Disable the ability to bypass permission prompts"},"disableAutoMode":{"type":"string","enum":["disable"],"description":"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"},"additionalDirectories":{"type":"array","items":{"type":"string","minLength":1},"description":"Additional directories to include in the permission scope","examples":[["//Users/alice/Documents","~/projects"]],"uniqueItems":true}},"additionalProperties":false,"description":"Tool usage permissions configuration.\nSee https://code.claude.com/docs/en/permissions and https://code.claude.com/docs/en/settings#permission-settings\nSee https://code.claude.com/docs/en/tools-reference for full list of tools available to Claude.","examples":[{"allow":["Bash(git add:*)"],"ask":["Bash(gh pr create:*)","Bash(git commit:*)"],"deny":["Read(*.env)","Bash(rm:*)","Bash(curl:*)"],"defaultMode":"default"}]},"language":{"type":"string","description":"Configure Claude's preferred response language (e.g., \"japanese\", \"spanish\", \"french\"). Claude will respond in this language by default. Also sets the voice dictation language and terminal tab session title generation. See https://code.claude.com/docs/en/settings#available-settings","examples":["japanese","spanish","french"]},"model":{"type":"string","description":"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":{"type":"array","items":{"type":"string"},"description":"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":{"type":"object","additionalProperties":{"type":"string"},"description":"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":{"type":"string","enum":["low","medium","high","xhigh"],"description":"Persist adaptive reasoning effort across sessions. Set to low, medium, high, or xhigh; max and ultracode are session-only and are not accepted in the settings file (use the CLAUDE_CODE_EFFORT_LEVEL environment variable or /effort for a session-only max). Effort is supported on Fable 5, Opus 4.8, Opus 4.7, Opus 4.6, and Sonnet 4.6, with xhigh sitting between high and max (added in v2.1.111). Defaults: Fable 5 and Opus 4.8 default to high; 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. 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"},"fastMode":{"type":"boolean","description":"Enable fast mode, which uses Claude Opus 5 by default (since v2.1.219) for faster output at higher per-token cost without downgrading to a smaller model. Requires extra usage enabled. Toggle with the /fast command. Supported on Opus 5 and Opus 4.8; fast mode for Opus 4.7 was deprecated on June 25, 2026 and removed on July 24, 2026. Before v2.1.219 fast mode defaulted to Opus 4.8 (v2.1.154 through v2.1.218) and to Opus 4.7 (v2.1.142 through v2.1.153). See https://code.claude.com/docs/en/fast-mode","default":false},"fastModePerSessionOptIn":{"type":"boolean","description":"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":{"type":"number","minimum":0,"maximum":1,"description":"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#available-settings","examples":[0.05]},"enableAllProjectMcpServers":{"type":"boolean","description":"Whether to automatically approve all MCP servers in the project. See https://code.claude.com/docs/en/mcp","examples":[true]},"enabledMcpjsonServers":{"type":"array","items":{"type":"string","minLength":1},"description":"List of approved MCP servers from .mcp.json. See https://code.claude.com/docs/en/mcp","examples":[["memory","github"]]},"disabledMcpjsonServers":{"type":"array","items":{"type":"string","minLength":1},"description":"List of rejected MCP servers from .mcp.json. See https://code.claude.com/docs/en/mcp","examples":[["filesystem"]]},"allowedMcpServers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"serverName":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"Name of the MCP server that users are allowed to configure"}},"required":["serverName"],"additionalProperties":false},{"type":"object","properties":{"serverCommand":{"type":"array","items":{"type":"string"},"description":"Exact command and arguments used to start stdio servers"}},"required":["serverCommand"],"additionalProperties":false},{"type":"object","properties":{"serverUrl":{"type":"string","description":"URL pattern for remote servers, supports wildcards (e.g., https://*.example.com/*)"}},"required":["serverUrl"],"additionalProperties":false}]},"description":"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":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"serverName":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"Name of the MCP server that is explicitly blocked"}},"required":["serverName"],"additionalProperties":false},{"type":"object","properties":{"serverCommand":{"type":"array","items":{"type":"string"},"description":"Exact command and arguments used to start stdio servers"}},"required":["serverCommand"],"additionalProperties":false},{"type":"object","properties":{"serverUrl":{"type":"string","description":"URL pattern for remote servers, supports wildcards (e.g., https://*.example.com/*)"}},"required":["serverUrl"],"additionalProperties":false}]},"description":"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":{"type":"array","items":{"type":"string","minLength":1},"description":"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":{"type":"object","additionalProperties":false,"description":"Lifecycle event hooks that run at configurable points during Claude Code operation (tool use, session start/end, notifications, prompt submit, message display, and more), not just 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}]}]}],"properties":{"PreToolUse":{"type":"array","description":"Hooks that run before tool calls","items":{"$ref":"#/$defs/hookMatcher"}},"PostToolUse":{"type":"array","description":"Hooks that run after tool completion","items":{"$ref":"#/$defs/hookMatcher"}},"PostToolUseFailure":{"type":"array","description":"Hooks that run after a tool fails","items":{"$ref":"#/$defs/hookMatcher"}},"PermissionRequest":{"type":"array","description":"Hooks that run when a permission dialog appears","items":{"$ref":"#/$defs/hookMatcher"}},"Notification":{"type":"array","description":"Hooks that trigger on notifications","items":{"$ref":"#/$defs/hookMatcher"}},"UserPromptSubmit":{"type":"array","description":"Hooks that run when a user submits a prompt","items":{"$ref":"#/$defs/hookMatcher"}},"Stop":{"type":"array","description":"Hooks that run when agents finish responding. Does not run on user interrupt","items":{"$ref":"#/$defs/hookMatcher"}},"StopFailure":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"SubagentStart":{"type":"array","description":"Hooks that run when a subagent is spawned","items":{"$ref":"#/$defs/hookMatcher"}},"SubagentStop":{"type":"array","description":"Hooks that run when subagents finish responding","items":{"$ref":"#/$defs/hookMatcher"}},"PreCompact":{"type":"array","description":"Hooks that run before the context is compacted","items":{"$ref":"#/$defs/hookMatcher"}},"PostCompact":{"type":"array","description":"Hooks that run after the context is compacted. See https://code.claude.com/docs/en/hooks","items":{"$ref":"#/$defs/hookMatcher"}},"Elicitation":{"type":"array","description":"Hooks that run when an MCP server requests user input during a tool call. See https://code.claude.com/docs/en/hooks","items":{"$ref":"#/$defs/hookMatcher"}},"ElicitationResult":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"TeammateIdle":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"TaskCompleted":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"Setup":{"type":"array","description":"UNDOCUMENTED. Hooks that run during repository initialization (--init, --init-only) or maintenance (--maintenance)","items":{"$ref":"#/$defs/hookMatcher"}},"InstructionsLoaded":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"CwdChanged":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"FileChanged":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"ConfigChange":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"WorktreeCreate":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"WorktreeRemove":{"type":"array","description":"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","items":{"$ref":"#/$defs/hookMatcher"}},"SessionStart":{"type":"array","description":"Hooks that run when a new session starts","items":{"$ref":"#/$defs/hookMatcher"}},"SessionEnd":{"type":"array","description":"Hooks that run when a session ends","items":{"$ref":"#/$defs/hookMatcher"}},"PostToolBatch":{"type":"array","description":"Hooks that run after a full batch of parallel tool calls resolves, before the next model call. Exit code 2 blocks the agentic loop. Does not support matchers. See https://code.claude.com/docs/en/hooks","items":{"$ref":"#/$defs/hookMatcher"}},"TaskCreated":{"type":"array","description":"Hooks that run when a task is being created via TaskCreate. Exit code 2 rolls back task creation. Does not support matchers. See https://code.claude.com/docs/en/hooks#taskcreated","items":{"$ref":"#/$defs/hookMatcher"}},"PermissionDenied":{"type":"array","description":"Hooks that run when a tool call is denied by the auto mode classifier. Supports matchers on tool name. See https://code.claude.com/docs/en/hooks","items":{"$ref":"#/$defs/hookMatcher"}},"UserPromptExpansion":{"type":"array","description":"Hooks that run when a user-typed command expands into a prompt, before it reaches Claude. Exit code 2 blocks the expansion. Supports matchers on command name. See https://code.claude.com/docs/en/hooks","items":{"$ref":"#/$defs/hookMatcher"}},"MessageDisplay":{"type":"array","description":"Hooks that run while assistant message text is displayed","items":{"$ref":"#/$defs/hookMatcher"}},"DirectoryAdded":{"type":"array","description":"UNDOCUMENTED. Hooks that run after /add-dir or the SDK register_repo_root control request registers a new working directory mid-session (added v2.1.219)","items":{"$ref":"#/$defs/hookMatcher"}}}},"disableAllHooks":{"type":"boolean","description":"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":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"marketplace":{"type":"string","description":"Name of the marketplace the channel plugin is installed from"},"plugin":{"type":"string","description":"Name of the channel plugin allowed to run"}},"required":["marketplace","plugin"]},"description":"(Managed settings only) Allowlist of channel plugins that may run, each identified by its marketplace and plugin name. When set, only the listed plugins can push inbound channel messages while channelsEnabled is true. Replaces the default Anthropic allowlist when set; undefined falls back to the default and an empty array blocks all channel plugins. Requires channelsEnabled: true. See https://code.claude.com/docs/en/channels#restrict-which-channel-plugins-can-run"},"allowedHttpHookUrls":{"type":"array","items":{"type":"string","minLength":1},"description":"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":{"type":"boolean","description":"(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":{"type":"boolean","description":"(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":{"type":"object","properties":{"type":{"type":"string","description":"The type of status line handler; must be set to \"command\" to run a custom shell script that receives JSON session data via stdin.","const":"command"},"command":{"type":"string","description":"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":{"type":"number","description":"Optional number of extra horizontal spacing characters added to the status line content; defaults to 0."},"refreshInterval":{"type":"integer","minimum":1,"description":"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"},"hideVimModeIndicator":{"type":"boolean","description":"Set to true when your status line script renders the vim mode indicator itself, to suppress the built-in vim mode display. See https://code.claude.com/docs/en/statusline#manually-configure-a-status-line"}},"required":["type","command"],"additionalProperties":false,"description":"Custom status line display configuration. See https://code.claude.com/docs/en/statusline","examples":[{"type":"command","command":"~/.claude/statusline.sh"}]},"fileSuggestion":{"type":"object","properties":{"type":{"type":"string","description":"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.","const":"command"},"command":{"type":"string","description":"Shell command to execute for file suggestions"}},"required":["type","command"],"additionalProperties":false,"description":"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"}]},"enabledPlugins":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"boolean"},{"not":{}}]},"description":"Enabled plugins using plugin-id@marketplace-id format. Example: { \"formatter@anthropic-tools\": true }. See https://code.claude.com/docs/en/plugins"},"extraKnownMarketplaces":{"type":"object","additionalProperties":{"type":"object","properties":{"source":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"url"},"url":{"type":"string","format":"uri","description":"Direct URL to marketplace.json file"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"hostPattern"},"hostPattern":{"type":"string","description":"Git host pattern to trust for repositories in source specifications"}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \"main\", \"v1.0.0\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"skipLfs":{"type":"boolean","description":"Skip Git LFS downloads when Claude Code clones or updates the marketplace repository. LFS pointer files remain as pointers instead of downloading their content. Use this when the repository contains large LFS objects unrelated to plugin content. Requires Claude Code v2.1.153 or later"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"git"},"url":{"type":"string","pattern":"\\.git$","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \"main\", \"v1.0.0\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"skipLfs":{"type":"boolean","description":"Skip Git LFS downloads when Claude Code clones or updates the marketplace repository. LFS pointer files remain as pointers instead of downloading their content. Use this when the repository contains large LFS objects unrelated to plugin content. Requires Claude Code v2.1.153 or later"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"npm"},"package":{"type":"string","description":"NPM package containing marketplace.json"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"settings"},"name":{"type":"string","description":"Name of the inline marketplace"},"plugins":{"type":"array","description":"Plugins declared inline. Each must reference an external source such as GitHub or npm. You still need to enable each plugin separately in enabledPlugins","items":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name"},"source":{"description":"External source the plugin is fetched from. Inline plugins must reference external sources such as GitHub or npm, not relative paths","anyOf":[{"type":"object","properties":{"source":{"type":"string","description":"Identifies the plugin source type","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag"},"sha":{"type":"string","description":"Exact commit SHA to pin the plugin to"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the plugin source type","const":"url"},"url":{"type":"string","description":"Git URL source"},"ref":{"type":"string","description":"Git branch or tag"},"sha":{"type":"string","description":"Exact commit SHA to pin the plugin to"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the plugin source type","const":"git-subdir"},"url":{"type":"string","description":"Git repository URL"},"path":{"type":"string","description":"Subdirectory within the git repo. Clones sparsely to minimize bandwidth for monorepos"},"ref":{"type":"string","description":"Git branch or tag"},"sha":{"type":"string","description":"Exact commit SHA to pin the plugin to"}},"required":["source","url","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the plugin source type","const":"npm"},"package":{"type":"string","description":"npm package name (supports scoped packages)"},"version":{"type":"string","description":"Package version"},"registry":{"type":"string","description":"npm registry URL"}},"required":["source","package"],"additionalProperties":false}]}},"required":["name","source"],"additionalProperties":false}}},"required":["source","name","plugins"],"additionalProperties":false}],"description":"Where to fetch the marketplace from"},"installLocation":{"type":"string","description":"Local cache path where marketplace manifest is stored (auto-generated if not provided)"},"autoUpdate":{"type":"boolean","description":"Whether to automatically update this marketplace on Claude Code startup. Written automatically by Claude Code when you toggle auto-update for a marketplace"},"lastUpdated":{"type":"string","description":"ISO 8601 timestamp of the last marketplace refresh. Written automatically by Claude Code"}},"required":["source"],"additionalProperties":false},"description":"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":{"type":"array","description":"(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/plugin-marketplaces#managed-marketplace-restrictions","items":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"hostPattern"},"hostPattern":{"type":"string","description":"Git host pattern to trust for repositories in source specifications"}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch, tag, or SHA"},"path":{"type":"string","description":"Subdirectory path"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"git"},"url":{"type":"string","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch, tag, or SHA"},"path":{"type":"string","description":"Subdirectory path"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"url"},"url":{"type":"string","format":"uri","description":"Direct URL to marketplace.json"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"HTTP headers for authenticated access"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"npm"},"package":{"type":"string","description":"NPM package name (supports scoped packages)"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"file"},"path":{"type":"string","description":"Absolute path to marketplace.json file"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"directory"},"path":{"type":"string","description":"Absolute path to directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","description":"Identifies the marketplace source type","const":"pathPattern"},"pathPattern":{"type":"string","description":"Regex pattern to match file or directory paths for marketplace sources"}},"required":["source","pathPattern"],"additionalProperties":false}]},"examples":[[{"source":"github","repo":"acme-corp/approved-plugins"},{"source":"npm","package":"@acme-corp/compliance-plugins"}]]},"skippedMarketplaces":{"type":"array","items":{"type":"string","minLength":1},"description":"List of marketplace names the user has chosen not to install when prompted. See https://code.claude.com/docs/en/discover-plugins"},"skippedPlugins":{"type":"array","items":{"type":"string","minLength":1},"description":"List of plugin IDs (plugin@marketplace format) the user has chosen not to install when prompted. See https://code.claude.com/docs/en/discover-plugins"},"forceLoginMethod":{"type":"string","enum":["claudeai","console","gateway"],"description":"Use \"claudeai\" to restrict login to Claude.ai accounts, \"console\" to restrict login to Claude Console accounts, or \"gateway\" to restrict login to a cloud gateway. On Claude Code v2.1.212 or later, every first-party login path enforces the restriction, including the VS Code extension, the Agent SDK, `claude setup-token`, and /install-github-app; before v2.1.212, only terminal logins enforced it. See https://code.claude.com/docs/en/authentication#restrict-login-to-your-organization","examples":["claudeai"]},"forceLoginOrgUUID":{"oneOf":[{"type":"string","minLength":1},{"type":"array","items":{"type":"string","minLength":1}}],"description":"Organization UUID to use for OAuth login, or an array of UUIDs to allow several organizations. An empty array fails closed and blocks every login. See https://code.claude.com/docs/en/authentication#restrict-login-to-your-organization","examples":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"]},"otelHeadersHelper":{"type":"string","description":"Path to an executable, or a shell command line with arguments, that outputs OpenTelemetry headers as a JSON object. Runs at startup and re-runs on the interval set by CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS. Requires CLAUDE_CODE_ENABLE_TELEMETRY=1. See https://code.claude.com/docs/en/monitoring-usage#dynamic-headers","minLength":1},"outputStyle":{"type":"string","description":"Controls the output style for assistant responses. Built-in styles: default, Proactive, 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","Proactive","Explanatory","Learning"],"minLength":1},"skipWebFetchPreflight":{"type":"boolean","description":"Skip the WebFetch blocklist check for enterprise environments with restrictive security policies. See https://code.claude.com/docs/en/settings#available-settings"},"sandbox":{"type":"object","description":"Sandbox execution configuration. See https://code.claude.com/docs/en/sandboxing","properties":{"network":{"type":"object","description":"Configures network isolation settings for the sandboxed bash environment, including domain restrictions, Unix socket access, and custom proxy configuration.","properties":{"allowUnixSockets":{"type":"array","items":{"type":"string"},"description":"Allow Unix domain sockets for local IPC (SSH agent, Docker, etc.). Provide an array of specific paths. Defaults to blocking if not specified. See https://code.claude.com/docs/en/sandboxing#network-isolation"},"allowLocalBinding":{"type":"boolean","description":"Allow binding to local network addresses (e.g., localhost ports). Defaults to false if not specified. See https://code.claude.com/docs/en/sandboxing#network-isolation"},"httpProxyPort":{"type":"integer","minimum":1,"maximum":65535,"description":"HTTP proxy port to use for network filtering. If not specified, a proxy server will be started automatically. See https://code.claude.com/docs/en/sandboxing#custom-proxy-configuration"},"socksProxyPort":{"type":"integer","minimum":1,"maximum":65535,"description":"SOCKS proxy port to use for network filtering. If not specified, a proxy server will be started automatically. See https://code.claude.com/docs/en/sandboxing#custom-proxy-configuration"},"allowAllUnixSockets":{"type":"boolean","description":"Allow all Unix domain socket connections. If true, this overrides allowUnixSockets. See https://code.claude.com/docs/en/sandboxing#network-isolation"},"allowedDomains":{"type":"array","items":{"type":"string","minLength":1},"description":"Allowlist of network domains for sandboxed commands. Supports wildcard patterns like *.example.com. See https://code.claude.com/docs/en/sandboxing#network-isolation"},"deniedDomains":{"type":"array","items":{"type":"string","minLength":1},"description":"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#network-isolation"},"allowManagedDomainsOnly":{"type":"boolean","description":"(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. See https://code.claude.com/docs/en/sandboxing#network-isolation"},"allowMachLookup":{"type":"array","items":{"type":"string","minLength":1},"description":"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/sandboxing#network-isolation","examples":[["com.apple.coresimulator.*"]]},"tlsTerminate":{"type":"object","description":"Experimental. Terminate TLS inside the sandbox proxy so it can read the contents of HTTPS requests. Required for mask credential substitution. Set {} to generate an ephemeral certificate authority for the session, or set caCertPath and caKeyPath to use your own. Only honored from user, managed, or CLI --settings settings, not from .claude/settings.json or .claude/settings.local.json. Requires Claude Code v2.1.199 or later. See https://code.claude.com/docs/en/sandboxing#protect-credentials","properties":{"caCertPath":{"type":"string","description":"Path to your own certificate authority certificate"},"caKeyPath":{"type":"string","description":"Path to your own certificate authority private key"}},"additionalProperties":false},"strictAllowlist":{"type":"boolean","description":"UNDOCUMENTED. Deny non-allowlisted hosts for sandboxed commands without prompting (added v2.1.219). See https://code.claude.com/docs/en/sandboxing#network-isolation"}},"additionalProperties":false},"ignoreViolations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"description":"List of filesystem paths to ignore sandbox violations for when this command pattern matches"},"description":"Map of command patterns to filesystem paths to ignore violations for. Use \"*\" to match all commands"},"excludedCommands":{"type":"array","items":{"type":"string"},"description":"Commands that should never run in the sandbox (e.g., [\"git\", \"docker\"]). See https://code.claude.com/docs/en/sandboxing#configure-sandboxing"},"autoAllowBashIfSandboxed":{"type":"boolean","description":"Automatically allow bash commands without prompting when they run in the sandbox. Only applies to commands that will run sandboxed. See https://code.claude.com/docs/en/sandboxing#sandbox-modes","default":true},"enableWeakerNetworkIsolation":{"type":"boolean","description":"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/sandboxing","default":false},"enableWeakerNestedSandbox":{"type":"boolean","description":"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). See https://code.claude.com/docs/en/sandboxing#limitations"},"allowUnsandboxedCommands":{"type":"boolean","description":"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. See https://code.claude.com/docs/en/sandboxing#limitations"},"enabled":{"type":"boolean","description":"Enable sandboxed bash. See https://code.claude.com/docs/en/sandboxing#enable-sandboxing"},"filesystem":{"type":"object","description":"Filesystem access control for sandboxed commands. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation","properties":{"allowWrite":{"type":"array","items":{"type":"string","minLength":1},"description":"Paths where subprocesses are allowed to write. Supports prefixes: // (absolute), ~/ (home directory), / (relative to settings file), ./ or no prefix (relative path). See https://code.claude.com/docs/en/sandboxing#granting-subprocess-write-access-to-specific-paths"},"denyWrite":{"type":"array","items":{"type":"string","minLength":1},"description":"Paths where subprocesses are explicitly denied write access. Takes precedence over allowWrite. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation"},"denyRead":{"type":"array","items":{"type":"string","minLength":1},"description":"Paths where subprocesses are explicitly denied read access. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation"},"allowRead":{"type":"array","items":{"type":"string","minLength":1},"description":"Paths to re-allow reading within denyRead regions. Takes precedence over denyRead for matching paths. See https://code.claude.com/docs/en/sandboxing#granting-subprocess-write-access-to-specific-paths"},"allowManagedReadPathsOnly":{"type":"boolean","description":"(Managed settings only) When true, only allowRead paths from managed settings are used; user, project, and local allowRead entries are ignored. denyRead still merges from all sources. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation"},"disabled":{"type":"boolean","description":"Skip filesystem isolation while keeping network isolation: sandboxed commands get unrestricted read and write access to the host filesystem, and network egress stays confined to network.allowedDomains. Only honored from user, managed, or CLI --settings settings (default: false). Requires Claude Code v2.1.216 or later. See https://code.claude.com/docs/en/sandboxing#disable-filesystem-isolation","default":false}},"additionalProperties":false},"ripgrep":{"type":"object","description":"Custom ripgrep configuration for Claude Code's bundled ripgrep support. Overrides the bundled binary and arguments.","additionalProperties":false,"required":["command"],"properties":{"command":{"type":"string","description":"Path to the ripgrep binary to use","minLength":1},"args":{"type":"array","items":{"type":"string"},"description":"Additional arguments to pass to the ripgrep binary"}}},"bwrapPath":{"type":"string","minLength":1,"description":"(Managed setting only) Path to custom bubblewrap (bwrap) binary for Linux/WSL sandbox. Overrides default. See https://code.claude.com/docs/en/server-managed-settings"},"socatPath":{"type":"string","minLength":1,"description":"(Managed setting only) Path to custom socat binary for Linux/WSL network proxying. Overrides default. See https://code.claude.com/docs/en/server-managed-settings"},"failIfUnavailable":{"type":"boolean","description":"When true, make sandbox startup a hard failure if required sandbox dependencies are missing. Default: false (sandbox is skipped with a warning). See https://code.claude.com/docs/en/sandboxing#enable-sandboxing"},"enabledPlatforms":{"type":"array","items":{"type":"string","enum":["macos","linux","wsl","windows"]},"description":"Limit the entire sandbox configuration to the listed platforms. On platforms not in the list the sandbox config is inert: no sandbox, no auto-allow, no startup warning, and no failIfUnavailable exit. When omitted, all supported platforms are included. Only honored from managed (policy) settings."},"credentials":{"type":"object","additionalProperties":false,"description":"Block sandboxed commands from reading credential files and secret environment variables (v2.1.187+). Entries merge across settings scopes. See https://code.claude.com/docs/en/sandboxing#protect-credentials","properties":{"files":{"type":"array","description":"Credential file paths to hide from sandboxed commands","items":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","description":"Path to the credential file to deny"},"mode":{"type":"string","enum":["deny"],"description":"Access mode; only \"deny\" is supported"}},"required":["path","mode"]}},"envVars":{"type":"array","description":"Secret environment variable names to unset for sandboxed commands","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"Environment variable name to deny"},"mode":{"type":"string","enum":["deny"],"description":"Access mode; only \"deny\" is supported"}},"required":["name","mode"]}},"allowPlaintextInject":{"type":"boolean","description":"Allow mask substitution on plain HTTP requests as well as TLS-terminated HTTPS. On plain HTTP the upstream identity is unverified and the credential travels in cleartext, so leave this off outside trusted test networks. Only honored from user, managed, or CLI --settings settings, not from .claude/settings.json or .claude/settings.local.json (default: false). Requires Claude Code v2.1.199 or later. See https://code.claude.com/docs/en/sandboxing#protect-credentials","default":false}}},"allowAppleEvents":{"type":"boolean","description":"Allow sandboxed commands to send Apple Events on macOS (v2.1.181+). Honored only from user, managed, or CLI settings; project settings cannot enable it. See https://code.claude.com/docs/en/sandboxing#limitations"}},"additionalProperties":false},"spinnerVerbs":{"type":"object","description":"Customize the verbs shown in spinner progress messages","properties":{"mode":{"type":"string","enum":["append","replace"],"description":"How to combine custom verbs with default spinner verbs: 'append' adds custom verbs to the default list, 'replace' uses only custom verbs"},"verbs":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"Custom verbs used in spinner progress text"}},"required":["verbs"],"additionalProperties":false},"spinnerTipsEnabled":{"type":"boolean","description":"Show tips in the spinner while Claude is working. Set to false to disable tips (default: true)","default":true},"spinnerTipsOverride":{"type":"object","description":"Customize the tips displayed in the spinner while Claude is working. See https://code.claude.com/docs/en/settings#available-settings","properties":{"excludeDefault":{"type":"boolean","description":"If true, only show custom tips. If false or absent, custom tips merge with built-in tips","default":false},"tips":{"type":"array","items":{"type":"string","minLength":1},"description":"Custom tip strings to display in the spinner","minItems":1}},"required":["tips"],"additionalProperties":false},"terminalProgressBarEnabled":{"type":"boolean","description":"Enable the terminal progress bar that shows progress in supported terminals like Windows Terminal and iTerm2 (default: true)","default":true},"showTurnDuration":{"type":"boolean","description":"Show turn duration messages after responses (e.g., \"Cooked for 1m 6s\"). Set to false to hide these messages (default: true)","default":true},"skillOverrides":{"type":"object","additionalProperties":{"type":"string","enum":["on","name-only","user-invocable-only","off"]},"description":"Per-skill visibility overrides. Controls whether skills appear to Claude and in the / picker. Values: 'on' (name and description shown, default), 'name-only' (name only), 'user-invocable-only' (hidden from Claude, visible in /), 'off' (hidden everywhere). Plugin skills are not affected by this setting. See https://code.claude.com/docs/en/skills#override-skill-visibility-from-settings","examples":[{"legacy-context":"name-only","deploy":"off"}]},"prefersReducedMotion":{"type":"boolean","description":"Reduce or disable UI animations (spinners, shimmer, flash effects) for accessibility","default":false},"prUrlTemplate":{"type":"string","description":"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#available-settings","examples":["https://reviews.example.com/{owner}/{repo}/pull/{number}"]},"alwaysThinkingEnabled":{"type":"boolean","description":"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":{"type":"array","items":{"type":"string","minLength":1},"description":"Company announcements to display at startup (one will be randomly selected if multiple are provided)"},"teammateMode":{"type":"string","enum":["auto","in-process","tmux","iterm2"],"description":"How agent team teammates display: \"auto\" picks split panes in tmux or iTerm2, in-process otherwise; \"iterm2\" (added in v2.1.186) forces iTerm2 native split panes and requires the it2 CLI (it shows an error with the install command if it2 is missing). The default is \"in-process\" (it was \"auto\" before v2.1.179). 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#choose-a-display-mode","default":"in-process"},"worktree":{"type":"object","additionalProperties":false,"description":"Configuration for --worktree sessions. See https://code.claude.com/docs/en/settings#worktree-settings","properties":{"sparsePaths":{"type":"array","items":{"type":"string","minLength":1},"description":"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. See https://code.claude.com/docs/en/settings#worktree-settings","examples":[["packages/my-app","shared/utils"]]},"baseRef":{"type":"string","enum":["fresh","head"],"default":"fresh","description":"Whether to branch worktrees from origin/<default> (fresh) or local HEAD (head). Default: fresh. Set to 'head' to preserve unpushed commits in new worktrees. See https://code.claude.com/docs/en/settings#worktree-settings"},"bgIsolation":{"type":"string","enum":["worktree","none"],"default":"worktree","description":"Isolation mode for background sessions. \"worktree\" blocks Edit/Write in main checkout until EnterWorktree is called; \"none\" lets background jobs edit the working copy directly without EnterWorktree, for repos where worktrees are impractical. See https://code.claude.com/docs/en/settings#worktree-settings"},"symlinkDirectories":{"type":"array","items":{"type":"string"},"description":"Directories to symlink from the main repository into each worktree to avoid duplicating large directories on disk. No directories are symlinked by default. See https://code.claude.com/docs/en/settings#worktree-settings","examples":[["node_modules",".cache"]]}}},"parentSettingsBehavior":{"type":"string","enum":["first-wins","merge"],"default":"first-wins","description":"(Admin/managed settings only) Controls how SDK managedSettings (parent tier) merge with inherited settings. 'first-wins': first non-empty value applies (default). 'merge': merge arrays and objects. See https://code.claude.com/docs/en/server-managed-settings"},"pluginTrustMessage":{"type":"string","description":"(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":{"type":"object","additionalProperties":{"type":"object","properties":{"mcpServers":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}},"description":"User configuration values for MCP servers keyed by server name"},"options":{"type":"object","description":"Non-sensitive option values from the plugin manifest's userConfig, keyed by option name. Sensitive values go to secure storage instead. See https://code.claude.com/docs/en/plugins-reference","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}}},"additionalProperties":false},"description":"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":{"type":"boolean","description":"(Managed settings only) When true, only allowedMcpServers from managed settings are respected; MCP servers defined in user, project, or local settings are ignored. deniedMcpServers still merges from all sources. See https://code.claude.com/docs/en/managed-mcp"},"blockedMarketplaces":{"type":"array","description":"(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.","items":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"url","description":"Block marketplace fetched from direct URL"},"url":{"type":"string","format":"uri","description":"Direct URL to marketplace.json file"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., for authentication)"}},"required":["source","url"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"github","description":"Block marketplace from GitHub repository"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use"},"path":{"type":"string","description":"Path to marketplace.json within repo"}},"required":["source","repo"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"git","description":"Block marketplace from git repository URL"},"url":{"type":"string","pattern":".*\\.git$","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use"},"path":{"type":"string","description":"Path to marketplace.json within repo"}},"required":["source","url"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"npm","description":"Block marketplace from NPM package"},"package":{"type":"string","description":"NPM package containing marketplace.json"}},"required":["source","package"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"file","description":"Block marketplace from local file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"directory","description":"Block marketplace from local directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"hostPattern","description":"Block marketplace by host pattern matching"},"hostPattern":{"type":"string","description":"Regex pattern to match the host/domain extracted from any marketplace source type"}},"required":["source","hostPattern"]},{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","const":"pathPattern","description":"Block marketplace by file/directory path pattern matching"},"pathPattern":{"type":"string","description":"Regex pattern to match file or directory paths for marketplace sources"}},"required":["source","pathPattern"]}]}},"agent":{"type":"string","description":"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":{"type":"string","description":"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/<sanitized-cwd>/memory/ when unset. See https://code.claude.com/docs/en/memory","minLength":1},"autoMode":{"type":"object","description":"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","additionalProperties":false,"properties":{"allow":{"type":"array","items":{"type":"string"},"description":"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":{"type":"array","items":{"type":"string"},"description":"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":{"type":"array","items":{"type":"string"},"description":"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."},"hard_deny":{"type":"array","items":{"type":"string"},"description":"Rules for the auto mode classifier hard-deny section. Hard-deny rules block unconditionally regardless of user intent. Replaces the built-in hard-deny rules entirely unless the literal string \"$defaults\" is included as an entry, which splices the built-in defaults in at that position. See https://code.claude.com/docs/en/permissions"},"classifyAllShell":{"type":"boolean","description":"UNDOCUMENTED. Route all Bash/PowerShell commands through the auto mode classifier instead of only arbitrary-code-execution patterns (added in v2.1.193).","default":false}}},"channelsEnabled":{"type":"boolean","description":"(Managed settings only) Allow channels for the organization. On claude.ai Team and Enterprise plans, channels are blocked when this is unset or false. For Anthropic Console accounts using API key authentication, channels are allowed by default unless the organization deploys managed settings, in which case this key must be set to true. See https://code.claude.com/docs/en/channels#enterprise-controls"},"defaultShell":{"type":"string","enum":["bash","powershell"],"description":"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#available-settings"},"disableDeepLinkRegistration":{"type":"string","enum":["disable"],"description":"Set to \"disable\" to prevent Claude Code from registering the `claude-cli://` deep-link protocol handler on startup. Most useful in managed settings where users cannot override it. See https://code.claude.com/docs/en/settings#available-settings"},"disableSkillShellExecution":{"type":"boolean","description":"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#available-settings"},"forceRemoteSettingsRefresh":{"type":"boolean","description":"(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":{"type":"string","description":"Minimum Claude Code version to stay on. Prevents downgrades when switching release channels. See https://code.claude.com/docs/en/settings#available-settings","examples":["2.1.0"],"minLength":1},"showClearContextOnPlanAccept":{"type":"boolean","description":"When true, the plan-approval dialog offers a \"clear context\" option. Defaults to false.","default":false},"showThinkingSummaries":{"type":"boolean","description":"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#available-settings","default":false},"skipDangerousModePermissionPrompt":{"type":"boolean","description":"Whether the user has accepted the bypass permissions mode dialog. Typically managed by the CLI rather than set by hand."},"strictPluginOnlyCustomization":{"description":"(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","anyOf":[{"type":"boolean"},{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["skills","agents","hooks","mcp"]}}]},"tui":{"type":"string","enum":["fullscreen","default"],"description":"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#available-settings"},"viewMode":{"type":"string","enum":["default","verbose","focus"],"description":"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#available-settings"},"useAutoModeDuringPlan":{"type":"boolean","description":"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":{"type":"boolean","description":"Legacy alias for voice.enabled; prefer the voice object. Requires a Claude.ai account. See https://code.claude.com/docs/en/settings#available-settings"},"wslInheritsWindowsSettings":{"type":"boolean","description":"(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#available-settings"},"subagentStatusLine":{"type":"object","additionalProperties":false,"description":"Status line configuration for subagent sessions. See https://code.claude.com/docs/en/statusline#subagent-status-lines","required":["type","command"],"properties":{"type":{"type":"string","const":"command","description":"Must be \"command\""},"command":{"type":"string","description":"Shell command to run for the subagent status line","minLength":1}}},"advisorModel":{"type":"string","description":"Model for the server-side advisor tool. Accepts a model alias (\"opus\", \"sonnet\", or \"fable\" on v2.1.170+) or a full model ID. Overridden by the --advisor CLI flag for the session, and blocked when the model is outside the availableModels allowlist. See https://code.claude.com/docs/en/advisor"},"autoCompactEnabled":{"type":"boolean","description":"Automatically compact the conversation when context approaches the limit. Also configurable via the DISABLE_AUTO_COMPACT environment variable. See https://code.claude.com/docs/en/settings#available-settings","default":true},"disableAgentView":{"type":"boolean","description":"(Managed settings) Turn off background agents and the agent view: claude agents, --bg, /background, and the on-demand supervisor. Also configurable via the CLAUDE_CODE_DISABLE_AGENT_VIEW environment variable (set to 1 to disable). See https://code.claude.com/docs/en/agent-view"},"editorMode":{"type":"string","enum":["normal","vim"],"description":"Key binding mode for the input prompt: \"normal\" or \"vim\". Appears in /config as Editor mode. See https://code.claude.com/docs/en/terminal-config#edit-prompts-with-vim-keybindings","default":"normal"},"enforceAvailableModels":{"type":"boolean","description":"(Managed settings) Extend the availableModels allowlist to the Default model option (requires v2.1.175+). Requires a non-empty availableModels list; when the account-type default is not in the allowlist, Default resolves to the first allowed entry instead. Has no effect when availableModels is unset or empty. See https://code.claude.com/docs/en/model-config#enforce-the-allowlist-for-the-default-model"},"fallbackModel":{"type":"array","maxItems":3,"items":{"type":"string"},"description":"Fallback model chain tried in order when the primary model is overloaded, unavailable, or returns a non-retryable server error. Capped at three entries after deduplication; accepts model names or aliases, and \"default\" expands to the account-type default. Overridden by the --fallback-model CLI flag for the session. See https://code.claude.com/docs/en/model-config#fallback-model-chains"},"fileCheckpointingEnabled":{"type":"boolean","description":"Snapshot edited files so /rewind can restore them. Also configurable via the CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING environment variable (set to 1 to disable). See https://code.claude.com/docs/en/checkpointing","default":true},"gcpAuthRefresh":{"type":"string","description":"Command to run when GCP credentials are expired or cannot be loaded. The command's output is displayed to the user but interactive input is not supported; it times out after three minutes. See https://code.claude.com/docs/en/google-vertex-ai#advanced-credential-configuration","examples":["gcloud auth application-default login"],"minLength":1},"managedMcpServers":{"type":"array","description":"(Managed settings, third-party Desktop deployments only) MCP server configurations pushed to all users. Each entry specifies the transport and connection details, plus an optional toolPolicy map. Delivered through the managed settings file or MDM. See https://code.claude.com/docs/en/desktop#enterprise-configuration","items":{"type":"object","additionalProperties":true}},"skillListingMaxDescChars":{"type":"integer","exclusiveMinimum":0,"description":"Per-skill character cap on the combined description and when_to_use text in the skill listing Claude sees each turn. Text longer than this is truncated. See https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short","default":1536},"preferredNotifChannel":{"type":"string","enum":["auto","terminal_bell","iterm2","iterm2_with_bell","kitty","ghostty","notifications_disabled"],"description":"Method for task-complete and permission-prompt notifications. \"auto\" (default) sends a desktop notification in iTerm2, Ghostty, and Kitty and does nothing in other terminals; \"terminal_bell\" rings the bell in any terminal; \"notifications_disabled\" turns them off. See https://code.claude.com/docs/en/terminal-config#get-a-terminal-bell-or-notification","default":"auto"},"pluginSuggestionMarketplaces":{"type":"array","items":{"type":"string"},"description":"(Managed settings only) Allowlist of marketplace names whose plugins may surface as contextual \"suggested for this directory\" tips in the /plugin Discover tab. No marketplace-declared suggestions surface without this allowlist. The built-in first-party frontend-design tip is unaffected. See https://code.claude.com/docs/en/settings#available-settings"},"requiredMaximumVersion":{"type":"string","description":"(Managed settings only) Maximum Claude Code version allowed to start. If the running version is newer, Claude Code exits at startup with instructions to install an approved version. See https://code.claude.com/docs/en/admin-setup#decide-what-to-enforce"},"requiredMinimumVersion":{"type":"string","description":"(Managed settings only) Minimum Claude Code version required to start. If the running version is older, Claude Code exits at startup rather than only warning. See https://code.claude.com/docs/en/admin-setup#decide-what-to-enforce"},"respondToBashCommands":{"type":"boolean","description":"Whether Claude responds after an input-box ! shell command runs (v2.1.186+). Set to false to add the command output to context without a response. See https://code.claude.com/docs/en/interactive-mode#shell-mode-with--prefix","default":true},"skillListingBudgetFraction":{"type":"number","exclusiveMinimum":0,"maximum":1,"description":"Fraction of the model context window reserved for the skill listing sent to Claude (default 0.01 = 1%). When the listing exceeds this, descriptions are shortened to fit. Also configurable via the SLASH_COMMAND_TOOL_CHAR_BUDGET environment variable (fixed character count). See https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short","default":0.01},"sshConfigs":{"type":"array","description":"(Managed settings) Pre-configured SSH connections distributed to Desktop users. See https://code.claude.com/docs/en/desktop#ssh-sessions","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"Unique identifier for this SSH config, used to match configs across settings sources"},"name":{"type":"string","description":"Display name for the SSH connection"},"sshHost":{"type":"string","description":"SSH host in the form \"user@hostname\" or \"hostname\", or a host alias from ~/.ssh/config"},"sshPort":{"type":"integer","description":"SSH port (default 22)"},"sshIdentityFile":{"type":"string","description":"Path to the SSH identity file (private key)"},"startDirectory":{"type":"string","description":"Default working directory on the remote host; supports tilde expansion. Defaults to the remote user home directory"}},"required":["id","name","sshHost"]}},"sshHostAllowlist":{"type":"array","items":{"type":"string"},"description":"(Managed settings only) Allowlist restricting Desktop SSH sessions to approved hosts. Patterns are case-insensitive; * matches any host and *.example.com matches example.com and any subdomain. See https://code.claude.com/docs/en/desktop#ssh-sessions"},"theme":{"anyOf":[{"type":"string","enum":["auto","dark","light","dark-daltonized","light-daltonized","dark-ansi","light-ansi"]},{"type":"string","pattern":"^custom:.+","description":"Reference to a custom theme defined in ~/.claude/themes/, in the form \"custom:<slug>\""}],"description":"Color theme for the interface: auto, dark, light, the daltonized variants (deuteranopia-friendly), the ansi variants (16-color terminals), or a custom theme reference such as custom:<slug> or custom:<plugin-name>:<slug>. See https://code.claude.com/docs/en/terminal-config#match-the-color-theme","default":"dark"},"voice":{"type":"object","additionalProperties":false,"description":"Voice dictation settings: enabled turns dictation on, mode selects \"hold\" or \"tap\", and autoSubmit sends the prompt on key release in hold mode. Written automatically when you run /voice. Requires a Claude.ai account. See https://code.claude.com/docs/en/voice-dictation","properties":{"enabled":{"type":"boolean","description":"Enable push-to-talk voice dictation input"},"mode":{"type":"string","enum":["hold","tap"],"description":"Recording mode: \"hold\" (default) is push-to-talk; \"tap\" taps once to start and again to stop and submit"},"autoSubmit":{"type":"boolean","description":"In hold mode, auto-submit the prompt on key release when the transcript is at least three words long"}}},"wheelScrollAccelerationEnabled":{"type":"boolean","description":"In fullscreen rendering, accelerate mouse-wheel scroll speed during fast scrolls (v2.1.174+). Set to false for a constant scroll rate per wheel notch. See https://code.claude.com/docs/en/fullscreen#mouse-wheel-scrolling"},"disableBundledSkills":{"type":"boolean","description":"Disable the skills and workflows that ship with Claude Code: bundled skills and workflows are removed entirely, while built-in slash commands like /init stay typable but are hidden from the model. Skills from plugins, .claude/skills/, and .claude/commands/ are unaffected. Also configurable via the CLAUDE_CODE_DISABLE_BUNDLED_SKILLS environment variable. See https://code.claude.com/docs/en/settings#available-settings"},"awaySummaryEnabled":{"type":"boolean","description":"Show a one-line session recap when you return to the terminal after a few minutes away. Set to false (or turn off Session recap in /config) to disable. See https://code.claude.com/docs/en/settings#available-settings","default":true},"autoScrollEnabled":{"type":"boolean","description":"In fullscreen rendering, follow new output to the bottom of the conversation. Appears in /config as Auto-scroll. Permission prompts still scroll into view when this is off. See https://code.claude.com/docs/en/fullscreen","default":true},"allowAllClaudeAiMcps":{"type":"boolean","description":"(Managed settings only) Load claude.ai connectors alongside a deployed managed-mcp.json, which otherwise takes exclusive control and suppresses them. See https://code.claude.com/docs/en/managed-mcp"},"agentPushNotifEnabled":{"type":"boolean","description":"When Remote Control is connected, allow Claude to send proactive push notifications to your phone, for example when a long task finishes. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/remote-control#mobile-push-notifications","default":false},"axScreenReader":{"type":"boolean","description":"Render screen-reader-friendly output: flat text without decorative borders or animations screen-reader mode always uses the classic renderer, so the tui setting has no effect while it is active. The CLAUDE_AX_SCREEN_READER environment variable and --ax-screen-reader flag take precedence. Requires Claude Code v2.1.181 or later. See https://code.claude.com/docs/en/settings#available-settings"},"claudeMd":{"type":"string","description":"(Managed settings only) CLAUDE.md-style instructions injected as organization-managed memory. Honored only from managed/policy settings. See https://code.claude.com/docs/en/settings#available-settings"},"disableArtifact":{"type":"boolean","description":"Disable the Artifact tool, which publishes session output as a private web page on claude.ai. Also configurable via the CLAUDE_CODE_DISABLE_ARTIFACT environment variable. See https://code.claude.com/docs/en/settings#available-settings"},"disableAutoMode":{"type":"string","enum":["disable"],"description":"Set to \"disable\" to prevent auto mode from being activated: removes auto from the Shift+Tab cycle and rejects --permission-mode auto at startup. See https://code.claude.com/docs/en/settings#available-settings"},"disableClaudeAiConnectors":{"type":"boolean","description":"Disable claude.ai MCP connectors so they are not auto-fetched or connected. A value of true in any settings source takes precedence. Requires Claude Code v2.1.182 or later. See https://code.claude.com/docs/en/settings#available-settings"},"disableRemoteControl":{"type":"boolean","description":"Disable Remote Control: blocks claude remote-control, the --remote-control flag, auto-start, and the in-session toggle. Requires Claude Code v2.1.128 or later. See https://code.claude.com/docs/en/remote-control"},"disableWorkflows":{"type":"boolean","description":"Disable dynamic workflows and bundled workflow commands. Also configurable via the CLAUDE_CODE_DISABLE_WORKFLOWS environment variable. See https://code.claude.com/docs/en/settings#available-settings","default":false},"footerLinksRegexes":{"type":"array","description":"Render extra clickable badges in the footer when a regex matches turn output (tool results and assistant responses). Read from user, --settings flag, and managed settings only; ignored in project and local settings. Requires Claude Code v2.1.176 or later. See https://code.claude.com/docs/en/settings#available-settings","items":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","const":"regex","description":"Config variant; \"regex\" matches turn output and builds a URL from named capture groups"},"pattern":{"type":"string","description":"Regex matched against turn output"},"url":{"type":"string","description":"Link target; {name} placeholders are filled from named regex capture groups"},"label":{"type":"string","description":"Badge text; {name} placeholders filled from named capture groups, defaults to the full match"}},"required":["pattern","url"]}},"inputNeededNotifEnabled":{"type":"boolean","description":"When Remote Control is connected, send a push notification to your phone when a permission prompt or question is waiting for input. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/settings#available-settings","default":false},"policyHelper":{"type":"object","additionalProperties":false,"description":"Admin-deployed executable that computes managed settings dynamically at startup. Honored only from MDM or the system managed-settings.json. Requires Claude Code v2.1.136 or later. See https://code.claude.com/docs/en/settings#available-settings","properties":{"path":{"type":"string","description":"Absolute path to the policy helper executable"},"timeoutMs":{"type":"integer","description":"How long in milliseconds to wait for the helper before treating the run as failed"},"refreshIntervalMs":{"description":"How often in milliseconds to re-run the helper in the background; set to 0 to disable refresh, or to at least 60000","anyOf":[{"type":"integer","const":0},{"type":"integer","minimum":60000}]}},"required":["path"]},"remoteControlAtStartup":{"type":"boolean","description":"Connect Remote Control automatically when each interactive session starts. true = always, false = never, unset = organization default. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/remote-control#enable-remote-control-for-all-sessions"},"syntaxHighlightingDisabled":{"type":"boolean","description":"Disable syntax highlighting in diffs, code blocks, and file previews. See https://code.claude.com/docs/en/settings#available-settings"},"verbose":{"type":"boolean","description":"Show full tool output instead of truncated summaries. The --verbose flag overrides this for a single session. Requires Claude Code v2.1.119 or later. See https://code.claude.com/docs/en/settings#available-settings","default":false},"workflowKeywordTriggerEnabled":{"type":"boolean","description":"Whether including the keyword \"ultracode\" in a prompt triggers a dynamic workflow. Requires Claude Code v2.1.157 or later. See https://code.claude.com/docs/en/settings#available-settings","default":true},"askUserQuestionTimeout":{"type":"string","description":"Idle time before an unanswered AskUserQuestion dialog auto-continues with whatever options you had already selected. Accepts \"60s\", \"5m\", \"10m\", or \"never\" (default: \"never\", which waits until you answer). Appears in /config as Question auto-continue timeout, which writes this key to user settings. Not read from project or local settings. Requires Claude Code v2.1.200 or later. See https://code.claude.com/docs/en/settings#available-settings","enum":["60s","5m","10m","never"],"default":"never"},"teammateDefaultModel":{"type":["string","null"],"description":"Default model for agent team teammates when the spawn prompt does not specify one. Set to a model alias such as \"sonnet\", or null to inherit the lead's current /model selection. Appears in /config as Default teammate model. See https://code.claude.com/docs/en/agent-teams","examples":["sonnet"]},"workflowSizeGuideline":{"type":"string","description":"Sets the agent count Claude aims for in the dynamic workflows it writes. Claude Code sends the value to Claude as advice, not an enforced cap. Accepts \"unrestricted\" (default, which sends no guideline), \"small\", \"medium\", or \"large\". Appears in /config as Dynamic workflow size, and can be set with /config workflowSizeGuideline=small. Requires Claude Code v2.1.202 or later. On v2.1.203 or later the guideline's agent count also replaces the default threshold for the Large workflow warning. See https://code.claude.com/docs/en/workflows#set-a-size-guideline","enum":["unrestricted","small","medium","large"],"default":"unrestricted"},"enableArtifact":{"type":"boolean","description":"Enable or disable the Artifact tool for this user. When unset, the default follows the feature's availability for your account. The Artifacts row in /config writes this key. A managed disableArtifact and your organization's admin setting take precedence, and the key is ignored in project and local settings (.claude/settings.json, .claude/settings.local.json), which a repository could otherwise commit. Requires Claude Code v2.1.196 or later. See https://code.claude.com/docs/en/artifacts"},"permissionExplainerEnabled":{"type":"boolean","description":"Show a model-generated explanation of the command when you press Ctrl+E on a Bash or PowerShell permission prompt (default: true). Set to false to turn the shortcut off. See https://code.claude.com/docs/en/permissions#permission-system","default":true},"diffTool":{"type":"string","description":"Where to display file diffs when an IDE is connected: \"auto\" (default) opens diffs in the IDE's diff viewer, \"terminal\" keeps them in the terminal. Appears in /config as Diff tool only when Claude Code is connected to a VS Code or JetBrains IDE. See https://code.claude.com/docs/en/settings#global-config-settings","enum":["auto","terminal"],"default":"auto"},"externalEditorContext":{"type":"boolean","description":"Prepend Claude's previous response as #-commented context when you open the external editor with Ctrl+G (default: false). Appears in /config as Show last response in external editor. See https://code.claude.com/docs/en/settings#global-config-settings","default":false},"autoConnectIde":{"type":"boolean","description":"Automatically connect to a running IDE when Claude Code starts from an external terminal (default: false). Appears in /config as Auto-connect to IDE (external terminal) when running outside a VS Code or JetBrains terminal. Also configurable via the CLAUDE_CODE_AUTO_CONNECT_IDE environment variable, which overrides this when set. See https://code.claude.com/docs/en/settings#global-config-settings","default":false},"autoInstallIdeExtension":{"type":"boolean","description":"Automatically install the Claude Code IDE extension when running from a VS Code terminal (default: true). Appears in /config as Auto-install IDE extension when running inside a VS Code or JetBrains terminal. You can also set the CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL environment variable to 1. See https://code.claude.com/docs/en/settings#global-config-settings","default":true},"emojiCompletionEnabled":{"type":"boolean","description":"Show emoji suggestions when you type : plus a shortcode in the prompt input, and replace a completed shortcode such as :heart: with its emoji (default: true). Set to false to disable both. Requires Claude Code v2.1.217 or later. See https://code.claude.com/docs/en/interactive-mode#emoji-shortcodes","default":true},"vimInsertModeRemaps":{"type":"object","description":"Map two-key INSERT-mode sequences to Escape in vim editor mode. Each key is exactly two printable characters typed in sequence, and \"<Esc>\" is the only supported target; other entries are ignored. Read from user, --settings flag, and managed settings only, so a repository's checked-in settings cannot remap your keystrokes. Has no effect unless editorMode is \"vim\". Requires Claude Code v2.1.208 or later. See https://code.claude.com/docs/en/interactive-mode#remap-insert-mode-key-sequences","propertyNames":{"pattern":"^..$"},"additionalProperties":{"type":"string","description":"Remap target. \"<Esc>\" is the only supported value; other values are ignored"},"examples":[{"jj":"<Esc>"}]},"processWrapper":{"type":"string","description":"Corporate launcher command placed in front of the background processes Claude Code starts. Honored from managed settings, a --settings file, and user settings only; the CLAUDE_CODE_PROCESS_WRAPPER environment variable takes precedence when both are set. Requires Claude Code v2.1.210 or later. See https://code.claude.com/docs/en/corporate-launcher","examples":["/opt/corp/launcher --profile claude"]},"forceLoginGatewayUrl":{"type":"string","description":"Pre-fills and locks the gateway URL on the /login Cloud gateway screen. Either this key or forceLoginMethod: \"gateway\" surfaces that screen; set both so the URL is filled in. Honored only at the managed policy tier; ignored in user and project settings. See https://code.claude.com/docs/en/claude-apps-gateway#set-the-gateway-url","examples":["https://claude-gateway.example.com"]},"disableSideloadFlags":{"type":"boolean","description":"(Managed settings only) Reject the --plugin-dir, --plugin-url, --agents, and --mcp-config CLI flags at startup, which users could otherwise pass to bypass strictKnownMarketplaces for a single run. Also rejects these flags from any surface that spawns the CLI with them internally, currently Cowork local sessions in the desktop app. A --mcp-config whose servers are all in-process type: \"sdk\" entries is still accepted, so the Agent SDK and VS Code extension keep working. Does not block claude mcp add, .mcp.json, or SDK setMcpServers(); pair with allowedMcpServers for per-server MCP control. Requires Claude Code v2.1.193 or later. See https://code.claude.com/docs/en/settings#available-settings"},"browserExternalPageTools":{"type":"string","description":"(Managed settings only) Set to \"disabled\" to prevent Claude from using tools to read or act on external pages in the desktop app's Browser pane. Users can still navigate to external sites themselves, and local dev server previews are unaffected. See https://code.claude.com/docs/en/desktop#browse-external-sites","enum":["disabled"]},"disableBrowserExternalNavigation":{"type":"boolean","description":"(Managed settings only) Set to true to turn off external browsing in the desktop app's Browser pane. Neither users nor Claude can navigate to external sites, and localhost dev server previews are unaffected. The value must be the JSON boolean true; the string \"true\" is ignored. See https://code.claude.com/docs/en/desktop#browse-external-sites"},"disableMobileSimulatorTools":{"type":"boolean","description":"(Managed settings only) Set to true to block Claude's tools for the desktop app's iOS Simulator pane. Users keep manual use of the pane; only Claude's access is removed. The value must be the JSON boolean true; any other value is ignored, and a malformed value such as \"true\" or 1 logs a warning. See https://code.claude.com/docs/en/desktop-ios-simulator#turn-off-simulator-access"},"requireCoworkFullVmSandbox":{"type":"boolean","description":"(Managed settings only) Run Claude's tools inside an isolated virtual machine instead of on your Mac. Disables the desktop app's iOS Simulator pane and Claude's simulator tools entirely, so the pane cannot attach a device while it is set. See https://code.claude.com/docs/en/desktop-ios-simulator#turn-off-simulator-access"}},"title":"Claude Code Settings"}