HoRain云--Claude Code 环境变量
🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
《C语言》 | 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
《网络协议》 | 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
《docker容器精解篇》 | 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
《linux系列》 | 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
《python 系列》 | 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
《试题库》 | 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
⛳️ 推荐
专栏介绍
环境变量概述
认证相关变量
配置示例
实例
实例
模型配置变量
使用场景
实例
工具与命令变量
权限与安全变量
权限模式详解
实例
日志与调试变量
会话与历史变量
MCP 相关变量
工作流相关变量
GitHub Actions 专用变量
settings.json 配置方式
实例
VS Code 插件配置
实例
常见使用场景
场景一:使用代理或自定义 API 端点
实例
场景二:优化成本配置
实例
场景三:CI/CD 环境安全配置
实例
场景四:Windows PowerShell 环境
实例
优先级与覆盖
查看当前配置
最佳实践
1、敏感信息处理
2、按环境配置
3、集中管理
常见问题
环境变量是控制 Claude Code 行为的重要方式,无需编辑配置文件即可灵活调整各项设置。本章详细介绍 Claude Code 支持的所有环境变量、它们的用途、配置方式以及常见使用场景。
环境变量概述
Claude Code 使用环境变量来控制行为,这些变量可以通过以下方式设置:
- 直接在 shell 中
export - 在
~/.claude/settings.json的env字段中配置 - 在项目级
.claude/settings.json中配置 - 通过 IDE 插件的设置界面配置
环境变量优先级从高到低:命令行 > 项目级 settings.json > 用户级 settings.json > shell 环境变量。在 settings.json 中配置的变量会自动传递给 Claude 进程。
认证相关变量
| 变量名 | 说明 | 值 |
|---|---|---|
ANTHROPIC_API_KEY | Claude API 密钥(从 claude.ai 获取) | API 密钥字符串 |
ANTHROPIC_BASE_URL | API 请求的目标地址(用于代理或自定义端点) | URL 地址 |
ANTHROPIC_AUTH_TOKEN | 认证令牌(用于 VS Code 插件等场景) | 令牌字符串 |
配置示例
实例
# 在 shell 中设置
export ANTHROPIC_API_KEY="sk-ant-xxxxx"
export ANTHROPIC_BASE_URL="https://api.anthropic.com"
实例
// 在 settings.json 中配置
{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-xxxxx",
"ANTHROPIC_BASE_URL": "https://custom-proxy.com/v1"
}
}
模型配置变量
| 变量名 | 说明 | 值 |
|---|---|---|
ANTHROPIC_MODEL | 默认使用的模型 | claude-opus-4-5、claude-sonnet-4-5、claude-haiku-3-5等 |
ANTHROPIC_SMALL_FAST_MODEL | 快速响应模式使用的模型(用于简单任务) | 模型名称 |
CLAUDE_CODE_SUBAGENT_MODEL | 统一设置所有子代理使用的模型 | 模型名称 |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS | 使用 Bedrock 或 Vertex 的 Anthropic Messages 格式时禁用实验性功能 | 1 |
使用场景
子代理默认继承主对话的模型。通过CLAUDE_CODE_SUBAGENT_MODEL可以统一设置,将简单任务交给 Haiku,将复杂分析交给 Sonnet,从而优化成本:
实例
# 主对话用 Opus 做复杂推理,子代理统一用 Sonnet
export ANTHROPIC_MODEL="claude-opus-4-5"
export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-5"
工具与命令变量
| 变量名 | 说明 | 值 |
|---|---|---|
CLAUDE_CODE_DISABLE_SLASH_COMMANDS | 禁用所有斜杠命令 | 1 |
CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS | 禁用内置的 Git 相关系统提示词(优先级高于 settings.json 中的includeGitInstructions) | 1 |
CLAUDE_CODE_USE_POWERSHELL_TOOL | 在 Windows 上启用 PowerShell 工具(需要配合defaultShell: "powershell"设置) | 1 |
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL | 跳过自动安装 IDE 扩展(替代autoInstallIdeExtension设置) | 1 |
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS | 禁用后台任务功能 | 1 |
权限与安全变量
| 变量名 | 说明 | 值 |
|---|---|---|
CLAUDE_CODE_PERMISSION_MODE | 设置默认权限模式(详见子代理章节) | default、acceptEdits、dontAsk、bypassPermissions、plan |
CLAUDE_CODE_ALLOWED_TOOLS | 允许 Claude 使用的工具白名单(逗号分隔) | 工具列表 |
CLAUDE_CODE_DISALLOWED_TOOLS | 禁止 Claude 使用的工具黑名单 | 工具列表 |
权限模式详解
default:正常权限提示,每次操作前询问acceptEdits:自动接受文件编辑,无需确认dontAsk:自动拒绝未授权操作,不中断执行bypassPermissions:跳过所有权限检查(仅限完全可信环境)plan:只读规划模式,不执行写操作
实例
# 在 CI 环境中使用只读模式
export CLAUDE_CODE_PERMISSION_MODE="plan"
export CLAUDE_CODE_ALLOWED_TOOLS="Read,Grep,Glob,Bash(gh *)"
日志与调试变量
| 变量名 | 说明 | 值 |
|---|---|---|
CLAUDE_CODE_DEBUG | 启用调试输出 | 1 |
CLAUDE_CODE_ENABLE_TELEMETRY | 启用遥测数据收集 | 1 |
OTEL_METRICS_EXPORTER | OpenTelemetry 指标导出器 | otlp等 |
会话与历史变量
| 变量名 | 说明 | 值 |
|---|---|---|
CLAUDE_CODE_DISABLE_HISTORY | 禁用对话历史保存 | 1 |
CLAUDE_CODE_SESSION_TIMEOUT | 会话超时时间(秒) | 数字 |
CLAUDE_CODE_MAX_SESSIONS | 最大保存的会话数量 | 数字 |
MCP 相关变量
当 Claude Code 执行 MCP 工具时,会设置以下环境变量:
| 变量名 | 说明 | 值 |
|---|---|---|
CLAUDE_CODE_MCP_SERVER_NAME | MCP 服务器名称 | 字符串 |
CLAUDE_CODE_MCP_TOOL_NAME | 正在调用的 MCP 工具名称 | 字符串 |
CLAUDE_CODE_MCP_TOOL_ARGS | 传递给 MCP 工具的参数 | JSON 字符串 |
工作流相关变量
| 变量名 | 说明 | 值 |
|---|---|---|
CLAUDE_CODE_WORKTREE_CLEANUP_PERIOD_DAYS | 孤立 worktree 的自动清理周期 | 天数 |
CLAUDE_CODE_DISABLE_WORKTREE_AUTO_CLEANUP | 禁用 worktree 自动清理 | 1 |
GitHub Actions 专用变量
| 变量名 | 说明 | 值 |
|---|---|---|
ANTHROPIC_VERTEX_PROJECT_ID | Vertex AI 项目 ID(使用 Vertex 时由认证步骤设置) | GCP 项目 ID |
CLOUD_ML_REGION | Vertex AI 区域 | 区域代码(如us-east5) |
settings.json 配置方式
所有环境变量都可以在settings.json中配置,这种方式更加声明式和可移植:
实例
{
"env": {
"ANTHROPIC_MODEL": "claude-sonnet-4-5",
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-haiku-3-5",
"CLAUDE_CODE_PERMISSION_MODE": "plan",
"CLAUDE_CODE_ALLOWED_TOOLS": "Read,Grep,Glob,Bash",
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp"
}
}
VS Code 插件配置
在 VS Code 中使用 Claude Code 插件时,可以通过environmentVariables设置:
实例
{
"claudeCode.environmentVariables": [
{
"name": "ANTHROPIC_BASE_URL",
"value": "https://custom-proxy.com/api"
},
{
"name": "ANTHROPIC_AUTH_TOKEN",
"value": "your-token-here"
},
{
"name": "ANTHROPIC_MODEL",
"value": "claude-sonnet-4-5"
}
]
}
常见使用场景
场景一:使用代理或自定义 API 端点
实例
# 通过企业内部代理访问 Claude API
export ANTHROPIC_BASE_URL="https://proxy.company.com/anthropic/v1"
export ANTHROPIC_API_KEY="your-api-key"
场景二:优化成本配置
实例
# 主对话用 Sonnet,子代理统一用 Haiku
export ANTHROPIC_MODEL="claude-sonnet-4-5"
export CLAUDE_CODE_SUBAGENT_MODEL="claude-haiku-3-5"
场景三:CI/CD 环境安全配置
实例
# CI 环境中使用只读模式
export CLAUDE_CODE_PERMISSION_MODE="plan"
export CLAUDE_CODE_DISABLE_HISTORY="1"
export CLAUDE_CODE_ALLOWED_TOOLS="Read,Grep,Glob,Bash(gh *)"
场景四:Windows PowerShell 环境
实例
# Windows 上启用 PowerShell
$env:CLAUDE_CODE_USE_POWERSHELL_TOOL = "1"
# 在 settings.json 中设置 defaultShell
优先级与覆盖
环境变量的优先级(从高到低):
- 命令行
export设置 - 项目级
.claude/settings.json - 用户级
~/.claude/settings.json - Claude Code 默认值
在
settings.json中配置的变量会覆盖同名的 shell 环境变量。这是因为 settings.json 在 Claude Code 进程启动时被显式读取,优先级更高。
查看当前配置
使用/config命令可以查看当前的完整配置:
/config
这会显示所有当前生效的设置,包括环境变量和 settings.json 中的配置。
最佳实践
1、敏感信息处理
- API 密钥等敏感信息不要硬编码在 settings.json 中
- 使用环境变量或 shell 配置文件(
~/.bashrc、~/.zshrc) - 确保包含敏感信息的文件不在 git 版本控制中
2、按环境配置
- 本地开发:使用更宽松的权限模式
- CI/CD:使用只读模式
plan - 生产调试:启用
CLAUDE_CODE_DEBUG
3、集中管理
- 通用配置放在
~/.claude/settings.json - 项目特有配置放在项目目录的
.claude/settings.json - 敏感配置通过 shell 环境变量或 CI Secrets 提供
常见问题
Q:环境变量和 settings.json 哪个优先?
在 settings.json 中配置的变量优先级更高,会覆盖同名的 shell 环境变量。
Q:如何让 Claude Code 使用不同的 API 端点?
设置ANTHROPIC_BASE_URL环境变量指向你的代理或自定义端点。
Q:子代理如何控制使用的模型?
可以通过CLAUDE_CODE_SUBAGENT_MODEL统一设置所有子代理的模型,也可以在每个子代理的 frontmatter 中单独指定。
Q:在 Windows 上如何启用 PowerShell?
设置环境变量CLAUDE_CODE_USE_POWERSHELL_TOOL=1,同时在 settings.json 中设置defaultShell: "powershell"。
Q:如何禁用所有斜杠命令?
设置CLAUDE_CODE_DISABLE_SLASH_COMMANDS=1环境变量。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
