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.162.

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 and §7.1 of the guide for the full set of 30 hook 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.8)
"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. When an env var and an equivalent settings field both apply, the env var takes precedence (e.g. ANTHROPIC_MODEL overrides the model setting). Changes take effect on the next claude launch.

VariableDescription
ANTHROPIC_API_KEYAPI key for Anthropic API access. When set, used instead of your Claude subscription even if logged in
ANTHROPIC_AUTH_TOKENCustom Authorization header value (prefixed with Bearer )
ANTHROPIC_BASE_URLCustom API endpoint for proxies or LLM gateways
ANTHROPIC_CUSTOM_HEADERSCustom headers added to API requests. Format: Name: Value, newline-separated for multiple
ANTHROPIC_BETASComma-separated extra anthropic-beta header values. Works with all auth methods including Claude.ai subscription
ANTHROPIC_WORKSPACE_IDWorkspace ID for workload identity federation when a federation rule covers more than one workspace
CLAUDE_CODE_OAUTH_TOKENOAuth access token for Claude.ai authentication. Alternative to /login for SDK and automated environments
CLAUDE_CODE_OAUTH_REFRESH_TOKENOAuth refresh token for headless auth. claude auth login exchanges this directly instead of opening a browser. Requires CLAUDE_CODE_OAUTH_SCOPES
CLAUDE_CODE_OAUTH_SCOPESSpace-separated OAuth scopes the refresh token was issued with. Required when CLAUDE_CODE_OAUTH_REFRESH_TOKEN is set
CLAUDE_CONFIG_DIROverride the configuration directory (default: ~/.claude)
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_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIESCapabilities for the custom model entry
ANTHROPIC_SMALL_FAST_MODELDEPRECATED. Use ANTHROPIC_DEFAULT_HAIKU_MODEL instead
ANTHROPIC_SMALL_FAST_MODEL_AWS_REGIONAWS region for the Haiku-class model on Bedrock when ANTHROPIC_DEFAULT_HAIKU_MODEL is also set
CLAUDE_CODE_SUBAGENT_MODELOverride model for subagents (e.g. haiku)
CLAUDE_CODE_EFFORT_LEVELEffort level: low, medium, high, xhigh, max, or auto. Takes precedence over /effort and the effortLevel setting
FALLBACK_FOR_ALL_PRIMARY_MODELSAny non-empty value triggers fallback to --fallback-model after repeated overload errors on any primary model, not just Opus
CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAPSet to 1 to prevent automatic remapping of Opus 4.0 and 4.1 to the current Opus version on the Anthropic API
VariableDescription
CLAUDE_CODE_USE_BEDROCKUse Amazon Bedrock (1 to enable)
AWS_BEARER_TOKEN_BEDROCKBedrock API key for authentication
ANTHROPIC_BEDROCK_BASE_URLOverride the Bedrock endpoint URL. Use for custom regions or when routing through an LLM gateway
ANTHROPIC_BEDROCK_SERVICE_TIERBedrock service tier: default, flex, or priority. Sent as X-Amzn-Bedrock-Service-Tier
CLAUDE_CODE_SKIP_BEDROCK_AUTHSkip AWS auth for Bedrock (e.g. when using an LLM gateway)
CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCKSet to 1 to enable byte-level streaming idle watchdog on Bedrock
VariableDescription
CLAUDE_CODE_USE_MANTLEUse the Bedrock Mantle endpoint
ANTHROPIC_BEDROCK_MANTLE_BASE_URLOverride the Bedrock Mantle endpoint URL
CLAUDE_CODE_SKIP_MANTLE_AUTHSkip AWS auth for Bedrock Mantle
VariableDescription
CLAUDE_CODE_USE_VERTEXUse Google Vertex AI (1 to enable)
ANTHROPIC_VERTEX_BASE_URLOverride the Vertex AI endpoint URL
ANTHROPIC_VERTEX_PROJECT_IDGCP project ID for Vertex AI requests (overridden by GCLOUD_PROJECT or GOOGLE_CLOUD_PROJECT)
CLAUDE_CODE_SKIP_VERTEX_AUTHSkip Google auth for Vertex
VERTEX_REGION_CLAUDE_3_5_HAIKURegion override for Claude 3.5 Haiku on Vertex AI
VERTEX_REGION_CLAUDE_3_5_SONNETRegion override for Claude 3.5 Sonnet on Vertex AI
VERTEX_REGION_CLAUDE_3_7_SONNETRegion override for Claude 3.7 Sonnet on Vertex AI
VERTEX_REGION_CLAUDE_4_0_OPUSRegion override for Claude 4.0 Opus on Vertex AI
VERTEX_REGION_CLAUDE_4_0_SONNETRegion override for Claude 4.0 Sonnet on Vertex AI
VERTEX_REGION_CLAUDE_4_1_OPUSRegion override for Claude 4.1 Opus on Vertex AI
VERTEX_REGION_CLAUDE_4_5_OPUSRegion override for Claude Opus 4.5 on Vertex AI
VERTEX_REGION_CLAUDE_4_5_SONNETRegion override for Claude Sonnet 4.5 on Vertex AI
VERTEX_REGION_CLAUDE_4_6_OPUSRegion override for Claude Opus 4.6 on Vertex AI
VERTEX_REGION_CLAUDE_4_6_SONNETRegion override for Claude Sonnet 4.6 on Vertex AI
VERTEX_REGION_CLAUDE_4_7_OPUSRegion override for Claude Opus 4.7 on Vertex AI. Added in v2.1.111
VERTEX_REGION_CLAUDE_HAIKU_4_5Region override for Claude Haiku 4.5 on Vertex AI
VariableDescription
CLAUDE_CODE_USE_FOUNDRYUse Microsoft Foundry (1 to enable)
ANTHROPIC_FOUNDRY_API_KEYAPI key for Microsoft Foundry authentication
ANTHROPIC_FOUNDRY_BASE_URLFull base URL for the Foundry resource (alternative to ANTHROPIC_FOUNDRY_RESOURCE)
ANTHROPIC_FOUNDRY_RESOURCEFoundry resource name. Required if ANTHROPIC_FOUNDRY_BASE_URL is not set
CLAUDE_CODE_SKIP_FOUNDRY_AUTHSkip Azure auth for Foundry
VariableDescription
CLAUDE_CODE_USE_ANTHROPIC_AWSUse Claude Platform on AWS
ANTHROPIC_AWS_API_KEYWorkspace API key for Claude Platform on AWS, generated in the AWS Console
ANTHROPIC_AWS_BASE_URLOverride the Claude Platform on AWS endpoint URL
ANTHROPIC_AWS_WORKSPACE_IDRequired workspace ID. Sent as the anthropic-workspace-id header on every request
CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTHSkip client-side authentication for Claude Platform on AWS
VariableDescription
CLAUDE_CODE_ENABLE_AUTO_MODESet to 1 to make auto mode available on Bedrock, Vertex AI, and Foundry. Added in v2.1.158. No effect on Anthropic API
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOSTSet by host platforms managing model provider routing. When set, provider-selection and auth variables in settings files are ignored
VariableDescription
API_TIMEOUT_MSAPI request timeout in milliseconds (default: 600000). Maximum: 2147483647
BASH_DEFAULT_TIMEOUT_MSDefault bash command timeout in milliseconds (default: 120000)
BASH_MAX_TIMEOUT_MSMaximum bash command timeout in milliseconds (default: 600000)
BASH_MAX_OUTPUT_LENGTHMaximum characters in bash output before saving to a file and sending the path
MAX_THINKING_TOKENSExtended thinking token budget. Set to 0 to disable. Ignored on models with adaptive reasoning unless CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING is set
CLAUDE_CODE_MAX_OUTPUT_TOKENSMax output tokens per response (default: 32,000; up to 128,000 on Opus 4.8 and Sonnet 4.6)
CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENSOverride default file read token limit
CLAUDE_CODE_MAX_CONTEXT_TOKENSOverride context window size Claude Code assumes for the active model. Only takes effect when DISABLE_COMPACT is also set
CLAUDE_CODE_MAX_TURNSCap the number of agentic turns per session. Equivalent to --max-turns (the flag takes precedence when both are set)
CLAUDE_CODE_MAX_RETRIESOverride the number of retries for failed API requests (default: 10)
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCYMaximum read-only tools and subagents executing in parallel (default: 10)
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MSStall timeout in milliseconds for background subagents (default: 600000)
TASK_MAX_OUTPUT_LENGTHMaximum characters in subagent output before truncation (default: 32000, max: 160000)
MAX_STRUCTURED_OUTPUT_RETRIESRetries when model response fails --json-schema validation in non-interactive mode (default: 5)
CLAUDE_CODE_STOP_HOOK_BLOCK_CAPMaximum consecutive times a Stop hook may block the turn from ending before Claude Code overrides it (default: 8)
CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MSSessionEnd hook time budget in ms. Default: 1.5s, raised to the highest configured per-hook timeout up to 60s
CLAUDE_CODE_API_KEY_HELPER_TTL_MSCredential refresh interval in ms for apiKeyHelper
MCP_TIMEOUTMCP server startup timeout in ms (default: 30000)
MCP_TOOL_TIMEOUTMCP tool execution timeout in ms (default: 100000000)
VariableDescription
CLAUDECODESet to 1 in subprocesses Claude Code spawns (Bash/PowerShell tools, tmux sessions, hook commands, status line commands, stdio MCP subprocesses). Use to detect when a script runs inside Claude Code
DEBUGSet to 1 (or true/yes/on) to enable debug mode. Logs written to ~/.claude/debug/<session-id>.txt. Namespace patterns like DEBUG=express:* do not trigger it
CLAUDE_CODE_DEBUG_LOGS_DIROverride the debug log file path (file path, not a directory). Requires debug mode enabled separately
CLAUDE_CODE_DEBUG_LOG_LEVELMinimum log level for the debug file: verbose, debug (default), info, warn, error
CLAUDE_CODE_SHELLOverride automatic shell detection
CLAUDE_CODE_SHELL_PREFIXCommand prefix prepended to all shell commands Claude Code spawns
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIRReturn to the original working directory after each Bash command in the main session (1 to enable)
CLAUDE_CODE_NEW_INITSet to 1 to make /init run an interactive setup flow asking which files to generate
CLAUDE_CODE_SIMPLERun with minimal system prompt and only Bash, file read, and file edit tools. Equivalent to --bare
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPTSet to 1 to use a shorter system prompt and abbreviated tool descriptions. Set to 0/false/no/off to opt out
CLAUDE_CODE_SUBPROCESS_ENV_SCRUBSet to 1 to strip Anthropic and cloud provider credentials from subprocess environments (Bash, hooks, MCP stdio servers)
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MDSet to 1 to load CLAUDE.md files from directories specified with --add-dir
CLAUDE_CODE_TMPDIROverride the temp directory used for internal temp files
CLAUDE_CODE_GIT_BASH_PATHWindows only: path to Git Bash executable when not in PATH
CLAUDE_CODE_GLOB_HIDDENSet to false to exclude dotfiles from Glob tool results (dotfiles included by default)
CLAUDE_CODE_GLOB_NO_IGNORESet to false to make the Glob tool respect .gitignore patterns
CLAUDE_CODE_GLOB_TIMEOUT_SECONDSGlob tool file discovery timeout in seconds (default: 20, 60 on WSL)
CLAUDE_CODE_USE_NATIVE_FILE_SEARCHSet to 1 to discover commands/subagents using Node.js file APIs instead of ripgrep
CLAUDE_CODE_PERFORCE_MODESet to 1 to enable Perforce-aware write protection (edits fail on files lacking owner-write bit)
CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICYSet to 1 to stop Claude Code from passing -ExecutionPolicy Bypass when spawning PowerShell
CLAUDE_CODE_FORK_SUBAGENTSet to 1 to make forked subagents the default: spawned agents inherit full conversation context instead of starting fresh
CLAUDE_CODE_AUTO_BACKGROUND_TASKSSet to 1 to force-enable automatic backgrounding of long-running agent tasks
CLAUDE_CODE_REMOTESet automatically to true when running as a cloud session
CLAUDE_CODE_REMOTE_SESSION_IDSet automatically in cloud sessions to the current session ID
CLAUDE_CODE_SESSION_IDSet automatically to the current session ID in Bash/PowerShell subprocesses, hook commands, and MCP stdio subprocesses
CLAUDE_EFFORTSet automatically in Bash/hook subprocesses to the active effort level: low, medium, high, xhigh, or max
CLAUDE_ENV_FILEPath to a shell script run before each Bash command. Also populated dynamically by SessionStart, Setup, CwdChanged, and FileChanged hooks
USE_BUILTIN_RIPGREPSet to 0 to use system-installed rg instead of the one bundled with Claude Code
VariableDescription
CLAUDE_AUTOCOMPACT_PCT_OVERRIDEAuto-compact trigger threshold as a percentage (1-100). Default ~95%. Lower values trigger compaction earlier
CLAUDE_CODE_AUTO_COMPACT_WINDOWContext capacity in tokens used for compaction calculations. Defaults to model’s context window (200K standard, 1M for extended). Lower value on a 1M model treats it as smaller for compaction purposes
CLAUDE_CODE_DISABLE_1M_CONTEXTSet to 1 to disable 1M token context window support
DISABLE_AUTO_COMPACTSet to 1 to disable automatic compaction when approaching the context limit. Manual /compact remains available
DISABLE_COMPACTSet to 1 to disable all compaction, including manual /compact
CLAUDE_CODE_DISABLE_THINKINGSet to 1 to force-disable extended thinking regardless of model support
DISABLE_INTERLEAVED_THINKINGSet to 1 to prevent sending the interleaved-thinking beta header. Use when your gateway does not support it
VariableDescription
CLAUDE_CODE_ENABLE_TELEMETRYEnable OpenTelemetry data collection (1 to enable). Required before configuring OTel exporters
DISABLE_TELEMETRYDisable telemetry (1 to disable)
DO_NOT_TRACKSet to 1 to opt out of telemetry. Equivalent to DISABLE_TELEMETRY
DISABLE_ERROR_REPORTINGDisable Sentry error reporting (1 to disable)
DISABLE_GROWTHBOOKSet to 1 to disable GrowthBook feature-flag fetching and use code defaults for every flag
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICEquivalent to setting DISABLE_AUTOUPDATER, DISABLE_FEEDBACK_COMMAND, DISABLE_ERROR_REPORTING, and DISABLE_TELEMETRY

