Skip to main content
环境变量可以控制 Claude Code 的行为,例如模型选择、身份验证、请求路由和功能切换。许多相同的行为也可以通过设置文件字段、CLI 标志或会话内命令(如 /model)进行配置。 本页面涵盖以下内容:

设置环境变量

在 shell 中设置的变量仅在该终端会话期间有效,而在设置文件中的变量每次运行 claude 时都会应用。

在 shell 中

在启动 claude 之前设置变量:
要为每个会话设置它,请将 export 行添加到 ~/.bashrc、~/.zshrc 或您的 shell 配置文件中。
赋值行在成功时不会打印任何内容,因此在运行 claude 之前,通过在同一 shell 中打印变量来确认它已设置:

在设置文件中

在 settings.json 文件中的 env 键下添加变量,如果文件不存在则创建它。Claude Code 直接从文件中读取它们,因此无论如何启动 claude,它们都会生效。运行中的会话在您保存文件时会将新值和更改的值应用到其环境中,但在启动时读取其变量一次的功能(例如 OpenTelemetry 监控)会保持其启动值,直到您重新启动。从文件中删除变量不会在运行中的会话中取消设置它;删除在您下次启动 claude 时生效。
~/.claude/settings.json
您选择的文件控制变量应用于谁: 请参阅 设置文件 了解每个文件的位置,以及 设置优先级 了解当多个文件设置相同变量时它们如何组合。

优先级

某些行为同时具有环境变量和专用设置键,Claude Code 读取哪一个的顺序因键而异。对于 ANTHROPIC_MODEL 和 CLAUDE_CODE_AUTO_CONNECT_IDE,Claude Code 首先读取变量,仅当变量未设置时才使用 model 或 autoConnectIde 设置。对于您正在设置的对,请检查下面变量的行和 设置参考 上的键条目。 当同一变量在您的 shell 和设置文件 env 块中都设置时,设置文件值适用。Claude Code 将每个 env 条目写入进程环境,替换从 shell 继承的值。env 设置 说明何时应用它们。少数变量是特殊情况;env 设置 列出了例外。 在设置文件中,您可以设置变量,但不能删除变量。要覆盖无法取消设置的变量,例如由您无法控制的 shell 配置文件导出的过时 CLAUDE_CODE_USE_VERTEX,请在 env 块中将其设置为空字符串:"CLAUDE_CODE_USE_VERTEX": ""。Claude Code 将空值视为未设置以进行提供程序选择。子进程仍然继承空值。 在设置文件之间,env 值遵循 设置优先级,因此托管设置条目覆盖用户或项目设置中的相同变量。项目和本地设置无法设置某些变量,例如 CLAUDE_CONFIG_DIR 和 OpenTelemetry 导出程序变量。Claude Code 在 env 中忽略的变量 列出了它们,以及仍然适用的 OpenTelemetry 关闭值。 环境变量与 CLI 标志和会话内命令的交互方式因功能而异:--model 和 /model 覆盖 ANTHROPIC_MODEL,而 CLAUDE_CODE_EFFORT_LEVEL 覆盖 --effort 和 /effort。当变量与另一个配置源交互时,变量 列表中的其行说明优先级或链接到记录它的页面。 Claude Code 在启动时读取 shell 环境变量,因此对它们的更改在您下次启动 claude 时生效。在设置文件中 env 键下设置的变量在文件更改时重新应用到运行中的会话,但 在设置文件中 描述的仅启动时例外除外。

变量

数值变量(如超时、令牌预算和重试次数)除了接受纯数字外,还接受科学记数法和数字分隔符拼写,除非变量的行注明仅接受纯数字。例如,Claude Code 将 2e3 读作 2000,将 64_000 读作 64000。在 v2.1.211 之前,这些拼写可能会无声地设置一个更小的值,例如 1e6 将超时设置为 1。
对于打开或关闭行为的变量,设置 1 或 true 以打开它,设置 0 或 false 以关闭它,不区分大小写。某些变量仅读取您是否设置了它们,因此任何非空值(包括 0)都会打开该行为,而通过取消设置变量或将其设置为空值来关闭该行为。这些变量的工作方式如下:
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • DISABLE_TELEMETRY
  • DISABLE_ERROR_REPORTING
  • CLAUDE_CODE_TMUX_TRUECOLOR
  • FALLBACK_FOR_ALL_PRIMARY_MODELS
  • IS_DEMO
另一个变量有自己的规则:FORCE_HYPERLINK 读取一个数字,所以只有 0 会关闭它。每个变量的行也说明了自己的规则。
标准 OpenTelemetry 导出器变量(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 和信号特定变体)也被支持。请参阅 监控 了解配置详情。 设置 CLAUDE_CODE_ENABLE_TELEMETRY 和打开导出、选择其目标或在您的 shell、用户设置或托管设置中捕获内容的 OpenTelemetry 变量。Claude Code 在项目和本地设置中忽略它们,除了关闭值该部分描述。OTEL_RESOURCE_ATTRIBUTES 和导出间隔、超时和压缩变量(如 OTEL_METRIC_EXPORT_INTERVAL)仍然从项目和本地设置应用。

需要特性标志获取的功能

Claude Code 通过从 Anthropic 获取的特性标志来启用某些功能。Claude Code 在以下会话中跳过该获取:
  • 一个会话中,你设置了 DISABLE_GROWTHBOOK、DISABLE_TELEMETRY、DO_NOT_TRACK 或 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC;变量表中每个变量的行说明了哪些值会关闭获取
  • 一个第三方提供商上的会话,例如 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud 的 Agent Platform 或 Microsoft Foundry,除非嵌入 Claude Code 的主机平台设置了 CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
  • 一个 Claude apps gateway 会话
关闭获取后,你无法:

安装或升级后的第一个会话

在你安装 Claude Code 后的第一个会话中,或升级到添加功能的版本后,特性标志门控功能可能会丢失。该会话也可能以不同的权限模式启动,而不是你后来的会话所做的那样。Claude Code 在该会话期间获取标志,所以你的下一个会话具有该功能和通常的起始权限模式。 在全新安装后,在非交互式会话中(例如 claude -p、Agent SDK 或 VS Code 扩展),Claude Code 仍然可以在选择起始权限模式之前获取标志。

另请参阅