Skip to content

Claude Code 设置

使用全局和项目级设置以及环境变量配置 Claude Code。

Claude Code 提供多种设置来配置其行为以满足你的需求。你可以在使用交互式 REPL 时运行 /config 命令来配置 Claude Code,这会打开一个标签式设置界面,你可以在其中查看状态信息和修改配置选项。

配置范围

Claude Code 使用范围系统来确定配置的适用位置和共享对象。了解范围有助于你决定如何为个人使用、团队协作或企业部署配置 Claude Code。

可用范围

范围位置影响对象与团队共享?
托管服务器管理的设置、plist / 注册表或系统级 managed-settings.json机器上的所有用户是(由 IT 部署)
用户~/.claude/ 目录你,跨所有项目
项目仓库中的 .claude/此仓库的所有协作者是(提交到 git)
本地.claude/settings.local.json你,仅在此仓库中否(gitignored)

何时使用每个范围

托管范围适用于:

  • 必须在组织范围内强制执行的安全策略
  • 不能被覆盖的合规要求
  • 由 IT/DevOps 部署的标准化配置

用户范围最适合:

  • 你到处都想要的个人偏好(主题、编辑器设置)
  • 你跨所有项目使用的工具和插件
  • API 密钥和认证(安全存储)

项目范围最适合:

  • 团队共享设置(权限、Hook、MCP 服务器)
  • 整个团队应该有的插件
  • 跨协作者标准化工具

本地范围最适合:

  • 特定项目的个人覆盖
  • 在与团队共享前测试配置
  • 对其他人不适用的机器特定设置

范围如何交互

当同一设置出现在多个范围中时,Claude Code 按优先级顺序应用:

  1. 托管(最高)- 不能被任何东西覆盖
  2. 命令行参数 - 临时会话覆盖
  3. 本地 - 覆盖项目和用户设置
  4. 项目 - 覆盖用户设置
  5. 用户(最低)- 当没有其他指定时应用

例如,如果你的用户设置将 spinnerTipsEnabled 设为 true,项目设置将其设为 false,则项目值适用。权限规则表现不同,因为它们跨范围合并而非覆盖。

什么使用范围

功能用户位置项目位置本地位置
设置~/.claude/settings.json.claude/settings.json.claude/settings.local.json
子 Agent~/.claude/agents/.claude/agents/
MCP 服务器~/.claude.json.mcp.json~/.claude.json(按项目)
插件~/.claude/settings.json.claude/settings.json.claude/settings.local.json
CLAUDE.md~/.claude/CLAUDE.mdCLAUDE.md.claude/CLAUDE.mdCLAUDE.local.md

在 Windows 上,显示为 ~/.claude 的路径解析为 %USERPROFILE%\.claude


设置文件

settings.json 文件是通过分层设置配置 Claude Code 的官方机制:

  • 用户设置定义在 ~/.claude/settings.json,适用于所有项目。

  • 项目设置保存在你的项目目录中:

    • .claude/settings.json 用于提交到源代码控制并与团队共享的设置
    • .claude/settings.local.json 用于不提交的设置,适用于个人偏好和实验。Claude Code 在创建时会配置 git 忽略 .claude/settings.local.json
  • 托管设置:对于需要集中控制的组织,Claude Code 支持多种交付机制:

    • 服务器管理的设置:通过 Claude.ai 管理控制台从 Anthropic 服务器交付。

    • MDM/操作系统级策略:通过 macOS 和 Windows 上的原生设备管理交付:

      • macOS:com.anthropic.claudecode 托管偏好域
      • Windows:HKLM\SOFTWARE\Policies\ClaudeCode 注册表项
      • Windows(用户级):HKCU\SOFTWARE\Policies\ClaudeCode
    • 基于文件managed-settings.jsonmanaged-mcp.json 部署到系统目录:

      • macOS:/Library/Application Support/ClaudeCode/
      • Linux 和 WSL:/etc/claude-code/
      • Windows:C:\Program Files\ClaudeCode\

      旧版 Windows 路径 C:\ProgramData\ClaudeCode\managed-settings.json 自 v2.1.75 起不再支持。

      基于文件的托管设置还支持在 managed-settings.json 旁边的同一系统目录中的 managed-settings.d/ 插入目录。

      遵循 systemd 约定,managed-settings.json 首先作为基础合并,然后插入目录中的所有 *.json 文件按字母顺序排序并合并到上面。后面的文件覆盖标量值的前面文件;数组被连接并去重;对象被深度合并。以 . 开头的隐藏文件被忽略。

      使用数字前缀控制合并顺序,例如 10-telemetry.json20-security.json

  • 其他配置存储在 ~/.claude.json。此文件包含你的 OAuth 会话、用户和本地范围的 MCP 服务器配置、按项目状态(允许的工具、信任设置)和各种缓存。项目范围的 MCP 服务器单独存储在 .mcp.json 中。

