环境变量
如何用 shell 或设置文件设置环境变量、优先级规则,以及最常用的 Claude Code 环境变量(认证、网关、云厂商、超时、遥测、记忆等)。
本页是控制 Claude Code 行为的环境变量参考。官方原文列出数百个变量,下面按用途整理了最常用的一部分,完整清单以官方为准。
设置环境变量
在 shell 里设置的变量在那个终端会话里有效,设置文件里的变量则在每次运行 claude 时都生效。
在你的 shell 里:启动 claude 之前设置变量,例如:
export API_TIMEOUT_MS="1200000"
claude想对每个会话都生效,把 export 行加到 ~/.bashrc、~/.zshrc 或你 shell 的配置文件里。在 PowerShell 里用 $env:API_TIMEOUT_MS = "1200000",想永久生效运行 [Environment]::SetEnvironmentVariable("API_TIMEOUT_MS", "1200000", "User") 并打开新终端;在 CMD 里用 set API_TIMEOUT_MS=1200000,永久生效用 setx。
在设置文件里:在 settings.json 的 env 键下添加变量(文件不存在就创建)。Claude Code 直接从文件读取它们,所以不管 claude 是怎么启动的都会生效:
{
"env": {
"API_TIMEOUT_MS": "1200000",
"BASH_DEFAULT_TIMEOUT_MS": "300000"
}
}你选择的文件决定变量对谁生效:~/.claude/settings.json(你在每个项目里)、.claude/settings.json(在项目里工作的每个人,提交进源码管理)、.claude/settings.local.json(只有你在这个项目里,Claude Code 保存设置时会被 gitignore;手工创建时要自己加进 gitignore)、托管设置(你组织里的每个人,由管理员部署)。
优先级
一些行为既有环境变量又有专门的设置键,Claude Code 先读哪个因键而异。对 ANTHROPIC_MODEL,Claude Code 先读变量,再用 model 设置。同一个变量同时在 shell 和设置文件 env 块里设置时,在大多数会话里设置文件的值生效(Claude Code 把每个 env 条目写入进程环境,替换从 shell 继承的值)。
在设置文件里你可以设置一个变量,但不能移除一个变量。想覆盖一个你无法取消设置的变量(比如你无法控制的 shell 配置文件导出的过期 CLAUDE_CODE_USE_VERTEX),在 env 块里把它设为空字符串。设置文件之间,env 值遵循设置优先级,所以托管设置的条目覆盖用户或项目设置里的同名变量。
环境变量与 CLI 标志和会话内命令的交互因功能而异:--model 和 /model 覆盖 ANTHROPIC_MODEL,而 CLAUDE_CODE_EFFORT_LEVEL 覆盖 --effort 和 /effort。Claude Code 在启动时读取 shell 环境变量,所以改动要在下次启动 claude 时才生效;设置文件 env 键下的变量在文件变化时会重新应用到运行中的会话(只在启动时读取的除外)。
开关类变量的取值:想打开某个行为,设 1、true、yes 或 on,想关闭设 0、false、no 或 off(不区分大小写)。但有些变量只检查你有没有设置,任何非空值(包括 0)都会打开该行为,要关闭它得取消设置或设为空:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DISABLE_ERROR_REPORTING、CLAUDE_CODE_TMUX_TRUECOLOR、FALLBACK_FOR_ALL_PRIMARY_MODELS、IS_DEMO。超时、token 预算和重试次数这类数值变量接受科学计数法和分隔符写法。
变量清单
官方列出约 370 个环境变量,按名称前缀分页整理(每页都是「变量 → 用途」表):
- 服务商、认证与模型别名:
ANTHROPIC_*、VERTEX_REGION_*、AWS_*、API_*等 - CLAUDE_CODE_* 变量(A 到 E)
- CLAUDE_CODE_* 变量(F 到 O)
- CLAUDE_CODE_* 变量(P 到 W)
- 其他变量:
CLAUDE_*、DISABLE_*、ENABLE_*、MCP_*、OTEL_*、BASH_*、代理和调试类变量
几个最常用的:ANTHROPIC_API_KEY(用它而不是订阅登录)、ANTHROPIC_BASE_URL(走代理或网关)、ANTHROPIC_MODEL(模型)、CLAUDE_CONFIG_DIR(配置目录,默认 ~/.claude)、API_TIMEOUT_MS(API 请求超时)、DISABLE_TELEMETRY(退出遥测,注意设为 0 仍然是退出)。
需要拉取功能开关的功能
Claude Code 通过从 Anthropic 拉取的功能开关来打开部分功能。以下会话不拉取:设置了 DISABLE_GROWTHBOOK、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 gateway 会话。关闭拉取后你不能:运行 /auto-mode-setup 起草 autoMode.environment 条目;在设置了 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 或 DISABLE_GROWTHBOOK 时使用 Remote Control;在 Remote Control 不可用时给本机之外的会话发消息(本机会话之间的消息仍可用);运行 claude import 或 /import;运行 /skill-doctor;把 claude.ai 账号里启用的 Skill 和插件同步到终端会话;使用 advisor 工具;读取或回复制品(artifact)上的评论;让 Claude Code 探测 claude.ai 连接器服务器的新版 MCP 协议修订(除非设置 MCP_PROTOCOL_NEGOTIATION=auto);在装有 Git Bash 的 Windows 上默认获得 PowerShell 工具(改走 Git Bash,除非设置 CLAUDE_CODE_USE_POWERSHELL_TOOL=1);获得 Claude 起草的反馈;让 Claude 把大段粘贴当作「粘贴」而不是「键入」的文本;让 Claude Code 排除其输入 schema 会被 API 拒绝的 MCP 工具(它仍会发送该 schema,包含它的请求会因 400 错误而失败)。
安装或升级后的第一个会话:这个会话里可能缺少受开关控制的功能,也可能以不同的权限模式启动;全新安装后,在 claude -p、Agent SDK 或 VS Code 扩展这类非交互会话里,Claude Code 仍可能在选择起始权限模式之前取到开关。
In this section
- 服务商、认证与模型别名ANTHROPIC_*、VERTEX_REGION_*、AWS_* 和 API_* 环境变量:API Key 与令牌、端点覆盖、Bedrock/Vertex/Foundry、Workload Identity Federation、模型别名与 /model 条目。
- CLAUDE_CODE_* 变量(A 到 E)以 CLAUDE_CODE_A 到 CLAUDE_CODE_E 开头的环境变量:无障碍、自动压缩窗口、证书与 mTLS、调试日志、各类 DISABLE_* 开关、努力等级、遥测与实验功能。
- CLAUDE_CODE_* 变量(F 到 O)以 CLAUDE_CODE_F 到 CLAUDE_CODE_O 开头的环境变量:文件读取、终端渲染、fork 子智能体、网关提示头、IDE 连接、各类上限与并发、MCP 超时、OAuth 与 OpenTelemetry。
- CLAUDE_CODE_* 变量(P 到 W)以 CLAUDE_CODE_P 到 CLAUDE_CODE_W 开头的环境变量:插件、PowerShell 与 shell、提示缓存、代理、会话恢复与重试、安全模式、跳过认证、子智能体、插件与 Skill 同步、WebFetch 与工作流。
- 其他变量BASH_*、CLAUDE_*、DISABLE_*、ENABLE_*、MCP_*、OTEL_*、代理和调试类环境变量:Bash 超时与输出、流式空闲看门狗、压缩与提示缓存、遥测退出、MCP 启动与发现缓存、OpenTelemetry 属性。