跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

环境变量

如何用 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_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 仍可能在选择起始权限模式之前取到开关。

本节页面