Claude Code 自动创建配置文件的带时间戳备份,并保留最近五个备份以防止数据丢失。

json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp"
  },
  "companyAnnouncements": [
    "Welcome to Acme Corp! Review our code guidelines at docs.acme.com",
    "Reminder: Code reviews required for all PRs",
    "New security policy in effect"
  ]
}

编辑何时生效

Claude Code 监视你的设置文件并在更改时重新加载,因此大多数键的编辑无需重启即可应用于运行中的会话。这包括 permissionshooks 和凭证助手如 apiKeyHelper。重新加载涵盖用户、项目、本地和托管设置,ConfigChange Hook 为每个检测到的更改触发。

少数键在会话开始时读取一次,在下次重启时应用:

  • model:使用 /model 在会话中切换
  • outputStyle:系统提示的一部分,在 /clear 或重启时重建

可用设置

settings.json 支持多个选项:

描述示例
agent将主线程作为命名子 Agent 运行"code-reviewer"
allowedChannelPlugins(托管)可推送消息的通道插件白名单[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]
allowedHttpHookUrlsHTTP Hook 可能目标的 URL 模式白名单["https://hooks.example.com/*"]
allowedMcpServers在 managed-settings.json 中设置时,用户可配置的 MCP 服务器白名单[{ "serverName": "github" }]
allowManagedHooksOnly(托管)仅加载托管 Hook、SDK Hook 和强制启用的插件 Hooktrue
allowManagedMcpServersOnly(托管)仅应用管理员定义的 MCP 服务器白名单true
allowManagedPermissionRulesOnly(托管)仅应用托管设置中的规则true
alwaysThinkingEnabled默认为所有会话启用扩展思考true
apiKeyHelper生成认证值的自定义脚本/bin/generate_temp_api_key.sh
attribution自定义 git 提交和拉取请求的归属{"commit": "... Generated with Claude Code", "pr": ""}
autoMemoryDirectory自动记忆存储的自定义目录"~/my-memory-dir"
autoMemoryEnabled启用自动记忆false
autoMode自定义自动模式分类器阻止和允许的内容{"soft_deny": ["$defaults", "Never run terraform apply"]}
autoScrollEnabled在全屏渲染中,跟随新输出到底部false
autoUpdatesChannel跟踪更新的发布通道"stable"
availableModels限制用户可选择的模型["sonnet", "haiku"]
awaySummaryEnabled离开几分钟后返回时显示一行会话摘要true
awsAuthRefresh修改 .aws 目录的自定义脚本aws sso login --profile myprofile
awsCredentialExport输出包含 AWS 凭证的 JSON 的自定义脚本/bin/generate_aws_grant.sh
blockedMarketplaces(托管)市场来源黑名单[{ "source": "github", "repo": "untrusted/plugins" }]
channelsEnabled(托管)为组织允许通道true
claudeMd(托管)作为组织管理记忆注入的 CLAUDE.md 风格指令"Always run make lint before committing."
claudeMdExcludes要跳过的 CLAUDE.md 文件的 glob 模式或绝对路径["**/vendor/**/CLAUDE.md"]
cleanupPeriodDays超过此时间段的会话文件在启动时删除(默认:30)20
companyAnnouncements启动时向用户显示的公告["Welcome to Acme Corp!"]
defaultShell输入框 ! 命令的默认 shell"powershell"
deniedMcpServers(托管)明确阻止的 MCP 服务器黑名单[{ "serverName": "filesystem" }]
disableAgentView关闭后台 Agent 和 Agent 视图true
disableAllHooks禁用所有 Hook 和自定义状态行true
disableAutoMode阻止自动模式被激活"disable"
disableDeepLinkRegistration阻止注册 claude-cli:// 协议处理器"disable"
disabledMcpjsonServers要拒绝的 .mcp.json 文件中的特定 MCP 服务器列表["filesystem"]
disableRemoteControl禁用远程控制(最低 v2.1.128)true
disableSkillShellExecution禁用技能和自定义命令的内联 shell 执行true
editorMode输入提示的键绑定模式"vim"
effortLevel跨会话持久化努力级别"xhigh"
enableAllProjectMcpServers自动批准项目 .mcp.json 中定义的所有 MCP 服务器true
enabledMcpjsonServers要批准的 .mcp.json 中的特定 MCP 服务器列表["memory", "github"]
env应用于每个会话和子进程的环境变量{"FOO": "bar"}
fastModePerSessionOptIn为 true 时,快速模式不跨会话持久true
feedbackSurveyRate会话质量调查出现的概率(0-1)0.05
fileSuggestion@ 文件自动补全配置自定义脚本{"type": "command", "command": "~/.claude/file-suggestion.sh"}
forceLoginMethod限制登录为 claudeaiconsoleclaudeai
forceLoginOrgUUID要求登录属于特定组织"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
forceRemoteSettingsRefresh(托管)阻止 CLI 启动直到远程托管设置被最新获取true
gcpAuthRefresh刷新 GCP Application Default Credentials 的自定义脚本gcloud auth application-default login
hooks配置在生命周期事件运行的自定义命令参见 hooks 文档
httpHookAllowedEnvVarsHTTP Hook 可能插值的环境变量名白名单["MY_TOKEN", "HOOK_SECRET"]
includeCoAuthoredBy已弃用:改用 attributionfalse
includeGitInstructions在系统提示中包含内置提交和 PR 工作流指令false
language配置 Claude 的首选响应语言"japanese"
maxSkillDescriptionChars每个技能描述文本的字符上限(最低 v2.1.105)2048
minimumVersion阻止安装低于此版本的下限"2.1.100"
model覆盖要使用的默认模型"claude-sonnet-4-6"
modelOverrides将 Anthropic 模型 ID 映射到提供商特定的模型 ID{"claude-opus-4-6": "arn:aws:bedrock:..."}
otelHeadersHelper生成动态 OpenTelemetry 头的脚本/bin/generate_otel_headers.sh
outputStyle配置输出样式以调整系统提示"Explanatory"
parentSettingsBehavior(托管)控制父级提供的设置行为(最低 v2.1.133)"merge"
permissions权限规则结构参见下表
plansDirectory自定义计划文件存储位置"./plans"
pluginTrustMessage(托管)附加到插件信任警告的自定义消息"All plugins from our marketplace are approved by IT"
policyHelper管理员部署的可执行文件,动态计算托管设置(最低 v2.1.136){"path": "/usr/local/bin/claude-policy"}
preferredNotifChannel任务完成和权限提示通知的方法"terminal_bell"
prefersReducedMotion为辅助功能减少或禁用 UI 动画true
prUrlTemplatePR 徽章的 URL 模板"https://reviews.example.com/{owner}/{repo}/pull/{number}"
respectGitignore控制 @ 文件选择器是否遵循 .gitignore 模式false
showClearContextOnPlanAccept在计划接受屏幕上显示"清除上下文"选项true
showThinkingSummaries在交互式会话中显示扩展思考摘要true
showTurnDuration在响应后显示回合持续时间消息false
skillListingBudgetFraction为技能列表保留的上下文窗口比例(最低 v2.1.105)0.02
skillOverrides每个技能的可见性覆盖(最低 v2.1.129){"legacy-context": "name-only", "deploy": "off"}
skipWebFetchPreflight跳过 WebFetch 域名安全检查true
spinnerTipsEnabledClaude 工作时在旋转器中显示提示false
spinnerTipsOverride用自定义字符串覆盖旋转器提示{ "excludeDefault": true, "tips": ["Use our internal tool X"] }
spinnerVerbs自定义回合进行时显示的动作动词{"mode": "append", "verbs": ["Pondering", "Crafting"]}
sshConfigs桌面环境上下拉菜单中显示的 SSH 连接[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]
statusLine配置自定义状态行以显示上下文{"type": "command", "command": "~/.claude/statusline.sh"}
strictKnownMarketplaces(托管)插件市场来源白名单[{ "source": "github", "repo": "acme-corp/plugins" }]
syntaxHighlightingDisabled在差异、代码块和文件预览中禁用语法高亮true
teammateModeAgent 团队队友的显示方式"in-process"
terminalProgressBarEnabled在支持的终端中显示终端进度条false
tui终端 UI 渲染器"fullscreen"
useAutoModeDuringPlan计划模式在可用时是否使用自动模式语义false
viewMode启动时的默认转录视图模式"verbose"
voice语音听写设置{ "enabled": true, "mode": "tap" }
voiceEnabledvoice.enabled 的旧别名true
wslInheritsWindowsSettings(Windows 托管)WSL 从 Windows 策略链读取托管设置true

