Skip to content
Code Guide

Claude Code Settings Reference

Complete reference for settings.json configuration and environment variables. Covers all confirmed settings as of Claude Code v2.1.81.

Sources: Official settings docs · Official env-vars docs · JSON Schema

Legend:

  • No badge = confirmed in official documentation
  • 📋 Schema only = present in JSON schema but not on official settings page — still valid
  • ⚠️ Unverified = not confirmed in official sources

Claude Code uses four settings scopes, applied from highest to lowest priority:

PriorityScopeLocationShared?Purpose
1ManagedServer, MDM profile, registry, or system managed-settings.jsonYes (IT-deployed)Org-wide policies, cannot be overridden
2Command line-- flags at startupNoTemporary session overrides
3Local.claude/settings.local.jsonNo (gitignored)Personal project-specific
4Project.claude/settings.jsonYes (committed)Team-shared settings
5User~/.claude/settings.jsonNoGlobal personal defaults

Array merging: Settings like permissions.allow, sandbox.filesystem.allowWrite, and allowedHttpHookUrls are concatenated and deduplicated across scopes — not replaced.

Deny precedence: permissions.deny rules always take effect regardless of allow/ask rules at any scope.

Managed settings delivery methods:

  • Server-managed (Claude.ai admin console)
  • macOS MDM: com.anthropic.claudecode plist
  • Windows registry: HKLM\SOFTWARE\Policies\ClaudeCode
  • File: managed-settings.json at /Library/Application Support/ClaudeCode/ (macOS), /etc/claude-code/ (Linux/WSL), C:\Program Files\ClaudeCode\ (Windows)
  • Drop-in directory: managed-settings.d/*.json alongside managed-settings.json, merged alphabetically

Other config: ~/.claude.json stores OAuth session, MCP server configs, per-project trust state, and preferences like editorMode. Do not put ~/.claude.json keys into settings.json — it will trigger schema validation errors.


Type: string Scope: all Default: none

JSON Schema URL for IDE validation and autocomplete. Add "https://json.schemastore.org/claude-code-settings.json" to enable inline validation in VS Code, Cursor, and other editors.

{
"$schema": "https://json.schemastore.org/claude-code-settings.json"
}

Type: string Scope: all Default: "default"

Override the default model for all sessions. Accepts aliases ("sonnet", "opus", "haiku", "opusplan") or full model IDs like "claude-sonnet-4-6". The ANTHROPIC_MODEL environment variable takes precedence.

{ "model": "opus" }

Type: string Scope: all Default: none

Run the main thread as a named subagent. Applies that agent’s system prompt, tool restrictions, and model. Value must match an agent defined in .claude/agents/. Also available via --agent CLI flag.

{ "agent": "code-reviewer" }

Type: string Scope: all Default: "english"

Claude’s preferred response language. Also sets the voice dictation language. Examples: "japanese", "spanish", "french".

Type: number Scope: all Default: 30

Sessions inactive longer than this number of days are deleted at startup. Setting to 0 deletes all existing transcripts at startup and disables session persistence entirely — no .jsonl files are written, /resume shows no conversations, and hooks receive an empty transcript_path.

Type: string Scope: all Default: "latest" Values: "latest" | "stable"

Release channel to follow. "stable" is typically about one week behind "latest" and skips versions with major regressions.

Type: boolean Scope: all Default: false

Enable extended thinking by default for all sessions. Usually configured via /config rather than editing directly.

Type: boolean Scope: all Default: true

Include built-in commit and PR workflow instructions and a git status snapshot in the system prompt. Set to false when using a custom git workflow skill. The CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS env var takes precedence.

Type: boolean Scope: user Default: none

Enable push-to-talk voice dictation. Written automatically when you run /voice. Requires a Claude.ai account.

Type: array of strings Scope: all Default: none

Announcements displayed to users at startup. Multiple announcements are cycled through at random.

{
"companyAnnouncements": [
"Welcome to Acme Corp! Review code guidelines at docs.acme.com",
"All PRs require code review before merge"
]
}

Type: array of strings Scope: all Default: none

Restrict which models users can select via /model, --model, Config tool, or ANTHROPIC_MODEL. Does not affect the Default option.

{ "availableModels": ["sonnet", "haiku"] }

Type: boolean Scope: all Default: false

When true, fast mode does not persist across sessions. Each session starts with fast mode off, requiring users to enable it with /fast. The user’s preference is still saved.

Type: string Scope: all Default: "auto" Values: "auto" | "in-process" | "tmux"

How agent team teammates display. "auto" uses split panes in tmux or iTerm2, in-process otherwise.

Type: boolean Scope: all Default: false

Show the “clear context” option on the plan accept screen. Set to true to restore the option, which was hidden by default starting in v2.1.81.

Type: number Scope: all Default: none

Probability (0–1) that the session quality survey appears when eligible. Set to 0 to suppress entirely. Useful when using Bedrock, Vertex, or Foundry.

Type: string Scope: all Default: none Values: "disable"

Set to "disable" to prevent auto mode from being activated. Removes auto from the Shift+Tab cycle and rejects --permission-mode auto at startup.

Type: boolean Scope: user / local Default: true

Whether plan mode uses auto mode semantics when auto mode is available. Not read from shared project settings.

Type: object Scope: user / local Default: none

Customize the auto mode classifier. Contains environment, allow, and soft_deny arrays of prose rules. Not read from shared project settings.

Type: string Scope: all Default: "bash" Values: "bash" | "powershell"

Default shell for input-box ! commands. "powershell" requires CLAUDE_CODE_USE_POWERSHELL_TOOL=1.

Type: boolean Scope: all Default: false

Skip the WebFetch blocklist check before fetching URLs.

Type: object Scope: all Default: none

Environment variables applied to every session. Use this instead of wrapper scripts to set variables. See the Environment Variables section for all supported keys.

{
"env": {
"NODE_ENV": "development",
"CLAUDE_CODE_EFFORT_LEVEL": "medium"
}
}

Type: string Scope: all Default: "~/.claude/plans"

Directory where /plan outputs are stored. Path is relative to the project root.

Type: boolean Scope: all Default: true

Enable or disable the auto-memory feature that automatically saves context across sessions.

Type: string Scope: user / local / managed Default: none

Custom directory for auto-memory storage. Accepts ~/-expanded paths. Not accepted in project settings (.claude/settings.json) to prevent shared repos from redirecting memory writes to sensitive locations.


Control what tools and operations Claude can perform.

Type: array of strings Scope: all Default: []

Permission rules that allow tool use without prompting. Arrays are concatenated across scopes. See Permission Rule Syntax below.

Type: array of strings Scope: all Default: []

Permission rules requiring user confirmation before tool use.

Type: array of strings Scope: all Default: []

Permission rules blocking tool use. Highest safety precedence — cannot be overridden by allow/ask rules at any scope.

Type: array of strings Scope: all Default: []

Additional working directories that Claude has access to, beyond the current project root.

{ "permissions": { "additionalDirectories": ["../shared-libs/"] } }

Type: string Scope: all Default: "default" Values: "default" | "acceptEdits" | "plan" | "bypassPermissions"

Default permission mode when opening Claude Code. In Remote environments, only "acceptEdits" and "plan" are honored.

Type: string Scope: all Default: none Values: "disable"

Set to "disable" to prevent bypassPermissions mode from being activated. Disables the --dangerously-skip-permissions flag. Most useful in managed settings.

Type: boolean Scope: managed only Default: false

When true, user and project allow, ask, and deny rules are ignored. Only managed permission rules apply.

Rules follow the format Tool or Tool(specifier). Evaluation order: deny first, then ask, then allow. The first matching rule wins.

ToolPatternExample
BashCommand pattern with wildcardsBash(npm run *), Bash(git *)
ReadFile path patternRead(.env), Read(./secrets/**)
EditFile path patternEdit(src/**), Edit(*.ts)
WriteFile path patternWrite(*.md)
WebFetchdomain:hostnameWebFetch(domain:example.com)
WebSearchNo specifierWebSearch
TaskAgent nameTask(Explore)
AgentAgent nameAgent(researcher)
MCPmcp__server__tool or MCP(server:tool)mcp__memory__*

Path prefixes for Read/Edit rules:

PrefixMeaning
//Absolute path from filesystem root
~/Relative to home directory
/Relative to project root
./ or noneRelative path (current directory)

Bash wildcard notes: * matches at any position. Bash(ls *) (space before *) matches ls -la but NOT lsof. Bash(*) is equivalent to Bash (matches all commands). The legacy :* suffix (e.g., Bash(npm:*)) is deprecated.

{
"permissions": {
"allow": ["Edit(*)", "Bash(npm run *)", "Bash(git *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(.env)", "Read(./secrets/**)"],
"defaultMode": "acceptEdits"
}
}

Type: object Scope: all Default: none

Configure custom commands to run at lifecycle events. See the hooks documentation for full format, all 19 events, exit codes, and environment variables.

Type: boolean Scope: all Default: false

Disable all hooks and any custom status line.

Type: boolean Scope: managed only Default: false

When true, only managed hooks and SDK hooks are loaded. User, project, and plugin hooks are blocked.

Type: array of strings Scope: all Default: none (no restriction)

Allowlist of URL patterns that HTTP hooks may target. Supports * as a wildcard. When defined, hooks with non-matching URLs are silently blocked. Empty array blocks all HTTP hooks. Arrays merge across settings sources.

{ "allowedHttpHookUrls": ["https://hooks.example.com/*"] }

Type: array of strings Scope: all Default: none (no restriction)

Allowlist of environment variable names that HTTP hooks can interpolate into header values. Each hook’s effective allowedEnvVars is the intersection with this list. Arrays merge across settings sources.


Type: boolean Scope: all Default: false

Automatically approve all MCP servers defined in project .mcp.json files. Avoids per-server confirmation prompts.

Type: array of strings Scope: all Default: none

Allowlist of specific server names from .mcp.json files to approve.

Type: array of strings Scope: all Default: none

Blocklist of specific server names from .mcp.json files to reject.

Type: array Scope: managed only Default: none (no restrictions)

Allowlist of MCP servers users can configure. Each entry matches by serverName, serverCommand, or serverUrl. Undefined = no restrictions, empty array = lockdown.

{
"allowedMcpServers": [
{ "serverName": "github" },
{ "serverCommand": "npx @modelcontextprotocol/*" },
{ "serverUrl": "https://mcp.company.com/*" }
]
}

Type: array Scope: managed only Default: none

Blocklist of MCP servers that are explicitly blocked. Applies to all scopes including managed servers. Takes precedence over allowedMcpServers.

Type: boolean Scope: managed only Default: false

When true, only allowedMcpServers from managed settings are respected. Users can still add MCP servers, but only admin-defined servers are usable. deniedMcpServers still merges from all sources.

Type: boolean Scope: managed only Default: false

Allow channels for Team and Enterprise users. When unset or false, channel message delivery is blocked regardless of what users pass to --channels.

Type: array Scope: managed only Default: none (uses default Anthropic allowlist)

Allowlist of channel plugins that may push messages. Replaces the default Anthropic allowlist when set. Requires channelsEnabled: true. Empty array blocks all channel plugins.


Configure bash command sandboxing for security. Available on macOS, Linux, and WSL2.

Type: boolean Scope: all Default: false

Enable bash sandboxing. Isolates bash commands from your filesystem and network.

Type: boolean Scope: all Default: false

Exit with an error at startup if sandbox.enabled is true but the sandbox cannot start (missing dependencies, unsupported platform). When false, a warning is shown and commands run unsandboxed. Useful in managed deployments that require sandboxing as a hard gate.

Type: boolean Scope: all Default: true

Auto-approve bash commands when sandboxed. When the sandbox is active, bash commands that would normally require confirmation are automatically approved.

Type: array of strings Scope: all Default: []

Commands that bypass the sandbox and run directly in your environment.

Type: boolean Scope: all Default: true

Allow commands to opt out of the sandbox via the dangerouslyDisableSandbox parameter. Set to false for strict sandboxing where all commands must run inside the sandbox or be in excludedCommands.

Type: boolean Scope: all Default: false

Enable a weaker sandbox for unprivileged Docker environments (Linux and WSL2 only). Reduces security.

Type: boolean Scope: all Default: false

(macOS only) Allow access to the system TLS trust service (com.apple.trustd.agent). Required for Go-based tools like gh, gcloud, and terraform when using httpProxyPort with a MITM proxy and custom CA. Reduces security.

Type: array of strings Scope: all Default: []

Specific Unix socket paths accessible in the sandbox (for SSH agents, Docker, etc.).

Type: boolean Scope: all Default: false

Allow all Unix socket connections in the sandbox. Overrides allowUnixSockets.

Type: boolean Scope: all Default: false

Allow binding to localhost ports (macOS only).

Type: array of strings Scope: all Default: []

Domains allowed for outbound network traffic. Supports wildcards like *.example.com.

Type: boolean Scope: managed only Default: false

When true, only allowedDomains and WebFetch(domain:...) allow rules from managed settings are respected. Non-allowed domains are blocked without prompting. Denied domains are still respected from all sources.

Type: number Scope: all Default: none

HTTP proxy port for a custom proxy (1–65535). If not specified, Claude runs its own proxy.

Type: number Scope: all Default: none

SOCKS5 proxy port for a custom proxy (1–65535).

sandbox.network.deniedDomains ⚠️ Unverified

Section titled “sandbox.network.deniedDomains ⚠️ Unverified”

Type: array of strings Scope: all Default: []

Network domain denylist for the sandbox. Not confirmed in official documentation.

Type: array of strings Scope: all Default: []

Additional paths where sandboxed commands can write. Merged across all settings scopes. Also merged with paths from Edit(...) allow permission rules.

Path prefix conventions: / = absolute, ~/ = home-relative, ./ or no prefix = project-relative in project settings / ~/.claude-relative in user settings.

Type: array of strings Scope: all Default: []

Paths where sandboxed commands cannot write. Merged with Edit(...) deny rules.

Type: array of strings Scope: all Default: []

Paths where sandboxed commands cannot read. Merged with Read(...) deny rules.

Type: array of strings Scope: all Default: []

Paths to re-allow read access within denyRead regions. Takes precedence over denyRead. Arrays merge across all settings scopes.

sandbox.filesystem.allowManagedReadPathsOnly

Section titled “sandbox.filesystem.allowManagedReadPathsOnly”

Type: boolean Scope: managed only Default: false

When true, only allowRead paths from managed settings are respected. allowRead entries from user, project, and local settings are ignored.

Sandbox example:

{
"sandbox": {
"enabled": true,
"autoAllowBashIfSandboxed": true,
"excludedCommands": ["git", "docker"],
"filesystem": {
"allowWrite": ["/tmp/build", "~/.kube"],
"denyRead": ["~/.aws/credentials"]
},
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"],
"allowUnixSockets": ["/var/run/docker.sock"],
"allowLocalBinding": true
}
}
}

Type: object Scope: all Default: none

Enable or disable specific plugins by key (format: plugin-name@marketplace-name).

{
"enabledPlugins": {
"formatter@acme-tools": true,
"experimental@acme-tools": false
}
}

Type: object Scope: project Default: none

Add custom plugin marketplaces. Use source: "settings" to declare plugins inline without hosting a repository.

Type: array Scope: managed only Default: none (no restrictions)

Allowlist of permitted plugin marketplaces. When set, users can only add plugins from listed marketplaces. Empty array blocks all additions.

Type: array Scope: managed only Default: none

Block specific plugin marketplace sources. Blocked sources are checked before downloading, so they never touch the filesystem.

Type: string Scope: managed only Default: none

Custom message appended to the plugin trust warning shown before installation. Use for org-specific context like confirming plugins from an internal marketplace are vetted.

Type: array Scope: all Default: none

Marketplaces the user declined to install (stored automatically).

Type: array Scope: all Default: none

Plugins the user declined to install (stored automatically).

Type: object Scope: all Default: none

Per-plugin MCP server configurations, keyed by plugin@marketplace.


Type: string Scope: all Default: "medium" Values: "low" | "medium" | "high"

Persist the effort level across sessions. Controls reasoning depth. Written automatically when you run /effort low|medium|high. Supported on Opus 4.6 and Sonnet 4.6. The CLAUDE_CODE_EFFORT_LEVEL env var takes precedence.

Type: object Scope: all Default: none

Map Anthropic model IDs to provider-specific model IDs (e.g., Bedrock inference profile ARNs). Each key is a model picker entry name; each value is the provider model ID.

{
"modelOverrides": {
"claude-opus-4-6": "arn:aws:bedrock:us-east-1:123456789:inference-profile/anthropic.claude-opus-4-6-v1:0"
}
}

Model aliases reference:

AliasDescription
"default"Recommended model for your account type
"sonnet"Latest Sonnet (Claude Sonnet 4.6)
"opus"Latest Opus (Claude Opus 4.6)
"haiku"Fast Haiku model
"sonnet[1m]"Sonnet with 1M token context
"opusplan"Opus for planning, Sonnet for execution

Type: object Scope: all Default: none

Configure a custom status line. The command receives a JSON object on stdin with fields like context_window.used_percentage, rate_limits.five_hour.used_percentage, etc.

{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 0
}
}

Type: object Scope: all Default: none

Configure a custom script for @ file path autocomplete. The command receives JSON on stdin with a query field and outputs newline-separated file paths (max 15).

{
"fileSuggestion": {
"type": "command",
"command": "~/.claude/file-suggestion.sh"
}
}

Type: string Scope: all Default: "Default"

Controls how Claude communicates throughout the session. Equivalent to selecting a style via /config → “Preferred output style”.

Built-in values:

  • "Default" — concise, task-focused responses optimized for speed
  • "Explanatory" — adds reasoning blocks explaining design choices, trade-offs, and codebase patterns
  • "Learning" — pauses at key steps, inserts TODO(human) markers, asks you to write the meaningful pieces (pair-programming mode)

Custom styles: reference any filename (without .md) from .claude/styles/.

{ "outputStyle": "Explanatory" }
{ "outputStyle": "strict-reviewer" }

Setting persists across sessions. Explanatory and Learning increase output tokens; prompt caching offsets the cost after the first request. See Section 9.7 for full documentation and custom style examples.

Type: boolean Scope: all Default: true

Show tips in the spinner while Claude is working.

Type: object Scope: all Default: none

Customize the action verbs shown in the spinner and turn duration messages. Set mode to "replace" to use only your verbs, or "append" to add to defaults.

{
"spinnerVerbs": {
"mode": "replace",
"verbs": ["Cooking", "Brewing", "Crafting", "Conjuring"]
}
}

Type: object Scope: all Default: none

Override spinner tips with custom strings. tips: array of strings. excludeDefault: when true, only show custom tips.

{
"spinnerTipsOverride": {
"tips": ["Use /compact at 50% context", "Plan mode helps for complex tasks"],
"excludeDefault": true
}
}

Type: boolean Scope: all Default: true

Control whether the @ file picker respects .gitignore patterns.

Type: boolean Scope: all Default: false

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


Type: string Scope: all Default: none

Shell script path (executed in /bin/sh) that outputs an auth token sent as X-Api-Key and Authorization: Bearer headers for model requests. Useful for short-lived credentials.

{ "apiKeyHelper": "/bin/generate_temp_api_key.sh" }

Type: string Scope: all Default: none Values: "claudeai" | "console"

Restrict login to Claude.ai accounts ("claudeai") or Claude Console API-billing accounts ("console").

Type: string Scope: all Default: none

UUID of an organization to automatically select during login, bypassing the org selection step. Requires forceLoginMethod to be set.


Type: string Scope: all Default: Git trailer with co-authored-by line

Attribution text added to git commits. Supports git trailers. Set to empty string to disable commit attribution entirely.

Type: string Scope: all Default: Generated message with Claude Code link

Attribution text added to pull request descriptions. Set to empty string to disable.

Type: boolean Scope: all Default: true Status: DEPRECATED — use attribution instead

Whether to include the Co-Authored-By byline. Superseded by the attribution object.

{
"attribution": {
"commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",
"pr": ""
}
}

Type: array of strings Scope: all Default: []

Directories to symlink from the main repository into each worktree, avoiding large duplicated directories on disk (e.g., node_modules).

Type: array of strings Scope: all Default: []

Directories to check out in each worktree via git sparse-checkout (cone mode). Only listed paths are written to disk — useful for large monorepos.

{
"worktree": {
"symlinkDirectories": ["node_modules", ".cache"],
"sparsePaths": ["packages/my-app", "shared/utils"]
}
}

Type: string Scope: all Default: none

Custom script that modifies the .aws directory. Runs to refresh AWS credentials before API calls.

{ "awsAuthRefresh": "aws sso login --profile myprofile" }

Type: string Scope: all Default: none

Custom script that outputs JSON with AWS credentials. Used for non-standard credential sources.

Type: string Scope: all Default: none

Script to generate dynamic OpenTelemetry headers. Runs at startup and periodically. See the monitoring docs for the expected output format.


These settings are stored in ~/.claude.json, not settings.json. Adding them to settings.json triggers a schema validation error.

KeyTypeDefaultDescription
autoConnectIdebooleanfalseAuto-connect to a running IDE when Claude Code starts from an external terminal
autoInstallIdeExtensionbooleantrueAuto-install the Claude Code IDE extension when running from a VS Code terminal
editorModestring"normal"Key binding mode: "normal" or "vim". Written automatically by /vim
showTurnDurationbooleantrueShow turn duration messages after responses (e.g., “Cooked for 1m 6s”)
terminalProgressBarEnabledbooleantrueShow terminal progress bar in ConEmu, Ghostty 1.2.0+, and iTerm2 3.6.6+

Keys confirmed in the JSON schema not covered in the sections above:

KeyTypeDescription
claudeMdExcludes 📋 Schema onlyarrayGlob patterns for CLAUDE.md files to exclude from loading
allowManagedMcpServersOnlyboolean(Managed) Only managed MCP servers are usable
allowManagedHooksOnlyboolean(Managed) Only managed and SDK hooks are loaded
autoMemoryEnabledbooleanEnable/disable auto-memory feature
feedbackSurveyRatenumberSurvey appearance probability (0–1)

Set in your shell before launching claude, or configure under the env key in settings.json to apply to every session.

VariableDescription
ANTHROPIC_API_KEYAPI key for direct Anthropic API access
ANTHROPIC_AUTH_TOKENOAuth token (alternative to API key)
ANTHROPIC_BASE_URLCustom API endpoint (for proxies or private deployments)
ANTHROPIC_CUSTOM_HEADERSCustom headers for API requests. Format: Name: Value, newline-separated for multiple
CLAUDE_CODE_USER_EMAILProvide user email synchronously for authentication
CLAUDE_CODE_ORGANIZATION_UUIDProvide organization UUID synchronously for authentication
CLAUDE_CODE_ACCOUNT_UUIDOverride account UUID for authentication
CLAUDE_CONFIG_DIRCustom config directory path (overrides default ~/.claude)
CLAUDE_ENV_FILECustom environment file path
VariableDescription
ANTHROPIC_MODELModel to use. Accepts aliases (sonnet, opus, haiku) or full model IDs. Overrides the model setting
ANTHROPIC_DEFAULT_HAIKU_MODELOverride the Haiku model alias with a custom model ID
ANTHROPIC_DEFAULT_HAIKU_MODEL_NAMEDisplay name for the Haiku model override
ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTIONDescription for the Haiku model override
ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIESCapabilities for the Haiku model override
ANTHROPIC_DEFAULT_SONNET_MODELOverride the Sonnet model alias
ANTHROPIC_DEFAULT_SONNET_MODEL_NAMEDisplay name for the Sonnet model override
ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTIONDescription for the Sonnet model override
ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIESCapabilities for the Sonnet model override
ANTHROPIC_DEFAULT_OPUS_MODELOverride the Opus model alias (e.g., claude-opus-4-6[1m])
ANTHROPIC_DEFAULT_OPUS_MODEL_NAMEDisplay name for the Opus model override
ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTIONDescription for the Opus model override
ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIESCapabilities for the Opus model override
ANTHROPIC_CUSTOM_MODEL_OPTIONModel ID to add as a custom entry in the /model picker
ANTHROPIC_CUSTOM_MODEL_OPTION_NAMEDisplay name for the custom model entry
ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTIONDisplay description for the custom model entry
ANTHROPIC_SMALL_FAST_MODELDEPRECATED — use ANTHROPIC_DEFAULT_HAIKU_MODEL instead
ANTHROPIC_SMALL_FAST_MODEL_AWS_REGIONAWS region for the deprecated Haiku-class model override
CLAUDE_CODE_SUBAGENT_MODELOverride model for subagents (e.g., haiku)
CLAUDE_CODE_EFFORT_LEVELSet effort level: low, medium, high, max (Opus 4.6 only), or auto. Takes precedence over /effort and the effortLevel setting

Cloud Providers (Bedrock, Vertex, Foundry)

Section titled “Cloud Providers (Bedrock, Vertex, Foundry)”
VariableDescription
CLAUDE_CODE_USE_BEDROCKUse AWS Bedrock (1 to enable)
CLAUDE_CODE_USE_VERTEXUse Google Vertex AI (1 to enable)
CLAUDE_CODE_USE_FOUNDRYUse Microsoft Foundry (1 to enable)
AWS_BEARER_TOKEN_BEDROCKBedrock API key for authentication
CLAUDE_CODE_SKIP_BEDROCK_AUTHSkip AWS auth for Bedrock (1 to skip)
CLAUDE_CODE_SKIP_FOUNDRY_AUTHSkip Azure auth for Foundry (1 to skip)
CLAUDE_CODE_SKIP_VERTEX_AUTHSkip Google auth for Vertex (1 to skip)
ANTHROPIC_FOUNDRY_API_KEYAPI key for Microsoft Foundry authentication
ANTHROPIC_FOUNDRY_BASE_URLBase URL for the Foundry resource
ANTHROPIC_FOUNDRY_RESOURCEFoundry resource name
VERTEX_REGION_CLAUDE_3_5_HAIKUVertex AI region override for Claude 3.5 Haiku
VERTEX_REGION_CLAUDE_3_7_SONNETVertex AI region override for Claude 3.7 Sonnet
VERTEX_REGION_CLAUDE_4_0_OPUSVertex AI region override for Claude 4.0 Opus
VERTEX_REGION_CLAUDE_4_0_SONNETVertex AI region override for Claude 4.0 Sonnet
VERTEX_REGION_CLAUDE_4_1_OPUSVertex AI region override for Claude 4.1 Opus
VariableDescription
BASH_DEFAULT_TIMEOUT_MSDefault bash command timeout in milliseconds
BASH_MAX_TIMEOUT_MSMaximum bash command timeout in milliseconds
BASH_MAX_OUTPUT_LENGTHMaximum bash output length
MAX_THINKING_TOKENSMaximum extended thinking tokens per response
CLAUDE_CODE_MAX_OUTPUT_TOKENSMax output tokens per response. Default: 32,000 (64,000 for Opus 4.6 as of v2.1.77). Upper bound: 128,000 for Opus 4.6 and Sonnet 4.6
CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENSOverride default file read token limit
CLAUDE_CODE_EXIT_AFTER_STOP_DELAYAuto-exit SDK mode after this idle duration (ms)
CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MSSessionEnd hook timeout in ms (replaces hard 1.5s limit)
CLAUDE_CODE_API_KEY_HELPER_TTL_MSCredential refresh interval in ms for apiKeyHelper
CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MSPlugin marketplace git clone timeout in ms (default: 120000)
CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MSDebounce interval in ms for OTel headers helper script
MCP_TIMEOUTMCP server startup timeout in ms
MCP_TOOL_TIMEOUTMCP tool execution timeout in ms
VariableDescription
CLAUDECODESet to 1 in shell environments Claude Code spawns (Bash tool, tmux). Not set in hooks or status line commands. Use to detect when a script runs inside Claude Code
CLAUDE_CODE_SHELLOverride automatic shell detection
CLAUDE_CODE_SHELL_PREFIXCommand prefix prepended to all bash commands
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIRKeep working directory between bash calls (1 to enable)
CLAUDE_CODE_NEW_INITSet to true to make /init run an interactive setup flow asking which files to generate
CLAUDE_CODE_PLAN_MODE_REQUIREDRequire plan mode for sessions
CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORSSet to 1 to allow fast mode when org status check fails due to network error (useful with corporate proxies)
CLAUDE_CODE_SIMPLEEnable simple/minimal UI mode
CLAUDE_CODE_SUBPROCESS_ENV_SCRUBEnvironment variables to scrub from subprocess environments
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MDAdditional directories to load CLAUDE.md files from
CLAUDE_CODE_TMPDIRCustom temporary directory for Claude Code operations
USE_BUILTIN_RIPGREPUse the built-in ripgrep binary instead of system ripgrep
VariableDescription
CLAUDE_AUTOCOMPACT_PCT_OVERRIDEAuto-compact threshold percentage (1–100). Default ~95%. Lower values (e.g., 50) trigger compaction earlier. Values above 95% have no effect
CLAUDE_CODE_AUTO_COMPACT_WINDOWContext capacity in tokens used for compaction calculations. Defaults to model’s context window (200K standard, 1M for extended). A lower value (e.g., 500000) on a 1M model treats it as 500K for compaction purposes
CLAUDE_CODE_DISABLE_1M_CONTEXTDisable 1M token context window (1 to disable)
VariableDescription
CLAUDE_CODE_ENABLE_TELEMETRYEnable telemetry (1 to enable)
DISABLE_TELEMETRYDisable telemetry (1 to disable)
DISABLE_ERROR_REPORTINGDisable error reporting (1 to disable)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICEquivalent of setting DISABLE_AUTOUPDATER, DISABLE_FEEDBACK_COMMAND, DISABLE_ERROR_REPORTING, and DISABLE_TELEMETRY together
VariableDescription
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKINGDisable adaptive thinking (1 to disable)
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASDisable experimental beta features (1 to disable)
CLAUDE_CODE_DISABLE_BACKGROUND_TASKSDisable background tasks (1 to disable)
CLAUDE_CODE_DISABLE_AUTO_MEMORYDisable auto-memory (1 to disable)
CLAUDE_CODE_DISABLE_FAST_MODEDisable fast mode entirely (1 to disable)
CLAUDE_CODE_DISABLE_CRONDisable scheduled/cron tasks (1 to disable)
CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONSDisable git-related system prompt instructions. Takes precedence over includeGitInstructions setting
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACKDisable the non-streaming fallback for failed streaming requests
CLAUDE_CODE_DISABLE_FEEDBACK_SURVEYDisable feedback survey prompts (1 to disable)
CLAUDE_CODE_DISABLE_TERMINAL_TITLEDisable terminal title updates (1 to disable)
CLAUDE_CODE_ENABLE_PROMPT_SUGGESTIONEnable prompt suggestions
CLAUDE_CODE_ENABLE_TASKSSet to true to enable task tracking in non-interactive mode (-p flag). Tasks are on by default in interactive mode
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSEnable experimental agent teams feature
ENABLE_CLAUDEAI_MCP_SERVERSEnable Claude.ai MCP servers
CLAUDE_CODE_USE_POWERSHELL_TOOLEnable the PowerShell tool on Windows (requires defaultShell: "powershell" in settings)
FORCE_AUTOUPDATE_PLUGINSForce plugin auto-updates (1 to enable)
IS_DEMOEnable demo mode
VariableDescription
DISABLE_PROMPT_CACHINGDisable all prompt caching (1 to disable)
DISABLE_PROMPT_CACHING_HAIKUDisable prompt caching for Haiku model requests
DISABLE_PROMPT_CACHING_SONNETDisable prompt caching for Sonnet model requests
DISABLE_PROMPT_CACHING_OPUSDisable prompt caching for Opus model requests
VariableDescription
MAX_MCP_OUTPUT_TOKENSMax MCP output tokens per call (default: 25000). A warning is shown when output exceeds 10,000 tokens
ENABLE_TOOL_SEARCHMCP tool search threshold (e.g., auto:5 — activates tool search when there are more than 5 MCP tools)
MCP_CLIENT_SECRETMCP OAuth client secret
MCP_OAUTH_CALLBACK_PORTMCP OAuth callback port
VariableDescription
HTTP_PROXYHTTP proxy URL for network requests
HTTPS_PROXYHTTPS proxy URL for network requests
NO_PROXYComma-separated list of hosts that bypass the proxy
CLAUDE_CODE_PROXY_RESOLVES_HOSTSAllow the proxy to perform DNS resolution
CLAUDE_CODE_CLIENT_CERTClient certificate path for mTLS
CLAUDE_CODE_CLIENT_KEYClient private key path for mTLS
CLAUDE_CODE_CLIENT_KEY_PASSPHRASEPassphrase for an encrypted mTLS key
VariableDescription
DISABLE_COST_WARNINGSDisable cost warning messages
DISABLE_INSTALLATION_CHECKSDisable installation warnings
DISABLE_AUTOUPDATERDisable the auto-updater
DISABLE_FEEDBACK_COMMANDDisable the /feedback command. The older name DISABLE_BUG_COMMAND is also accepted
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALLSkip automatic IDE extension installation (1 to skip). Also configurable via autoInstallIdeExtension in ~/.claude.json
SLASH_COMMAND_TOOL_CHAR_BUDGETCharacter budget for slash command tool output
VariableDescription
CLAUDE_CODE_TEAM_NAMETeam name for agent teams
CLAUDE_CODE_TASK_LIST_IDTask list ID for task integration

These appear in community sources or older documentation but are not confirmed in current official docs.

VariableDescription
CLAUDE_CODE_MAX_TURNS ⚠️ UnverifiedMaximum agentic turns before stopping
CLAUDE_CODE_SKIP_SETTINGS_SETUP ⚠️ UnverifiedSkip first-run settings setup flow
CLAUDE_CODE_DISABLE_TOOLS ⚠️ UnverifiedComma-separated list of tools to disable
CLAUDE_CODE_DISABLE_MCP ⚠️ UnverifiedDisable all MCP servers (1 to disable)
CLAUDE_CODE_HIDE_ACCOUNT_INFO ⚠️ UnverifiedHide email/org info from UI
CLAUDE_CODE_PROMPT_CACHING_ENABLED ⚠️ UnverifiedOverride prompt caching behavior
DISABLE_NON_ESSENTIAL_MODEL_CALLS ⚠️ UnverifiedDisable flavor text and non-essential model calls

{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "sonnet",
"language": "english",
"cleanupPeriodDays": 30,
"autoUpdatesChannel": "stable",
"alwaysThinkingEnabled": false,
"includeGitInstructions": true,
"effortLevel": "medium",
"plansDirectory": "./plans",
"worktree": {
"symlinkDirectories": ["node_modules"],
"sparsePaths": ["packages/my-app", "shared/utils"]
},
"permissions": {
"allow": [
"Edit(*)",
"Write(*)",
"Bash(npm run *)",
"Bash(git *)",
"WebFetch(domain:*)",
"mcp__*"
],
"ask": ["Bash(git push *)"],
"deny": [
"Read(.env)",
"Read(./secrets/**)"
],
"additionalDirectories": ["../shared/"],
"defaultMode": "acceptEdits"
},
"enableAllProjectMcpServers": true,
"sandbox": {
"enabled": true,
"excludedCommands": ["git", "docker"],
"filesystem": {
"allowWrite": ["/tmp/build"],
"denyRead": ["~/.aws/credentials"]
},
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"],
"allowUnixSockets": ["/var/run/docker.sock"]
}
},
"attribution": {
"commit": "Generated with Claude Code",
"pr": ""
},
"statusLine": {
"type": "command",
"command": "git branch --show-current"
},
"spinnerTipsEnabled": true,
"prefersReducedMotion": false,
"env": {
"NODE_ENV": "development",
"CLAUDE_CODE_EFFORT_LEVEL": "medium"
}
}

TaskSetting / Variable
Set default modelmodel in settings or ANTHROPIC_MODEL env var
Lock model choicesavailableModels array
Silence telemetryDISABLE_TELEMETRY=1 or CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
Auto-approve bashpermissions.defaultMode: "acceptEdits"
Block sensitive filespermissions.deny: ["Read(.env)"]
Reduce context compactionCLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70
Set response languagelanguage: "japanese"
Custom spinner textspinnerVerbs + spinnerTipsOverride
Remove attributionattribution.commit: "", attribution.pr: ""
Pin to stable releasesautoUpdatesChannel: "stable"
Dynamic auth tokenapiKeyHelper: "/path/to/script.sh"
Large monorepoworktree.symlinkDirectories + worktree.sparsePaths
Enable sandboxingsandbox.enabled: true
Trust all project MCP serversenableAllProjectMcpServers: true