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

设置环境变量

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

在 shell 中设置变量

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

在设置文件中设置变量

在 settings.json 文件中的 env 键下添加变量,如果文件不存在则创建它。Claude Code 直接从文件中读取它们,因此无论如何启动 claude,它们都会生效。运行中的会话在您保存文件时会将新值和更改的值应用到其环境中,但在启动时读取其变量一次的功能(例如 OpenTelemetry 监控)会保持其启动值,直到您重新启动。从文件中删除变量不会在运行中的会话中取消设置它;删除在您下次启动 claude 时生效。
~/.claude/settings.json
Claude Code 会按原样将这些值复制到其环境中。这些值不经过任何 shell 处理,因此 ~ 或 $HOME 等简写会保持输入时的原样。对于接受路径的变量(例如 CLAUDE_CONFIG_DIR),请写入绝对路径:"CLAUDE_CONFIG_DIR": "/home/you/.claude-work"。 您选择的文件控制变量应用于谁: 请参阅 设置文件 了解每个文件的位置,以及 设置优先级 了解当多个文件设置相同变量时它们如何组合。

优先级

某些行为同时具有环境变量和专用设置键,Claude Code 读取哪一个的顺序因键而异。对于 ANTHROPIC_MODEL 和 CLAUDE_CODE_AUTO_CONNECT_IDE,Claude Code 首先读取变量,仅当变量未设置时才使用 model 或 autoConnectIde 设置。对于您正在设置的对,请检查下面变量的行和 设置参考 上的键条目。 当同一变量在您的 shell 和设置文件 env 块中都设置时,在大多数会话中设置文件值适用。Claude Code 将每个 env 条目写入进程环境,替换从 shell 继承的值。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 键下设置的变量在文件更改时重新应用到运行中的会话,但 在设置文件中设置变量 中描述的仅启动时例外除外。

变量

数值型变量(例如超时时间、token 预算和重试次数)除了接受纯数字外,还接受科学计数法和数字分隔符写法,除非某个变量所在行注明仅接受纯数字。例如,Claude Code 会将 2e3 读取为 2000,将 64_000 读取为 64000。在 v2.1.211 之前,这些写法可能会静默地设置一个小得多的值,例如 1e6 会将超时时间设置为 1。
对于启用或关闭某项行为的变量,设置为 1、true、yes 或 on 即可启用,设置为 0、false、no 或 off 即可关闭,不区分大小写。某些变量只读取您是否设置了它们,因此任何非空值(包括 0)都会启用该行为;要关闭该行为,请取消设置该变量或将其设置为空值。以下变量按这种方式工作:
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • DISABLE_TELEMETRY
  • DISABLE_ERROR_REPORTING
  • CLAUDE_CODE_TMUX_TRUECOLOR
  • IS_DEMO
每个变量所在行也会说明其自身的规则。
同样支持标准 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 以及特定信号的变体)。有关配置详细信息,请参阅监控。 请在 shell、用户设置或托管设置中设置 CLAUDE_CODE_ENABLE_TELEMETRY 以及用于开启导出、选择导出目标或捕获内容的 OpenTelemetry 变量。Claude Code 会在项目和本地设置中忽略它们,但该部分所述的关闭值除外。OTEL_RESOURCE_ATTRIBUTES 以及导出间隔、超时和压缩相关变量(例如 OTEL_METRIC_EXPORT_INTERVAL)在项目和本地设置中仍然适用。

子进程环境清理会移除哪些内容

当您将 CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 设置为 1 时,Claude Code 会从其启动的子进程(例如 Bash 命令、hook 和 stdio MCP 服务器)的环境中移除凭据。这可以减少提示词注入攻击所能读取的内容。Claude Code 进程本身会保留这些凭据,用于其自身的 API 调用。 清理功能通过变量名或变量值的形态来识别凭据,因此应将其作为与精细的权限规则配合使用的一层防护,而不是唯一的控制手段。 下表展示了清理功能对示例变量的处理方式: 由于清理功能会保留 GITHUB_TOKEN,请为 GitHub Actions 作业授予其所需的最小 permissions。要从沙箱化的 Bash 命令中移除 GitHub 令牌,请在 sandbox.credentials 下添加一个 deny 条目。 如果某个子进程需要用到被移除的变量之一,请不要设置清理功能。 在 Linux 上,清理功能还会在隔离的 PID 命名空间中运行 Bash 子进程,使其无法通过 /proc 读取主机进程的环境。这带来的一个副作用是,ps、pgrep 和 kill 无法看到主机进程,也无法向其发送信号。 在 v2.1.251 之前,清理功能会移除 ANTHROPIC_API_KEY 和 AWS_SECRET_ACCESS_KEY,而表中的其他示例变量保持不变。

需要获取功能标志的功能

Claude Code 通过从 Anthropic 获取的功能标志来启用部分功能。在以下会话中,Claude Code 会跳过该获取操作:
  • 设置了 CLAUDE_CODE_DISABLE_FEATURE_FLAGS、DISABLE_TELEMETRY、DO_NOT_TRACK 或 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 的会话;变量表中每个变量所在的行说明了哪些值会关闭获取
  • 使用第三方提供商(例如 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry)的会话,除非嵌入 Claude Code 的宿主平台设置了 CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
  • Claude apps 网关会话
关闭获取后,您将无法:

安装或升级后的首个会话

在您安装 Claude Code 后,或升级到新增某项功能的版本后,首个会话中可能缺少受标志控制的功能。Claude Code 在该会话期间获取功能标志后,会将其保存在本机上,因此您在该机器上的下一个会话将具备该功能。 在以下这类设置中,首个会话之后的会话同样会在没有新获取标志的情况下启动:
  • 每次运行都是全新环境:如果每次运行都在 CI 容器中启动,或在任何没有先前会话所保存标志的其他环境中启动,那么每次运行都是首个会话
  • 使用网关令牌且没有 API 密钥:如果您使用 ANTHROPIC_AUTH_TOKEN 进行身份验证且没有 API 密钥,并且 ANTHROPIC_BASE_URL 指向 Anthropic 以外的主机(例如 LLM 网关),Claude Code 将没有可用于获取标志的凭据

另请参阅