全局配置设置

这些设置存储在 ~/.claude.json 而非 settings.json 中。将它们添加到 settings.json 会触发模式验证错误。

描述示例
autoConnectIde从外部终端启动时自动连接到运行中的 IDEtrue
autoInstallIdeExtension从 VS Code 终端运行时自动安装 Claude Code IDE 扩展false
externalEditorContextCtrl+G 打开外部编辑器时,将 Claude 的上一个响应作为 # 注释的上下文前置true
teammateDefaultModelAgent 团队队友在 spawn 提示未指定时的默认模型"sonnet"

Worktree 设置

配置 --worktree 如何创建和管理 git worktree。

描述示例
worktree.baseRef新 worktree 从哪个 ref 分支("fresh""head""head"
worktree.symlinkDirectories从主仓库符号链接到每个 worktree 的目录["node_modules", ".cache"]
worktree.sparsePaths通过 git sparse-checkout 检出的目录["packages/my-app", "shared/utils"]
worktree.bgIsolation后台会话的隔离模式(最低 v2.1.143)"none"

要将 .env 等 gitignored 文件复制到新 worktree,使用项目根目录中的 .worktreeinclude 文件而非设置。

权限设置

描述示例
allow允许工具使用的权限规则数组[ "Bash(git diff *)" ]
ask要求确认的权限规则数组[ "Bash(git push *)" ]
deny拒绝工具使用的权限规则数组[ "WebFetch", "Bash(curl *)", "Read(./.env)" ]
additionalDirectories文件访问的额外工作目录[ "../docs/" ]
defaultMode打开 Claude Code 时的默认权限模式"acceptEdits"
disableBypassPermissionsMode阻止 bypassPermissions 模式被激活"disable"
skipDangerousModePermissionPrompt跳过进入绕过权限模式前的确认提示true

权限规则语法

权限规则遵循格式 ToolTool(specifier)。规则按顺序评估:先 deny 规则,然后 ask,然后 allow。第一个匹配的规则生效。

规则效果
Bash匹配所有 Bash 命令
Bash(npm run *)匹配以 npm run 开头的命令
Read(./.env)匹配读取 .env 文件
WebFetch(domain:example.com)匹配到 example.com 的 fetch 请求

沙箱设置

配置高级沙箱行为。沙箱将 bash 命令与你的文件系统和网络隔离。

描述示例
enabled启用 bash 沙箱(macOS、Linux 和 WSL2)true
failIfUnavailable启动时如果沙箱无法启动则退出并报错true
autoAllowBashIfSandboxed沙箱化时自动批准 bash 命令true
excludedCommands应在沙箱外运行的命令["docker *"]
allowUnsandboxedCommands允许通过 dangerouslyDisableSandbox 参数在沙箱外运行命令false
filesystem.allowWrite沙箱化命令可以写入的额外路径["/tmp/build", "~/.kube"]
filesystem.denyWrite沙箱化命令不能写入的路径["/etc", "/usr/local/bin"]
filesystem.denyRead沙箱化命令不能读取的路径["~/.aws/credentials"]
filesystem.allowReaddenyRead 区域内重新允许读取的路径["."]
filesystem.allowManagedReadPathsOnly(托管)仅遵循托管的 allowRead 路径true
network.allowUnixSockets(仅 macOS)沙箱中可访问的 Unix 套接字路径["~/.ssh/agent-socket"]
network.allowAllUnixSockets允许沙箱中所有 Unix 套接字连接true
network.allowLocalBinding允许绑定到 localhost 端口(仅 macOS)true
network.allowMachLookup沙箱可查找的额外 XPC/Mach 服务名称(仅 macOS)["com.apple.coresimulator.*"]
network.allowedDomains允许出站网络流量的域名数组["github.com", "*.npmjs.org"]
network.deniedDomains阻止出站网络流量的域名数组["sensitive.cloud.example.com"]
network.allowManagedDomainsOnly(托管)仅遵循托管的 allowedDomainstrue
network.httpProxyPortHTTP 代理端口8080
network.socksProxyPortSOCKS5 代理端口8081
enableWeakerNestedSandbox为无特权 Docker 环境启用更弱的沙箱true
enableWeakerNetworkIsolation(仅 macOS)允许在沙箱中访问系统 TLS 信任服务true
bwrapPath(托管,Linux/WSL2)bubblewrap 二进制文件的绝对路径/opt/admin/bwrap
socatPath(托管,Linux/WSL2)socat 二进制文件的绝对路径/opt/admin/socat

沙箱路径前缀

filesystem.allowWritefilesystem.denyWritefilesystem.denyReadfilesystem.allowRead 中的路径支持以下前缀:

前缀含义示例
/文件系统根目录的绝对路径/tmp/build 保持 /tmp/build
~/相对于主目录~/.kube 变为 $HOME/.kube
./ 或无前缀项目设置相对于项目根目录,用户设置相对于 ~/.claude.claude/settings.json 中的 ./output 解析为 <project-root>/output

配置示例:

json
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["docker *"],
    "filesystem": {
      "allowWrite": ["/tmp/build", "~/.kube"],
      "denyRead": ["~/.aws/credentials"]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org", "*.example.com"]
    }
  }
}