Standard OTEL exporter variables (OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_HEADERS, OTEL_METRIC_EXPORT_INTERVAL, OTEL_RESOURCE_ATTRIBUTES, and signal-specific variants) are supported. CLAUDE_CODE_ENABLE_TELEMETRY=1 is required to activate OTel collection.

VariableDescription
OTEL_LOG_RAW_API_BODIESEmit API request/response JSON as log events. Set to 1 for inline bodies (truncated at 60 KB), or file:<dir> to write full bodies to disk
OTEL_LOG_TOOL_CONTENTSet to 1 to include tool input/output content in OTel span events. Disabled by default
OTEL_LOG_TOOL_DETAILSSet to 1 to include tool input arguments, MCP server names, and raw error strings in OTel traces. Disabled by default
OTEL_LOG_USER_PROMPTSSet to 1 to include user prompt text in OTel traces. Disabled by default
OTEL_METRICS_INCLUDE_ACCOUNT_UUIDSet to false to exclude account UUID from metrics attributes (default: included)
OTEL_METRICS_INCLUDE_ENTRYPOINTSet to true to include session entrypoint in metrics attributes (default: excluded). Added in v2.1.152
OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTESSet to false to exclude OTEL_RESOURCE_ATTRIBUTES keys from metric datapoint labels (default: included). Added in v2.1.161
OTEL_METRICS_INCLUDE_SESSION_IDSet to false to exclude session ID from metrics attributes (default: included)
OTEL_METRICS_INCLUDE_VERSIONSet to true to include Claude Code version in metrics attributes (default: excluded)
CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MSTimeout in ms for flushing pending OTel spans on shutdown (default: 5000)
CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MSTimeout in ms for the OTel exporter to finish on exit (default: 2000)
CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MSRefresh interval in ms for dynamic OTel headers (default: 1740000, 29 minutes)
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTELSet to 1 to route session quality survey ratings to your OTel collector instead of Anthropic
CLAUDE_CODE_PROPAGATE_TRACEPARENTSet to 1 to propagate W3C trace context when ANTHROPIC_BASE_URL points at a custom proxy. Added in v2.1.152
VariableDescription
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKINGDisable adaptive reasoning on supported models (1 to disable). No effect on Opus 4.7 and later
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASStrip anthropic-beta request headers and beta tool-schema fields. Use when a proxy rejects unknown beta headers
CLAUDE_CODE_DISABLE_BACKGROUND_TASKSDisable all background task functionality including run_in_background, auto-backgrounding, and Ctrl+B
CLAUDE_CODE_DISABLE_AUTO_MEMORYSet to 1 to disable auto memory. Set to 0 to force it on when --bare mode would disable it
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_INSTRUCTIONSRemove built-in commit/PR instructions from system prompt. Takes precedence over includeGitInstructions
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACKDisable the non-streaming fallback for failed streaming requests
CLAUDE_CODE_DISABLE_FEEDBACK_SURVEYDisable session quality survey prompts (1 to disable)
CLAUDE_CODE_DISABLE_TERMINAL_TITLEDisable automatic terminal title updates and background title-generation requests
CLAUDE_CODE_DISABLE_AGENT_VIEWSet to 1 to disable background agents and agent view (claude agents, --bg, /background)
CLAUDE_CODE_DISABLE_WORKFLOWSSet to 1 to disable workflows
CLAUDE_CODE_DISABLE_FILE_CHECKPOINTINGSet to 1 to disable file checkpointing. /rewind will not restore code changes
CLAUDE_CODE_DISABLE_CLAUDE_MDSSet to 1 to prevent loading any CLAUDE.md memory files, including auto-memory
CLAUDE_CODE_DISABLE_ATTACHMENTSSet to 1 to disable attachment processing. @ file mentions sent as plain text
CLAUDE_CODE_DISABLE_POLICY_SKILLSSet to 1 to skip loading skills from the system-wide managed skills directory
CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALLSet to 1 to skip automatic addition of the official plugin marketplace on first run
CLAUDE_CODE_ENABLE_PROMPT_SUGGESTIONSet to false to disable prompt suggestions in the input area
CLAUDE_CODE_ENABLE_TASKSAs of v2.1.142, Task tools are the default. Set to 0 to revert to TodoWrite
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSEnable experimental agent teams feature (1 to enable)
ENABLE_CLAUDEAI_MCP_SERVERSSet to false to disable Claude.ai MCP servers (enabled by default for logged-in users)
CLAUDE_CODE_USE_POWERSHELL_TOOLControl the PowerShell tool. Auto-enabled on Windows without Git Bash. Set 0 to disable, 1 to opt in
CLAUDE_CODE_ENABLE_AWAY_SUMMARYOverride session recap availability: 0 to force off, 1 to force on
CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMINGControl streaming of tool call inputs. Set 0 to opt out, 1 to force on via proxy
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERYSet to 1 to populate the /model picker from your gateway’s /v1/models endpoint
DISABLE_DOCTOR_COMMANDSet to 1 to hide the /doctor command
DISABLE_LOGIN_COMMANDSet to 1 to hide the /login command
DISABLE_LOGOUT_COMMANDSet to 1 to hide the /logout command
DISABLE_UPGRADE_COMMANDSet to 1 to hide the /upgrade command
DISABLE_EXTRA_USAGE_COMMANDSet to 1 to hide the /usage-credits command
DISABLE_INSTALL_GITHUB_APP_COMMANDSet to 1 to hide the /install-github-app command
DISABLE_UPDATESSet to 1 to block all updates including manual claude update and claude install
IS_DEMOEnable demo mode: hides email/org info, skips onboarding. Useful when screensharing
VariableDescription
DISABLE_PROMPT_CACHINGDisable all prompt caching (1 to disable, takes precedence over per-model settings)
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
ENABLE_PROMPT_CACHING_1HSet to 1 to request a 1-hour prompt cache TTL instead of the default 5 minutes
ENABLE_PROMPT_CACHING_1H_BEDROCKDEPRECATED. Use ENABLE_PROMPT_CACHING_1H instead
FORCE_PROMPT_CACHING_5MSet to 1 to force the 5-minute cache TTL even when 1-hour TTL would otherwise apply
CLAUDE_CODE_ATTRIBUTION_HEADERSet to 0 to omit the attribution block from the system prompt. Improves prompt-cache hit rates through LLM gateways
VariableDescription
MAX_MCP_OUTPUT_TOKENSMax MCP output tokens per call (default: 25000). Warning shown when output exceeds 10,000 tokens
ENABLE_TOOL_SEARCHMCP tool search mode: auto:N activates when tool count exceeds N% of context, true always defers, false loads all upfront
MCP_CLIENT_SECRETMCP OAuth client secret. Avoids the interactive prompt when adding a server with --client-secret
MCP_OAUTH_CALLBACK_PORTFixed port for the MCP OAuth redirect callback
MCP_CONNECTION_NONBLOCKINGAs of v2.1.142, MCP startup is non-blocking by default. Set to 0 to restore the blocking 5-second wait
MCP_CONNECT_TIMEOUT_MSHow long blocking MCP startup waits before snapshotting the tool list (default: 5000)
MCP_SERVER_CONNECTION_BATCH_SIZEMaximum stdio MCP servers connected in parallel during startup (default: 3)
MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZEMaximum remote (HTTP/SSE) MCP servers connected in parallel during startup (default: 20)
CLAUDE_CODE_MCP_ALLOWLIST_ENVSet to 1 to spawn stdio MCP servers with only a safe baseline environment plus the server’s configured env
CLAUDE_AGENT_SDK_MCP_NO_PREFIXSet to 1 to skip the mcp__<server>__ prefix on tool names from SDK-created MCP servers
VariableDescription
HTTP_PROXYHTTP proxy URL for network requests
HTTPS_PROXYHTTPS proxy URL for network requests
NO_PROXYComma-separated hosts that bypass the proxy
CLAUDE_CODE_PROXY_RESOLVES_HOSTSAllow the proxy to perform DNS resolution (1 to enable)
CLAUDE_CODE_CERT_STOREComma-separated CA certificate sources: bundled (Mozilla CA set) and/or system (OS trust store). Default: bundled,system
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
CLAUDE_CODE_EXTRA_BODYJSON object merged into the top level of every API request body. Useful for provider-specific parameters
CLAUDE_ENABLE_STREAM_WATCHDOGSet to 1 to enable event-level streaming idle watchdog. Off by default
CLAUDE_ENABLE_BYTE_WATCHDOGForce-enable byte-level streaming idle watchdog. Default on for Anthropic API connections. Set 0 to disable
CLAUDE_STREAM_IDLE_TIMEOUT_MSTimeout in ms before the streaming watchdog closes a stalled connection (default minimum: 300000)
VariableDescription
CLAUDE_CODE_NO_FLICKERSet to 1 to enable fullscreen rendering (reduces flicker, keeps memory flat in long conversations). Equivalent to the tui setting
CLAUDE_CODE_DISABLE_ALTERNATE_SCREENSet to 1 to disable fullscreen rendering and use the classic main-screen renderer
CLAUDE_CODE_ALT_SCREEN_FULL_REPAINTSet to 1 to repaint the entire screen on every frame instead of incremental updates. Use if fullscreen mode shows stale text
CLAUDE_CODE_DISABLE_VIRTUAL_SCROLLSet to 1 to disable virtual scrolling in fullscreen mode. Use if scrolling shows blank regions
CLAUDE_CODE_DISABLE_MOUSESet to 1 to disable mouse tracking in fullscreen mode. Keeps terminal native copy-on-select behavior
CLAUDE_CODE_SCROLL_SPEEDMouse wheel scroll multiplier in fullscreen mode (1-20)
CLAUDE_CODE_NATIVE_CURSORSet to 1 to show the terminal’s own cursor at the input caret instead of a drawn block
CLAUDE_CODE_ACCESSIBILITYSet to 1 to keep the native terminal cursor visible and disable the inverted-text cursor indicator
CLAUDE_CODE_HIDE_CWDSet to 1 to hide the working directory in the startup logo
CLAUDE_CODE_TMUX_TRUECOLORSet to 1 to allow 24-bit truecolor output inside tmux
CLAUDE_CODE_FORCE_SYNC_OUTPUTSet to 1 to force-enable synchronized output (DEC private mode 2026) when your terminal supports it but is not auto-detected
CLAUDE_CODE_SYNTAX_HIGHLIGHTSet to false to disable syntax highlighting in diff output
CLAUDE_CODE_AUTO_CONNECT_IDEOverride automatic IDE connection. Set to false to prevent it, true to force a connection attempt
CLAUDE_CODE_IDE_HOST_OVERRIDEOverride the host address used to connect to the IDE extension
CLAUDE_CODE_IDE_SKIP_VALID_CHECKSet to 1 to skip validation of IDE lockfile entries during connection
DISABLE_COST_WARNINGSDisable cost warning messages
DISABLE_INSTALLATION_CHECKSDisable installation warnings
DISABLE_AUTOUPDATERDisable the auto-updater. Manual claude update still works
DISABLE_FEEDBACK_COMMANDDisable the /feedback command. Also accepted as DISABLE_BUG_COMMAND
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALLSkip automatic IDE extension installation (1 to skip)
SLASH_COMMAND_TOOL_CHAR_BUDGETCharacter budget for skill metadata shown to the Skill tool. Scales dynamically at 1% of the context window
VariableDescription
CLAUDE_CODE_PLUGIN_CACHE_DIROverride the plugins root directory (default: ~/.claude/plugins)
CLAUDE_CODE_PLUGIN_SEED_DIRPath(s) to read-only plugin seed directories, separated by : on Unix or ; on Windows. Use to bundle plugins into container images
CLAUDE_CODE_PLUGIN_PREFER_HTTPSSet to 1 to clone GitHub owner/repo sources over HTTPS instead of SSH
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURESet to 1 to keep existing marketplace cache when a git pull fails. Useful in offline environments
CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MSTimeout in ms for git operations during plugin install/update (default: 120000)
CLAUDE_CODE_SYNC_PLUGIN_INSTALLSet to 1 in non-interactive mode (-p flag) to wait for plugin installation before the first query
CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MSTimeout in ms for synchronous plugin installation. No default (waits until complete without this var)
CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESHSet to 1 to refresh plugin state at turn boundaries in non-interactive mode after a background install
FORCE_AUTOUPDATE_PLUGINSSet to 1 to force plugin auto-updates even when the main auto-updater is disabled
VariableDescription
CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTSSet to 1 to disable all built-in subagent types (Explore, Plan) in non-interactive mode only
CLAUDE_CODE_EXIT_AFTER_STOP_DELAYTime in ms to wait after the query loop becomes idle before automatically exiting. Useful for SDK/scripted sessions
CLAUDE_CODE_RESUME_INTERRUPTED_TURNSet to 1 to automatically resume if the previous session ended mid-turn. For SDK use
CLAUDE_CODE_RESUME_PROMPTOverride the continuation message injected when resuming a mid-turn session (default: Continue from where you left off.)
CLAUDE_CODE_SKIP_PROMPT_HISTORYSet to 1 to skip writing prompt history and session transcripts to disk
CLAUDE_CODE_SYNC_SKILLSSet to 1 to download enabled Claude.ai skills before the first query and resync every 10 minutes. Non-interactive mode only
CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MSTimeout in ms for initial skills sync when CLAUDE_CODE_SYNC_SKILLS is set (default: 5000)
CLAUDE_CODE_SCRIPT_CAPSJSON object limiting invocations of specific scripts per session when CLAUDE_CODE_SUBPROCESS_ENV_SCRUB is set
CCR_FORCE_BUNDLESet to 1 to force claude --remote to bundle and upload the local repo even when GitHub access is available
CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIXPrefix for auto-generated Remote Control session names. Defaults to machine hostname
VariableDescription
CLAUDE_CODE_TEAM_NAMETeam name for agent teams. Set automatically on agent team members
CLAUDE_CODE_TASK_LIST_IDShare a task list across sessions. Set the same ID in multiple Claude Code instances to coordinate on a shared task list

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

VariableDescription
CLAUDE_CODE_USER_EMAIL ⚠️ UnverifiedProvide user email synchronously for authentication
CLAUDE_CODE_ORGANIZATION_UUID ⚠️ UnverifiedProvide organization UUID synchronously for authentication
CLAUDE_CODE_ACCOUNT_UUID ⚠️ UnverifiedOverride account UUID for authentication
CLAUDE_CODE_PLAN_MODE_REQUIRED ⚠️ UnverifiedRequire plan mode for sessions
CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS ⚠️ UnverifiedAllow fast mode when org status check fails due to network error
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