Every environment variable, and where it lived
1,448 environment variables One tick per build on this box, oldest on the left. A gap is a build the environment variable was not in.○ not in v2.1.308, ◇ we found no documentation describing it.
Environment variableWhat it doesSpan v2.1.138 → v2.1.308 Status
CLAUDE_CODE_HOOKS_SAME_THREAD ◇ Plugins could ship JavaScript hook modules running in a worker, but loading is refused here.v2.1.242 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_AUTH_ENV_VAR ◇ When Claude Code removes certain environment variables, it now keeps the one named by CLAUDE_CODE_HOST_AUTH_ENV_VARv2.1.145 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_AUTH_REFRESH_TIMEOUT_MS ◇ Milliseconds Claude Code waits for the SDK host to answer a host_auth_token_refresh control request, used by the refresh hook registered when CLAUDE_CODE_SDK_HAS_HOST_AUTH_REFRESH is set. Default 30000; an unset, empty, 0 or non-numeric value uses the default.v2.1.145 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_CREDS_FILE ◇ A trailing slash in your host credentials file path no longer changes whether the rule matches.v2.1.198 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_GATEWAY_LINEAGE ◇ New CLAUDE_CODE_HOST_GATEWAY_LINEAGE variable keeps child processes of a Desktop-hosted gateway session treated as host-managedv2.1.281 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_PLATFORM ◇ A value of win32, darwin or linux replaces the real process.platform as the platform Claude Code reports alongside its version and account ids and in its environment details; any other value falls back to the real platform. The raw value is also reported as platformRaw (linux when unset) and read as the hostPlatform fact during environment detection.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_PROMPT_SUPERSEDES_RECORD ◇ CLAUDE_CODE_HOST_PROMPT_SUPERSEDES_RECORD, CLAUDE_CODE_MCP_SERVE_SETTINGS and CLAUDE_CODE_DISABLE_WEB_FETCH are now passed alongv2.1.285 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_SCHEDULED_RUN ◇ Scheduled-run tasks can now report why they fired, but only if the host explicitly opts in via CLAUDE_CODE_HOST_SCHEDULED_RUN=1v2.1.280 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_SESSION_ID ◇ Claude Code now recognizes a CLAUDE_CODE_HOST_SESSION_ID environment variablev2.1.274 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_SKILL_CATALOG ◇ In remote sessions, CLAUDE_CODE_HOST_SKILL_CATALOG can list the skills allowed to load, and invalid values are ignored with a warningv2.1.292 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_WORKTREE ◇ Two new environment variables let an embedding app block file writes inside chosen paths, except inside one declared worktreev2.1.288 → v2.1.308 ◆in the build
CLAUDE_CODE_HOST_WORKTREE_FENCE ◇ Two new environment variables let an embedding app block file writes inside chosen paths, except inside one declared worktreev2.1.288 → v2.1.308 ◆in the build
CLAUDE_CODE_HOSTED_DESKTOP ◇ Claude Code's lists of allowed usage events and host environment variables gain entries about MCP, skills and hosted setupsv2.1.290 → v2.1.308 ◆in the build
CLAUDE_CODE_HOVER_REST ◇ Plaintext credential reads could come from memory instead of the file, but only under off-by-default storage.v2.1.238 → v2.1.308 ◆in the build
CLAUDE_CODE_HUMBLE_HAMMOCK ◇ The env var controlling print and engine loop behavior was renamed to CLAUDE_CODE_HUMBLE_HAMMOCK and still defaults to off.v2.1.257 → v2.1.308 ◆in the build
CLAUDE_CODE_IDE_HOST_OVERRIDE Override the host address used to connect to the IDE extension. By default Claude Code auto-detects the correct address, including WSL-to-Windows routingv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL Set to 1 to skip auto-installation of IDE extensions. Equivalent to setting autoInstallIdeExtension to falsev2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_IDE_SKIP_VALID_CHECK Set to 1 to skip validation of IDE lockfile entries during connection. Use when auto-connect fails to find your IDE despite it runningv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS ◇ A new idleCompaction setting turns off background compaction while you're idle, and CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS sets its size thresholdv2.1.290 → v2.1.308 ◆in the build
CLAUDE_CODE_IDLE_THRESHOLD_MINUTES ◇ The 'new task? /clear' hint after a long idle spell now counts from the latest completed turn, including one that finished elsewherev2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_IDLE_TOKEN_THRESHOLD ◇ The 'new task? /clear' hint after a long idle spell now counts from the latest completed turn, including one that finished elsewherev2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_IGNORE_PERSISTED_TRUST ◇ With CLAUDE_CODE_IGNORE_PERSISTED_TRUST set, Claude Code ignores every saved record that you trusted a workspacev2.1.307 → v2.1.308 ◆in the build
CLAUDE_CODE_INCLUDE_PARTIAL_MESSAGES ◇ When 1, true, yes or on, acts like --include-partial-messages. Unlike the flag, which exits with an error unless used with --print and --output-format=stream-json, the variable is silently ignored outside that combination.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_INLINE_TOOLS ◇ Whether 'inline tools' are enabled is now decided by a consolidated check with environment-variable overridesv2.1.280 → v2.1.308 ◆in the build
CLAUDE_CODE_INTRO_FRAME ◇ An alternate opening line for Claude's system prompt can be switched on with an environment variable.v2.1.239 → v2.1.294 ○gone
CLAUDE_CODE_INVESTIGATE_FIRST ◇ Claude no longer spends up to a minute investigating before asking you a clarifying question.v2.1.138 or earlier → v2.1.222 ○gone
CLAUDE_CODE_IS_COWORK ◇ Account-synced skills no longer have file attachments pulled out, except on remote or Cowork runs.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_JIT_POLICY_AFTER_STARTUP ◇ Setting CLAUDE_CODE_JIT_POLICY_AFTER_STARTUP changes the code-compilation policy Claude Code switches to 10 seconds after startingv2.1.299 → v2.1.308 ◆in the build
CLAUDE_CODE_JSONL_TRANSCRIPT ◇ No description from anybody.v2.1.160 → v2.1.241 ○gone
CLAUDE_CODE_JUNIPER_SUNDIAL ◇ While ultra effort is on, the number of non-meta user messages since the last ultra_effort_enter attachment after which another, sparse ultra_effort_enter reminder is attached. A positive whole number here overrides the tengu_juniper_sundial value; otherwise that value (floored, at least 1) or the default 10 applies.v2.1.218 → v2.1.308 ◆in the build
CLAUDE_CODE_KB_COHESION_FIXES ◇ No description from anybody.v2.1.162 → v2.1.308 ◆in the build
CLAUDE_CODE_LANTERN_PRISM ◇ A Stats tab in /plugin shows skill usage and context costs, with /skill-doctor redirecting there.v2.1.207 → v2.1.308 ◆in the build
CLAUDE_CODE_LARCH_CISTERN ◇ SDK control commands like get_context_usage no longer need a special environment variable to be recognizedv2.1.217 → v2.1.308 ◆in the build
CLAUDE_CODE_LAZY_ENV_GETTERS ◇ Setting CLAUDE_CODE_LAZY_ENV_GETTERS makes Claude Code read each environment variable only when it is first neededv2.1.299 → v2.1.308 ◆in the build
CLAUDE_CODE_LEGACY_BUNDLE ◇ Set CLAUDE_CODE_LEGACY_BUNDLE to true to go back to the old single-file build shape.v2.1.242 → v2.1.308 ◆in the build
CLAUDE_CODE_LOOP_KEEPALIVE ◇ Self-paced loops now keep going until the budget is spent instead of stopping early.v2.1.157 → v2.1.308 ◆in the build
CLAUDE_CODE_LOOP_PERSISTENT ◇ The /loop tick prompt is no longer behind a remote flag and works for everyone.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_LUMINOUS_WHISTLE ◇ Reasoning text from a non-Claude model can survive a model switch, off unless enabled.v2.1.251 → v2.1.278 ○gone
CLAUDE_CODE_MANAGED_CONFIG_PREFETCH ◇ Claude Code can now reuse a policy-limits result fetched in advance, and CLAUDE_CODE_MANAGED_CONFIG_PREFETCH controls a hedge option on the fetchv2.1.292 → v2.1.308 ◆in the build
CLAUDE_CODE_MANAGED_SETTINGS_PATH ◇ Admin and managed settings now merge their env blocks instead of one replacing the other; you can opt out.v2.1.160 → v2.1.308 ◆in the build
CLAUDE_CODE_MARKETPLACE_NAME ◇ Marketplaces and plugins can run a command to mint short-lived HTTP headers for fetching archives.never mined ·never mined
CLAUDE_CODE_MARKETPLACE_URL ◇ Marketplaces and plugins can run a command to mint short-lived HTTP headers for fetching archives.never mined ·never mined
CLAUDE_CODE_MARL_CORMORANT ◇ Boolean. When true, the Bash tool's description gains the line - Command output is displayed to you, not reliably to the user. The same line is also added when the tengu_marl_cormorant flag is on, or when the model's prompt settings enable it.v2.1.215 → v2.1.223 ○gone
CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS 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 can't disable it. Requires Claude Code v2.1.217 or laterv2.1.217 → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_CONTEXT_TOKENS Override the context window size Claude Code assumes for the active model. As of v2.1.193, how it applies depends on how Claude Code resolves the model ID; see Correct the window for a gateway or custom model ID. Use this when routing to a model through ANTHROPIC_BASE_URL whose context window does not match the built-in size for its namev2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_EFFORT_REMINDER ◇ A new reminder can appear in the status line when effort is set to max, pointing you to /effort to change itv2.1.280 → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH Maximum length in characters of each MCP tool description and each MCP server's instructions that Claude Code sends to the model (default: 2048). Claude Code truncates longer text. Accepts a positive whole number in plain digits. Anything else is ignored and the default applies. Requires Claude Code v2.1.280 or laterv2.1.280 → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_OUTPUT_TOKENS Set the maximum number of output tokens for most requests. Defaults and caps vary by model; see max output tokens. Claude Code defaults to 32000 for model IDs it doesn't recognize, such as gateway-specific names, and lowers values above a model's cap to the cap. Increasing this value reduces the effective context window available before auto-compaction triggersv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_RETRIES Override the number of times to retry failed API requests (default: 10). Capped at 15 as of v2.1.186; as of v2.1.199, CLAUDE_CODE_RETRY_WATCHDOG raises the default and removes the cap. For unattended sessions that need to wait through longer outages, set CLAUDE_CODE_RETRY_WATCHDOG insteadv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH Number of subagent layers allowed below the main conversation (default: 3). At the default, subagents can spawn their own subagents, and a subagent at the third layer can't spawn further; set 1 to turn nesting off. In v2.1.217 through v2.1.218, the default was 1, so a subagent couldn't spawn its own unless you raised the limit; v2.1.219 raised the default to 3. Accepts a positive whole number in plain digits; anything else is ignored, so the limit can be adjusted but not removed. Requires Claude Code v2.1.217 or laterv2.1.217 → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION Removed in v2.1.224 and now a no-op. Previously capped the total number of subagents Claude could spawn with the Agent tool in one session (default: 200); spawning past the cap failed with Subagent spawn limit reached. The concurrent subagent limit and the depth limit still applyv2.1.212 → v2.1.223 ○gone
CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY Maximum number of read-only tools and subagents that can execute in parallel (default: 10). Higher values increase parallelism but consume more resourcesv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_TURNS Cap the number of agentic turns when no explicit limit is passed. Equivalent to passing --max-turns, which takes precedence when both are set. A value that is not a positive integer is rejected at startup with an error rather than treated as no capv2.1.139 → v2.1.308 ◆in the build
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION 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 laterv2.1.212 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_ALLOWLIST_ENV Set to 1 to spawn stdio MCP servers with only a safe baseline environment plus the server's configured env, instead of inheriting your shell environmentv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_ALWAYS_LOAD_JOIN_BEFORE_INPUT ◇ A new environment variable, CLAUDE_CODE_MCP_ALWAYS_LOAD_JOIN_BEFORE_INPUT, affects always-load MCP servers when set to exactly truev2.1.299 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_APPS_HOST ◇ With CLAUDE_CODE_MCP_APPS_HOST set to true, Claude Code tells MCP servers it accepts MCP App contentv2.1.281 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS 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 laterv2.1.198 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_CONNECTOR_PREWAIT_MS ◇ New CLAUDE_CODE_MCP_CONNECTOR_PREWAIT_MS environment variable overrides how long Claude Code waits for remote MCP servers to startv2.1.271 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_MEMORY_CGROUP ◇ On Linux you can force MCP servers into their own memory cgroup with an environment variable.v2.1.239 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_PREWAIT_SERVERS ◇ CLAUDE_CODE_MCP_PREWAIT_SERVERS and CLAUDE_CODE_MCP_PREWAIT_SERVERS_MS name MCP servers for remote worker sessions to wait for before the first turnv2.1.286 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_PREWAIT_SERVERS_MS ◇ CLAUDE_CODE_MCP_PREWAIT_SERVERS and CLAUDE_CODE_MCP_PREWAIT_SERVERS_MS name MCP servers for remote worker sessions to wait for before the first turnv2.1.286 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_STARTUP_WAIT_MS How long in milliseconds the first turn of a non-interactive session waits for MCP servers that are still connecting, in place of the default first-turn wait. When set, the wait covers every pending server. Set to 0 to skip the wait. A --permission-prompt-tool server keeps its own MCP_TIMEOUT wait regardless of the value. Requires Claude Code v2.1.274 or laterv2.1.274 → v2.1.308 ◆in the build
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT 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. Doesn't 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 timeoutv2.1.187 → v2.1.308 ◆in the build
CLAUDE_CODE_MEMORY_API_BASE_URL ◇ Your memory API base URL and token are now hidden from every command Claude runs.never mined ·never mined
CLAUDE_CODE_MEMORY_API_TOKEN ◇ Your memory API base URL and token are now hidden from every command Claude runs.never mined ·never mined
CLAUDE_CODE_MEMORY_PUSH_DELETE_MODE ◇ How memory store sync handles a previously synced memory file that is now missing locally when it pushes: immediate deletes the remote copy on that push, never keeps the remote copy, and corroborate deletes it only after the file has been seen missing on at least two walks at least 30 seconds apart. One of corroborate, immediate or never; unset falls back to the tengu_mem_push_delete_mode flag, default corroborate. In immediate and corroborate modes the mass-delete guard can still hold the deletes.v2.1.212 → v2.1.308 ◆in the build
CLAUDE_CODE_MEMORY_SUBAGENT_APPEND ◇ Subagents that share context now get a memory note added to their instructions; setting CLAUDE_CODE_MEMORY_SUBAGENT_APPEND stops itv2.1.283 → v2.1.308 ◆in the build
CLAUDE_CODE_MEMORY_WRITE_SURVEY_TIMEOUT_MS ◇ No description from anybody.v2.1.160 → v2.1.161 ○gone
CLAUDE_CODE_MESSAGES_PROMPT_CACHE_TTL ◇ A new environment variable, CLAUDE_CODE_MESSAGES_PROMPT_CACHE_TTL, sits alongside the existing prompt cache lifetime settingsv2.1.300 → v2.1.308 ◆in the build
CLAUDE_CODE_MESSAGING_SOCKET Set by Claude Code, not by you: in sessions that bind an inbox socket, Claude Code exports that socket's path to hooks and Bash commands when it binds the socket. In a session that starts with messaging on, Claude Code binds the socket before any hook runs. Other sessions on the machine deliver messages to this path. Each session exports its own socket rather than one inherited from a parent, and messages arriving on it go through the session's inbound controls. Settings env blocks can't set it. Requires Claude Code v2.1.224 or laterv2.1.224 → v2.1.308 ◆in the build
CLAUDE_CODE_MESSAGING_TOKEN Set by Claude Code, not by you: in sessions that bind an inbox socket, Claude Code exports this per-session token to hooks and Bash commands alongside CLAUDE_CODE_MESSAGING_SOCKET. A script posting to the socket can send {"type":"auth","token":"<token>"} as its first line to prove it belongs to the session. On native Windows, Claude Code requires this line and closes any connection that doesn't open with a valid one. The own-child rules say when Claude Code consults the token. Each session exports its own token, never one inherited from a parent session. Settings env blocks can't set it. Requires Claude Code v2.1.228 or laternever mined ·never mined
CLAUDE_CODE_MID_CONVERSATION_SYSTEM ◇ No description from anybody.v2.1.138 or earlier → v2.1.211 ○gone
CLAUDE_CODE_MOCK_REMOTE_SETTINGS ◇ No description from anybody.v2.1.160 → v2.1.308 ◆in the build
CLAUDE_CODE_MOCK_TRIAL ◇ No description from anybody.v2.1.160 → v2.1.308 ◆in the build
CLAUDE_CODE_MODEL_CAPABILITIES ◇ A new CLAUDE_CODE_MODEL_CAPABILITIES env var lets you manually force model capability flags on or offv2.1.268 → v2.1.308 ◆in the build
CLAUDE_CODE_MODEL_CATALOG ◇ The remote switch for the model catalog now has separate settings for serving and publishing it, and still falls back to offv2.1.251 → v2.1.308 ◆in the build
CLAUDE_CODE_MODEL_CATALOG_URL ◇ The model list, aliases and defaults can now come from a signed remote catalog document rather than only from app releases.v2.1.257 → v2.1.308 ◆in the build
CLAUDE_CODE_MORNING_BRIEF_PROMPT ◇ Replaces the built-in prompt of the /morning command. The value is trimmed and used only if it is between 500 and 50000 characters long; otherwise the bundled morning brief prompt is used. Any arguments given to /morning are appended under a ## User Request heading.v2.1.207 → v2.1.212 ○gone
CLAUDE_CODE_NANKEEN_KESTREL ◇ Windows sandbox TLS interception could use a persistent managed certificate authority, but that path is disabled here.v2.1.212 → v2.1.308 ◆in the build
CLAUDE_CODE_NATIVE_CURSOR 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 settingsv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_NEW_INIT Set to 1 to make /init run an interactive setup flow. The flow asks which files to generate, including CLAUDE.md, skills, and hooks, before exploring the codebase and writing them. Without this variable, /init generates a CLAUDE.md automatically without promptingv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_NO_FLICKER Set to 1 to enable fullscreen rendering, a research preview that reduces flicker and keeps memory flat in long conversations. Overrides the tui setting; you can also switch with /tui fullscreenv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_NO_MODEL_FALLBACK ◇ If your cloud account cannot use a model, Claude Code can step down to the next one; CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK turns this offv2.1.213 → v2.1.308 ◆in the build
CLAUDE_CODE_NONBLOCKING_STDOUT Set to 1 to write terminal output through a second non-blocking file descriptor, so a terminal that stops reading, such as a paused tmux control-mode pane or a stalled SSH connection, can't freeze Claude Code mid-session. Applies on macOS, Linux, and WSL when stdout is a terminal. Requires Claude Code v2.1.261 or laterv2.1.261 → v2.1.308 ◆in the build
CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES ◇ When set, caps retries of a non-streaming API request that failed with a request timeout after at least 90% of its non-streaming timeout had elapsed: once that many such retries have happened, the request fails. Unset leaves these timeouts to the normal retry logic, and the cap is not applied while CLAUDE_CODE_RETRY_WATCHDOG is set. Digits only, minimum 0.v2.1.285 → v2.1.308 ◆in the build
CLAUDE_CODE_OAUTH_401_WAIT_MS ◇ Milliseconds Claude Code waits for a rotated token after an API call returns 401 while its OAuth token comes from CLAUDE_CODE_OAUTH_TOKEN or the OAuth token file descriptor source; 0 skips the wait. Default 60000 when CLAUDE_CODE_REMOTE_SESSION_ID is set and 0 otherwise; minimum 0.v2.1.163 → v2.1.308 ◆in the build
CLAUDE_CODE_OAUTH_CLIENT_ID ◇ Overrides the OAuth client ID in Claude Code's OAuth configuration, and is passed as the client ID when logging in from CLAUDE_CODE_OAUTH_REFRESH_TOKEN. An empty value is ignored.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OAUTH_REFRESH_TOKEN OAuth refresh token for Claude.ai authentication. When set, claude auth login exchanges this token directly instead of opening a browser. Requires CLAUDE_CODE_OAUTH_SCOPES. Useful for provisioning authentication in automated environmentsv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OAUTH_SCOPES ◇ CLAUDE_CODE_OAUTH_SCOPES no longer defaults to 'user:inference' when unsetv2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OAUTH_TOKEN ◇ Three artifact environment variables are now recognised, with the API token stripped from spawned processes as a secret.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OAUTH_TOKEN_FILE_DESCRIPTOR ◇ Login tokens are warmed at startup, and skipped entirely for token-based auth.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OCHRE_KITE ◇ When safeguards stop a response, Claude Code now retries once on the same model by default; set CLAUDE_CODE_DISABLE_REFUSAL_RETRY to turn this offv2.1.273 → v2.1.281 ○gone
CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE ◇ No description from anybody.v2.1.140 → v2.1.211 ○gone
CLAUDE_CODE_ORGANIZATION_UUID ◇ Figuring out where your auth token came from is now asynchronous and returns both token forms together.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH ◇ Maximum characters of content (user prompts, system prompts, model output, tool input and tool results) Claude Code puts into a single OpenTelemetry attribute; longer content is cut and ends with a [TRUNCATED - Content exceeds ... limit] marker. Default 61440; the smallest of this and any set OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT or OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT applies. A positive integer, digits only.v2.1.213 → v2.1.308 ◆in the build
CLAUDE_CODE_OTEL_DIAG_STDERR ◇ When true, OpenTelemetry diagnostic errors are also written to stderr with the prefix [3P telemetry] OTEL diag error:, in addition to the debug log. Claude Code sets it to 1 in the environment of the sessions it launches with CLAUDE_CODE_ENVIRONMENT_KIND set to byoc.v2.1.179 → v2.1.308 ◆in the build
CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS ◇ Milliseconds Claude Code waits for its OpenTelemetry providers to flush before giving up and logging Telemetry flush timed out after ...ms. Some metrics may not be exported. Default 5000 when unset or not a number; 0 is taken literally, so the flush times out at once.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS ◇ Milliseconds Claude Code reuses the headers produced by the otelHeadersHelper script before running the script again. Default 1740000 (29 minutes); a non-numeric value uses the default.v2.1.138 or earlier → v2.1.308 ◆in the build
CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS ◇ The metrics opt-out check can no longer trigger a surprise second sign-in.v2.1.138 or earlier → v2.1.308 ◆in the build
Nothing on this page matches that. Press Enter to search every environment variable.