Windows 沙箱设置

Claude Code 目前不支持原生 Windows 上的沙箱。上面记录的沙箱设置仅适用于 macOS、Linux 和 WSL2。

归属设置

自定义 git 提交和拉取请求的归属:

描述示例
attribution.commit添加到 Claude 生成的提交的页脚。设为 "" 可完全抑制"... Generated with Claude Code"
attribution.pr添加到 Claude 生成的拉取请求的页脚。设为 "" 可完全抑制"Created with Claude Code"
json
{
  "attribution": {
    "commit": "... Generated with Claude Code",
    "pr": "Created with Claude Code"
  }
}

文件建议设置

@ 文件自动补全配置自定义脚本:

json
{
  "fileSuggestion": {
    "type": "command",
    "command": "~/.claude/file-suggestion.sh"
  }
}

脚本接收部分路径作为 $1,应每行输出一个建议。

Hook 配置

配置在生命周期事件运行的自定义命令。参见 Hook 文档了解格式和可用事件。

设置优先级

设置跨范围按此优先级顺序合并:

  1. 托管(最高优先级)
  2. 命令行参数
  3. 本地
  4. 项目
  5. 用户(最低优先级)

权限规则跨范围合并而非覆盖——所有范围的所有 allowaskdeny 规则被组合。托管设置可以使用 allowManagedPermissionRulesOnly 来限制哪些范围可以定义权限规则。

使用策略助手计算托管设置

policyHelper 设置(最低 v2.1.136)指定管理员部署的可执行文件,在启动时动态计算托管设置。仅从 MDM 或系统 managed-settings.json 文件中接受。可执行文件应输出匹配托管设置格式的 JSON 到 stdout。

json
{
  "policyHelper": {
    "path": "/usr/local/bin/claude-policy"
  }
}

策略助手在启动时运行,其输出与静态托管设置合并,策略助手的输出优先。

AI 落地咨询
艾维禾砺数字科技

企业 AI 落地全链路服务

Agent 开发工作流搭建Claude Code 集成
微信咨询
d187l8801b6124
访问官网 ivheli.com