settings.json 的 env 属性不生效 - Claude Code
Quick fix
Claude Code 仅在启动时读取 settings.json,切换节点后需重启 Claude Code 或手动在终端设置环境变量。
Symptom
Section titled “Symptom”After switching providers via cc-switch, the `settings.json` is updated, but Claude Code doesn't reload the `env` config - `/status` still shows the old URL.这个问题的根本原因是因为 Claude Code 没有热重载 `settings.json` 配置文件的功能,它只有启动时加载一次 `settings.json` 配置文件。因此,通过 cc-switch 更换供应商后,虽然配置文件已更新,但 Claude Code 仍在使用旧的环境变量(如 `ANTHROPIC_MODEL`)。
重启 Claude Code,使其在启动时重新读取更新后的 `settings.json` 配置文件。
如果重启后仍未生效,请在终端中手动设置环境变量,然后再启动 Claude Code。
PowerShell / Terminal export ANTHROPIC_MODEL="your-model-name"作为替代方案,可以使用维护本地代理的工具(如 clash-for-ai),这样无需每次都修改配置文件即可切换。
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version未知
PlatformsWindowsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 1 个真实 issue
- 在 IDE 查看配置文件 setting.json 是正常的,但在 PowerShell 中查看环境变量是空值,为什么?
- 因为 Claude Code 不会在运行时动态读取 `settings.json` 中的 `env` 字段并注入到当前终端环境中,它只在启动时加载一次。
- 有没有办法避免每次切换都要重启或手动 export?
- 可以使用像 clash-for-ai 这样通过维护本地代理来实现切换的工具,从而完美避开修改配置文件带来的热重载问题。
ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY执行 `claude daemon stop --any` 停止残留 Claude 后台进程,然后确保 `~/.claude/settings.json` 的 `env` 中只保留一种认证变量。ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY打开 `~/.claude/settings.json`,删除重复的 auth 环境变量,只保留当前供应商需要的 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY`,保存后重启 Claude Code。Auth conflict退出 Claude 官方登录、清理冲突的 ANTHROPIC_* 环境变量,并将 ~/.claude.json 的 hasCompletedOnboarding 设为 true 后重启终端。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。