Claude Code settings.json 配置指南:作用域、文件路径与常见设置
Claude Code 通过分层配置系统管理行为:用户级配置放在 ~/.claude/settings.json 影响所有项目,项目级 .claude/settings.json 提交 git 后团队共享,本地级 .claude/settings.local.json 仅限当前机器且不提交。企业托管配置(managed-settings.json)优先级最高且不可被用户覆盖。运行 /status 可快速查看当前会话加载了哪些配置来源。本文先说明各配置文件的选址和优先级,再依次列出权限、模型、沙箱、插件等常用配置项。
配置作用域
Claude Code 使用分层配置系统,不同位置的配置影响不同范围:
| 作用域 | 位置 | 影响范围 | 是否共享 |
|---|---|---|---|
| 托管(Managed) | 服务器/系统级 managed-settings.json 或 MDM 策略 |
机器上所有用户 | 是(IT 部署) |
| 用户(User) | ~/.claude/settings.json |
你的所有项目 | 否 |
| 项目(Project) | .claude/settings.json |
仓库所有协作者 | 是(提交到 git) |
| 本地(Local) | .claude/settings.local.json |
仅你在此仓库 | 否(gitignore) |
三种文件选哪个
- 用户级:自己常用的主题、跨项目的设置,不需要共享。
- 项目级:团队统一的权限规则、Hooks、MCP 服务器,需要所有人生效。
- 本地级:个人本地测试、不想影响团队的临时覆盖。
优先级(从高到低)
- 托管设置(不可被任何其他设置覆盖)
- 命令行参数(临时会话覆盖)
- 本地项目设置(
.claude/settings.local.json) - 共享项目设置(
.claude/settings.json) - 用户设置(
~/.claude/settings.json)
数组类型的设置合并:当同一数组键(如
permissions.allow或sandbox.filesystem.allowWrite)在多个作用域中同时出现时,数组会进行拼接并去重,而不是用高优先级完全替换低优先级内容。
各作用域适用的配置类型
| 特性 | 用户位置 | 项目位置 | 本地位置 |
|---|---|---|---|
| Settings | ~/.claude/settings.json |
.claude/settings.json |
.claude/settings.local.json |
| 子代理(Subagents) | ~/.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.md |
CLAUDE.md 或 .claude/CLAUDE.md |
CLAUDE.local.md |
Windows 上 ~/.claude 对应 %USERPROFILE%\.claude。
配置文件详解
settings.json 文件结构
正式的配置机制是通过 settings.json 文件:
- 用户设置
~/.claude/settings.json:所有项目生效。 - 项目设置
.claude/settings.json:提交到版本控制,团队共享。 - 本地项目设置
.claude/settings.local.json:不提交,适合个人偏好。Claude Code 会自动将其加入.gitignore。 - 托管设置:企业通过服务器、MDM 或文件系统下发,格式与普通 settings.json 相同。
托管设置的部署方式:
- 服务器托管:通过 Claude.ai 管理后台下发,见服务器托管设置。
- MDM/OS 策略:
- macOS:
com.anthropic.claudecode受管偏好域,通过配置描述文件部署(Jamf、Kandji 等)。 - Windows:
HKLM\SOFTWARE\Policies\ClaudeCode注册表键,值Settings为 JSON 字符串(组策略或 Intune)。 - Windows(用户级):
HKCU\SOFTWARE\Policies\ClaudeCode(最低策略优先级)。
- macOS:
- 文件系统:
managed-settings.json和managed-mcp.json部署到系统目录:- macOS:
/Library/Application Support/ClaudeCode/ - Linux 和 WSL:
/etc/claude-code/ - Windows:
C:\Program Files\ClaudeCode\
- macOS:
旧版 Windows 路径
C:\ProgramData\ClaudeCode\managed-settings.json自 v2.1.75 起不再支持,需迁移到新路径。
托管文件也支持 managed-settings.d/ 目录,放入多个 JSON 文件(按字母顺序合并)。例如使用数字前缀控制合并顺序:10-telemetry.json、20-security.json。合并规则:基本文件作为基础,drop-in 文件按字母顺序覆盖,标量值后覆盖前,数组拼接去重,对象深度合并。
企业还可以通过
strictKnownMarketplaces限制插件市场来源,见托管市场限制。
其他配置:OAuth 会话、MCP 服务器配置(用户和本地作用域)、项目信任状态等存储在 ~/.claude.json。项目级 MCP 服务器单独存在 .mcp.json。
Claude Code 自动创建配置文件的带时间戳备份,最多保留五份。
示例 settings.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"
]
}
加上 $schema 行可在 VS Code 等编辑器中获得自动补全和内联验证。Schema 可能落后于最新 CLI 版本,偶尔的验证警告未必表示配置无效。
配置项的生效时机
Claude Code 会监控 settings 文件的变化,大多数键修改后立即生效,无需重启会话。包括 permissions、hooks、apiKeyHelper 等。修改会触发 ConfigChange 钩子。
以下键在会话启动时读取,需要在下次重启后才生效:
model:使用/model可在会话中切换。outputStyle:属于系统提示的一部分,重启或执行/clear后重新构建。
全部可用设置项
| 键 | 说明 | 示例 |
|---|---|---|
agent |
让主线程以指定子代理身份运行,使用该子代理的系统提示和工具限制。 | "code-reviewer" |
allowedChannelPlugins |
(仅托管)频道插件的白名单。设置后替换默认 Anthropic 白名单。未设置=回退到默认,空数组=阻止所有频道插件。需 channelsEnabled: true。 |
[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }] |
allowedHttpHookUrls |
HTTP 钩子可请求的 URL 模式白名单(支持 * 通配符)。未设置=无限制,空数组=阻止所有 HTTP 钩子。跨作用域数组合并。 |
["https://hooks.example.com/*"] |
allowedMcpServers |
(托管)MCP 服务器白名单。未设置=无限制,空数组=锁定。黑名单优先。 | [{ "serverName": "github" }] |
allowManagedHooksOnly |
(仅托管)只加载托管钩子、SDK 钩子以及托管强制启用的插件钩子。 | true |
allowManagedMcpServersOnly |
(仅托管)仅允许托管设置中的 allowedMcpServers。用户仍可添加 MCP 服务器,但仅白名单生效。 |
true |
allowManagedPermissionRulesOnly |
(仅托管)阻止用户和项目设置定义 allow、ask、deny 规则。 |
true |
alwaysThinkingEnabled |
默认启用扩展思考。通常通过 /config 配置。要强制关闭思考,可在 env 中设置 CLAUDE_CODE_DISABLE_THINKING。 |
true |
apiKeyHelper |
自定义脚本(在 /bin/sh 中执行),生成认证值作为 X-Api-Key 和 Authorization: Bearer 请求头。刷新间隔由 CLAUDE_CODE_API_KEY_HELPER_TTL_MS 控制。 |
/bin/generate_temp_api_key.sh |
attribution |
自定义 git 提交和 PR 的归因信息。参见归因设置。 | {"commit": "🤖 Generated with Claude Code", "pr": ""} |
autoMemoryDirectory |
自动记忆存储的自定义目录。接受绝对路径或 ~/ 开头的路径。仅从策略和用户设置以及 --settings 标志读取,不接受项目或本地设置。 |
"~/my-memory-dir" |
autoMemoryEnabled |
启用自动记忆。默认 true。可通过 /memory 切换。环境变量 CLAUDE_CODE_DISABLE_AUTO_MEMORY 可禁用。 |
false |
autoMode |
自定义自动模式分类器的放行和阻止规则。包含 environment、allow、soft_deny、hard_deny 数组。使用 "$defaults" 继承内置规则。不被项目共享设置读取。 |
{"soft_deny": ["$defaults", "Never run terraform apply"]} |
autoScrollEnabled |
全屏渲染时自动滚动到最新内容。默认 true。权限提示不受此影响。 |
false |
autoUpdatesChannel |
更新频道:"stable"(约一周前的版本,跳过重大回退)或 "latest"(默认,最新版)。要完全禁用自动更新,在 env 中设置 DISABLE_AUTOUPDATER。 |
"stable" |
availableModels |
限制用户可通过 /model、--model 或 ANTHROPIC_MODEL 选择的模型,不影响 Default 选项。 |
["sonnet", "haiku"] |
awaySummaryEnabled |
离开终端几分钟后返回时显示一行会话概要。默认 true。可通过 /config 关闭。等同于 CLAUDE_CODE_ENABLE_AWAY_SUMMARY。 |
true |
awsAuthRefresh |
自定义脚本,用于修改 .aws 目录(刷新 AWS 凭证)。 |
aws sso login --profile myprofile |
awsCredentialExport |
自定义脚本,输出包含 AWS 凭证的 JSON。 | /bin/generate_aws_grant.sh |
blockedMarketplaces |
(仅托管)市场黑名单。在添加市场和安装/更新/刷新/自动更新时执行,已添加的市场若来源匹配黑名单则无法使用。 | [{ "source": "github", "repo": "untrusted/plugins" }] |
channelsEnabled |
(仅托管)允许频道功能。在 Claude.ai Team/Enterprise 计划中,未设置或为 false 时频道被阻止。对于 API 密钥认证的控制台账户,默认允许频道,除非部署了托管设置。 |
true |
claudeMd |
(仅托管)类似 CLAUDE.md 的指令,作为组织管理的记忆注入。仅在托管或策略设置中生效。 | "Always run make lint before committing." |
claudeMdExcludes |
跳过加载的 CLAUDE.md 文件的全局模式或绝对路径。仅适用于用户、项目和本地记忆;无法排除托管策略文件。 | ["**/vendor/**/CLAUDE.md"] |
cleanupPeriodDays |
会话文件保留天数(默认30天,最小1天)。设为0则报错。也用于自动清理孤儿子代理工作树。要完全禁用会话记录,可使用环境变量 CLAUDE_CODE_SKIP_PROMPT_HISTORY 或非交互模式下的 --no-session-persistence 或 SDK 选项 persistSession: false。 |
20 |
companyAnnouncements |
启动时向用户显示的公告。多个则随机轮换。 | ["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"] |
defaultShell |
输入框 ! 命令的默认 shell。接受 "bash"(默认)或 "powershell"。要求环境变量 CLAUDE_CODE_USE_POWERSHELL_TOOL=1。 |
"powershell" |
deniedMcpServers |
(托管)MCP 服务器黑名单。适用于所有作用域,包括托管服务器。黑名单优先于白名单。 | [{ "serverName": "filesystem" }] |
disableAgentView |
设为 true 关闭后台代理和代理视图:claude agents、--bg、/background 和按需主管。等同于设置 CLAUDE_CODE_DISABLE_AGENT_VIEW=1。 |
true |
disableAllHooks |
禁用所有钩子和自定义状态行。 | true |
disableAutoMode |
设为 "disable" 阻止自动模式激活。从 Shift+Tab 循环中移除 auto,启动时拒绝 --permission-mode auto。 |
"disable" |
disableDeepLinkRegistration |
设为 "disable" 阻止 Claude Code 在启动时注册 claude-cli:// 协议处理器。 |
"disable" |
disabledMcpjsonServers |
拒绝的 .mcp.json 中的 MCP 服务器列表。 |
["filesystem"] |
disableRemoteControl |
禁用远程控制:阻止 claude remote-control、--remote-control 标志、自动启动和会话内切换。需 v2.1.128+。 |
true |
disableSkillShellExecution |
禁用技能中的内联 shell 执行(!`...` 和 ```!块)。不会影响捆绑和托管技能。 |
true |
editorMode |
输入提示的键绑定模式:"normal" 或 "vim"。默认 "normal"。 |
"vim" |
effortLevel |
跨会话保持的努力级别:"low"、"medium"、"high"、"xhigh"。运行 /effort 时自动写入。--effort 和 CLAUDE_CODE_EFFORT_LEVEL 会覆盖本次会话。 |
"xhigh" |
enableAllProjectMcpServers |
自动批准项目 .mcp.json 中的所有 MCP 服务器。 |
true |
enabledMcpjsonServers |
自动批准的 .mcp.json 中的 MCP 服务器列表。 |
["memory", "github"] |
env |
应用于每个会话和子进程的环境变量。注意:从 v2.1.143 起,在此设置的 NO_COLOR 和 FORCE_COLOR 会传递给子进程但不影响 Claude Code 自身界面颜色。 |
{"FOO": "bar"} |
fastModePerSessionOptIn |
设为 true 时,快速模式不会跨会话保持,每个会话默认为关闭。 |
true |
feedbackSurveyRate |
会话质量调查的出现概率(0-1)。设为 0 彻底抑制。使用 Bedrock/Vertex/Foundry 时默认抽样不适用,可用此设置。 | 0.05 |
fileSuggestion |
自定义 @ 文件补全脚本。参见文件建议设置。 |
{"type": "command", "command": "~/.claude/file-suggestion.sh"} |
forceLoginMethod |
限制登录方式为 claudeai(Claude.ai 账户)或 console(控制台 API 计费账户)。托管设置中启用后,API 密钥/第三方认证的会话会被阻止。 |
claudeai |
forceLoginOrgUUID |
要求登录属于特定组织 UUID(单个或数组)。托管设置中启用后,不匹配的组织或非 OAuth 认证都会被阻止。空数组则拒登。 | "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 或数组 |
forceRemoteSettingsRefresh |
(仅托管)阻止 CLI 启动,直到远程托管设置被最新获取。获取失败则退出。未设置时启动继续。 | true |
gcpAuthRefresh |
自定义脚本,用于刷新 GCP 应用默认凭据。 | gcloud auth application-default login |
hooks |
配置生命周期事件的自定义命令。格式见 hooks 文档。 | 见 hooks 文档 |
httpHookAllowedEnvVars |
HTTP 钩子可注入的环境变量名白名单。跨作用域数组合并。 | ["MY_TOKEN", "HOOK_SECRET"] |
includeCoAuthoredBy |
已废弃:改用 attribution。是否在 git 提交和 PR 中自动包含 co-authored-by(默认 true)。 |
false |
includeGitInstructions |
在系统提示中包含内置的 commit 和 PR 工作流指令及 git 状态快照(默认 true)。设为 false 移除。CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS 环境变量优先。 |
false |
language |
配置 Claude 的首选响应语言(例如 "japanese"、"spanish"、"french")。也设置语音输入的识别语言。 |
"japanese" |
maxSkillDescriptionChars |
单个技能 description 和 when_to_use 文本的字符上限(默认 1536)。超出则截断。需 v2.1.105+。 |
2048 |
minimumVersion |
阻止自动更新和 claude update 安装低于此版本。从 "latest" 频道切换到 "stable" 时,若当前版本低于此值会提示。 |
"2.1.100" |
model |
覆盖默认模型。--model 和 ANTHROPIC_MODEL 可临时覆盖。 |
"claude-sonnet-4-6" |
modelOverrides |
将 Anthropic 模型 ID 映射到提供商特定 ID(如 Bedrock 推理配置文件 ARN)。 | {"claude-opus-4-6": "arn:aws:bedrock:..."} |
otelHeadersHelper |
生成动态 OpenTelemetry 请求头的脚本。定期刷新。 | /bin/generate_otel_headers.sh |
outputStyle |
配置输出风格以调整系统提示。 | "Explanatory" |
parentSettingsBehavior |
(仅托管)控制当嵌入宿主(如 Agent SDK 或 IDE 扩展)程序化提供托管设置时,若已有管理员部署的托管层如何应用。"first-wins"(默认):丢弃宿主设置,仅管理员层生效。"merge":宿主设置在管理员层下合并,且只能收紧策略不能放松。需 v2.1.133+。 |
"merge" |
permissions |
权限相关设置,见下方权限设置表格。 | 见下 |
plansDirectory |
计划文件存储目录,相对于项目根。默认 ~/.claude/plans。 |
"./plans" |
pluginTrustMessage |
(仅托管)安装前显示的插件信任警告的附加信息。 | "All plugins from our marketplace are approved by IT" |
policyHelper |
管理部署的可执行文件,启动时动态计算托管设置。仅从 MDM 或系统 managed-settings.json 中生效。需 v2.1.136+。 |
{"path": "/usr/local/bin/claude-policy"} |
preferredNotifChannel |
任务完成和权限提示通知方式:"auto"、"terminal_bell"、"iterm2"、"iterm2_with_bell"、"kitty"、"ghostty"、"notifications_disabled"。默认 "auto"。 |
"terminal_bell" |
prefersReducedMotion |
减少或禁用 UI 动画,提高无障碍性。 | true |
prUrlTemplate |
PR 徽章的 URL 模板。替换 {host}、{owner}、{repo}、{number}、{url}。 |
"https://reviews.example.com/{owner}/{repo}/pull/{number}" |
respectGitignore |
控制 @ 文件选择器是否遵循 .gitignore 模式。默认 true。 |
false |
showClearContextOnPlanAccept |
在计划接受屏幕上显示“清除上下文”选项。默认 false。 |
true |
showThinkingSummaries |
在交互式会话中显示扩展思考摘要。默认 false(交互模式下)。 |
true |
showTurnDuration |
响应后显示用时信息,例如 “Cooked for 1m 6s”。默认 true。 |
false |
skillListingBudgetFraction |
技能描述占模型上下文窗口的比例(默认 0.01 = 1%)。超出预算则不常用技能折叠为名称。需 v2.1.105+。 |
0.02 |
skillOverrides |
按技能名称设置可见性覆盖:"on"、"name-only"、"user-invocable-only"、"off"。需 v2.1.129+。 |
{"legacy-context": "name-only", "deploy": "off"} |
skipWebFetchPreflight |
跳过 WebFetch 域名安全检查(把主机名发送到 api.anthropic.com)。在封锁 Anthropic 流量的环境中设为 true。 |
true |
spinnerTipsEnabled |
显示提示(默认 true)。 |
false |
spinnerTipsOverride |
自定义 spinner 提示。excludeDefault 为 true 则只显示自定义提示。 |
{ "excludeDefault": true, "tips": ["Use our internal tool X"] } |
spinnerVerbs |
自定义动作动词。mode 为 "replace" 或 "append"。 |
{"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" }] |
strictPluginOnlyCustomization |
(仅托管)阻止来自用户和项目源的技能、代理、钩子和 MCP 服务器,只能来自插件或托管设置。true 锁定全部,数组则仅锁定指定项。 |
["skills", "hooks"] |
syntaxHighlightingDisabled |
禁用语法高亮。 | true |
teammateMode |
代理团队的队友显示方式:auto、in-process、tmux。 |
"in-process" |
terminalProgressBarEnabled |
显示终端进度条(ConEmu、Ghostty 1.2.0+、iTerm2 3.6.6+)。默认 true。 |
false |
tui |
终端 UI 渲染器:"fullscreen" 或 "default"。 |
"fullscreen" |
useAutoModeDuringPlan |
计划模式是否使用自动模式语义(当自动模式可用时)。默认 true。不从项目共享设置读取。 |
false |
viewMode |
默认会话查看模式:"default"、"verbose"、"focus"。--verbose 标志临时覆盖。 |
"verbose" |
voice |
语音输入设置:enabled、mode("hold"/"tap")、autoSubmit。通过 /voice 自动写入。 |
{ "enabled": true, "mode": "tap" } |
voiceEnabled |
旧版 voice.enabled 别名。推荐使用 voice 对象。 |
true |
wslInheritsWindowsSettings |
(Windows 托管)设为 true 时,WSL 上的 Claude Code 除了 /etc/claude-code 外还读取 Windows 策略链,且 Windows 来源优先。仅当设置在 HKLM 注册表键或 C:\Program Files\ClaudeCode\managed-settings.json 中时有效。 |
true |
全局配置项(存储在 ~/.claude.json)
注意:这些键存储在
~/.claude.json而非settings.json,直接添加到 settings.json 会触发 schema 验证错误。
| 键 | 说明 | 示例 |
|---|---|---|
autoConnectIde |
从外部终端启动时自动连接 IDE。默认 false。环境变量 CLAUDE_CODE_AUTO_CONNECT_IDE 可覆盖。 |
true |
autoInstallIdeExtension |
从 VS Code 终端运行时自动安装 Claude Code IDE 扩展。默认 true。 |
false |
externalEditorContext |
按 Ctrl+G 打开外部编辑器时,将 Claude 的上一条回复作为 # 注释的上下文附加。默认 false。 |
true |
teammateDefaultModel |
代理团队队友的默认模型。可设为模型别名如 "sonnet",或 null 继承主线程的 /model。 |
"sonnet" |
Worktree 设置
| 键 | 说明 | 示例 |
|---|---|---|
worktree.baseRef |
新 worktree 的分支起点:"fresh"(默认,从 origin/<default-branch> 分支,创建干净树)或 "head"(从当前本地 HEAD 分支)。 |
"head" |
worktree.symlinkDirectories |
从主仓库软链接到 worktree 的目录,避免重复占用磁盘。 | ["node_modules", ".cache"] |
worktree.sparsePaths |
使用 git sparse-checkout 仅检出的目录。 | ["packages/my-app", "shared/utils"] |
worktree.bgIsolation |
后台会话的隔离模式:"worktree"(默认)阻止在调用 EnterWorktree 前编辑主工作副本,"none" 允许直接编辑。需 v2.1.143+。 |
"none" |
要复制 gitignore 文件(如 .env)到新 worktree,使用项目根目录的 .worktreeinclude 文件 而不是设置项。
权限设置
| 键 | 说明 | 示例 |
|---|---|---|
permissions.allow |
允许工具使用的规则数组。 | ["Bash(git diff *)"] |
permissions.ask |
需要确认的工具规则数组。 | ["Bash(git push *)"] |
permissions.deny |
拒绝的工具规则数组。 | ["WebFetch", "Read(./.env)", "Read(./secrets/**)"] |
permissions.additionalDirectories |
额外的工作目录,用于文件访问。 | ["../docs/"] |
permissions.defaultMode |
打开 Claude Code 时的默认权限模式。可取 default、acceptEdits、plan、auto、dontAsk、bypassPermissions。注意:从 v2.1.142 起,auto 在项目或本地设置中被忽略。 |
"acceptEdits" |
permissions.disableBypassPermissionsMode |
设为 "disable" 阻止 bypassPermissions 模式激活。禁用 --dangerously-skip-permissions 标志。 |
"disable" |
permissions.skipDangerousModePermissionPrompt |
跳过使用 --dangerously-skip-permissions 或 defaultMode: "bypassPermissions" 时显示的确认提示。在项目设置中被忽略。 |
true |
权限规则语法
权限规则格式:Tool 或 Tool(specifier)。规则按顺序评估:先拒绝规则,再询问规则,最后允许规则。第一个匹配的规则生效。
快速示例:
| 规则 | 效果 |
|---|---|
Bash |
匹配所有 Bash 命令 |
Bash(npm run *) |
匹配以 npm run 开头的命令 |
Read(./.env) |
匹配读取 .env 文件 |
WebFetch(domain:example.com) |
匹配对 example.com 的 fetch 请求 |
完整的规则语法参考,包括通配符行为、特定工具模式(Read、Edit、WebFetch、MCP、Agent)以及 Bash 模式的安全限制,见权限规则语法。
沙箱设置
沙箱隔离 Bash 命令的文件系统和网络访问。见沙箱详情。
| 键 | 说明 | 示例 |
|---|---|---|
sandbox.enabled |
启用 Bash 沙箱(macOS、Linux、WSL2)。默认 false。 |
true |
sandbox.failIfUnavailable |
如果 sandbox.enabled 为 true 但沙箱无法启动(缺少依赖或平台不支持),启动时退出报错。默认 false。 |
true |
sandbox.autoAllowBashIfSandboxed |
沙箱内自动批准 Bash 命令。默认 true。 |
true |
sandbox.excludedCommands |
应在沙箱外运行的命令。 | ["docker *"] |
sandbox.allowUnsandboxedCommands |
允许通过 dangerouslyDisableSandbox 参数在沙箱外运行命令。默认 true。 |
false |
sandbox.filesystem.allowWrite |
沙箱内可写的额外路径(跨所有设置作用域合并)。 | ["/tmp/build", "~/.kube"] |
sandbox.filesystem.denyWrite |
沙箱内禁止写入的路径(合并)。 | ["/etc", "/usr/local/bin"] |
sandbox.filesystem.denyRead |
沙箱内禁止读取的路径(合并)。 | ["~/.aws/credentials"] |
sandbox.filesystem.allowRead |
在 denyRead 区域内重新允许读取(优先级更高)。 |
["."] |
sandbox.filesystem.allowManagedReadPathsOnly |
(仅托管)只允许托管设置中的 filesystem.allowRead 路径。默认 false。 |
true |
sandbox.network.allowUnixSockets |
(仅 macOS)沙箱内可访问的 Unix socket 路径。 | ["~/.ssh/agent-socket"] |
sandbox.network.allowAllUnixSockets |
(所有平台)允许所有 Unix socket 连接。默认 false。 |
true |
sandbox.network.allowLocalBinding |
(仅 macOS)允许绑定 localhost 端口。默认 false。 |
true |
sandbox.network.allowMachLookup |
(仅 macOS)沙箱可查找的额外 XPC/Mach 服务名称。支持尾部 * 通配符。 |
["com.apple.coresimulator.*"] |
sandbox.network.allowedDomains |
允许的出站域名数组(支持通配符)。 | ["github.com", "*.npmjs.org"] |
sandbox.network.deniedDomains |
阻止的出站域名数组。优先于 allowedDomains。 |
["sensitive.cloud.example.com"] |
sandbox.network.allowManagedDomainsOnly |
(仅托管)只允许托管设置中的 allowedDomains 和 WebFetch(domain:...) 允许规则。默认 false。 |
true |
sandbox.network.httpProxyPort |
自定义 HTTP 代理端口。 | 8080 |
sandbox.network.socksProxyPort |
自定义 SOCKS5 代理端口。 | 8081 |
sandbox.enableWeakerNestedSandbox |
在非特权 Docker 环境中启用较弱的嵌套沙箱(仅 Linux/WSL2)。降低安全性。 默认 false。 |
true |
sandbox.enableWeakerNetworkIsolation |
(仅 macOS)允许沙箱访问系统 TLS 信任服务。降低安全性。 默认 false。 |
true |
sandbox.bwrapPath |
(仅托管,Linux/WSL2)bubblewrap (bwrap) 二进制文件的绝对路径。 |
/opt/admin/bwrap |
sandbox.socatPath |
(仅托管,Linux/WSL2)socat 二进制文件的绝对路径。 |
/opt/admin/socat |
沙箱路径前缀
| 前缀 | 含义 | 示例 |
|---|---|---|
/ |
从文件系统根的绝对路径 | /tmp/build |
~/ |
相对于家目录 | ~/.kube → $HOME/.kube |
./ 或无前缀 |
相对于项目根(项目设置)或 ~/.claude(用户设置) |
./output |
与 Read 和 Edit 权限规则不同,沙箱文件系统路径使用标准约定:
/tmp/build是绝对路径,./path是项目相对路径。
沙箱配置示例:
{
"sandbox": {
"enabled": true,
"autoAllowBashIfSandboxed": true,
"excludedCommands": ["docker *"],
"filesystem": {
"allowWrite": ["/tmp/build", "~/.kube"],
"denyRead": ["~/.aws/credentials"]
},
"network": {
"allowedDomains": ["github.com", "*.npmjs.org", "registry.yarnpkg.com"],
"deniedDomains": ["uploads.github.com"],
"allowUnixSockets": ["/var/run/docker.sock"],
"allowLocalBinding": true
}
}
}
文件系统和网络限制有两种配置方式,它们会被合并:
sandbox.filesystem设置:在操作系统沙箱边界控制路径。适用于所有子进程命令(如kubectl、terraform、npm),不仅仅是 Claude 的文件工具。- 权限规则:使用
Edit允许/拒绝规则控制 Claude 文件工具访问,Read拒绝规则阻止读取,WebFetch允许/拒绝规则控制网络域名。这些规则中的路径也会合并到沙箱配置中。
归因设置
Claude Code 会自动添加 git 提交和 PR 的归因信息。提交默认使用 git trailers(如 Co-Authored-By),PR 描述为纯文本。
| 键 | 说明 |
|---|---|
attribution.commit |
git 提交的归因,包括任何 trailers。空字符串隐藏。 |
attribution.pr |
PR 描述的归因。空字符串隐藏。 |
默认提交归因:
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
默认 PR 归因:
🤖 Generated with [Claude Code](https://claude.com/claude-code)
示例:
{
"attribution": {
"commit": "Generated with AI\n\nCo-Authored-By: AI <ai@example.com>",
"pr": ""
}
}
attribution设置优先于已废弃的includeCoAuthoredBy。要隐藏所有归因,将commit和pr都设为空字符串。
文件建议设置
自定义 @ 文件路径自动补全命令:
{
"fileSuggestion": {
"type": "command",
"command": "~/.claude/file-suggestion.sh"
}
}
命令通过 stdin 接收 JSON(例如 {"query": "src/comp"}),在 stdout 输出换行分隔的文件路径(最多15条)。
示例脚本:
#!/bin/bash
query=$(cat | jq -r '.query')
your-repo-file-index --query "$query" | head -20
Hook 配置
这些设置控制哪些钩子允许运行以及 HTTP 钩子可以访问什么。
allowManagedHooksOnly 为 true 时的行为:
- 加载托管钩子和 SDK 钩子。
- 加载托管设置
enabledPlugins中强制启用的插件钩子。 - 用户钩子、项目钩子和所有其他插件钩子被阻止。
限制 HTTP 钩子 URL:使用 allowedHttpHookUrls。支持 * 通配符,域名匹配不区分大小写且忽略末尾 FQDN 点。
{
"allowedHttpHookUrls": ["https://hooks.example.com/*", "http://localhost:*"]
}
限制 HTTP 钩子环境变量:使用 httpHookAllowedEnvVars。每个钩子的有效 allowedEnvVars 是其自身列表与此设置的交集。
{
"httpHookAllowedEnvVars": ["MY_TOKEN", "HOOK_SECRET"]
}
使用策略助手计算托管设置
policyHelper 指向一个可执行文件,启动时计算托管设置。只能从 MDM 或系统 managed-settings.json 中配置。其他作用域(包括用户设置、项目设置、HKCU 注册表、服务器托管设置)中忽略此键。
| 键 | 类型 | 说明 |
|---|---|---|
path |
string | 助手可执行文件的绝对路径 |
timeoutMs |
number | 等待超时时间 |
refreshIntervalMs |
number | 后台刷新间隔(设为0禁用,最小60000) |
助手向 stdout 写入 JSON 信封。设置应放在 managedSettings 键下:
{
"managedSettings": {
"permissions": { "deny": ["Read(//etc/secrets/**)"] }
},
"claudeMd": "# Organization context\n...",
"appendSystemPrompt": "Always cite the internal style guide."
}
当助手退出码非零时,Claude Code 打印错误并拒绝启动。需要高可靠性的助手应自行缓存并退出码 0。
设置优先级
从最高到最低:
- 托管设置(服务器托管、MDM/OS 策略、文件系统托管)。同一层级内优先级:服务器托管 > MDM/OS 策略 > 文件系统(
managed-settings.d/*.json+managed-settings.json)> HKCU(仅 Windows)。注意托管层内不合并,只使用一个来源。 - 命令行参数:临时会话覆盖。通过
--settings <file-or-json>传入的 JSON 与文件设置合并,同层覆盖的高优先级。 - 本地项目设置(
.claude/settings.local.json) - 共享项目设置(
.claude/settings.json) - 用户设置(
~/.claude/settings.json)
数组跨作用域合并:当同一数组值设置(如
sandbox.filesystem.allowWrite或permissions.allow)出现在多个作用域时,数组会被拼接去重,而不是被高优先级完全替换。
验证当前设置
在 Claude Code 中运行 /status,Status 标签页会列出当前会话加载的所有设置来源。如果设置了托管设置,会显示交付渠道(如 Enterprise managed settings (remote)、(plist)、(HKLM)、(HKCU)、(file))。如果某个来源没有任何键,则不会显示。Config 标签页是一个编辑器,仅用于一组固定的开关(如主题、详细输出),并非查看 settings.json 内容。如果 settings 文件包含错误(如无效 JSON 或验证失败的值),/status 会报告问题。
排除敏感文件
使用 permissions.deny 阻止 Claude Code 读取敏感文件:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(./config/credentials.json)",
"Read(./build)"
]
}
}
这会替代已废弃的 ignorePatterns 配置。
子代理配置
子代理存储为带 YAML frontmatter 的 Markdown 文件:
- 用户子代理:
~/.claude/agents/,跨项目可用。 - 项目子代理:
.claude/agents/,项目特定,可共享。
详情见子代理文档。
插件配置
插件系统通过市场分发技能、代理、钩子和 MCP 服务器。插件配置示例:
{
"enabledPlugins": {
"formatter@acme-tools": true,
"deployer@acme-tools": true,
"analyzer@security-plugins": false
},
"extraKnownMarketplaces": {
"acme-tools": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
}
}
enabledPlugins
控制哪些插件启用。格式:"plugin-name@marketplace-name": true/false。
- 用户设置/项目设置/本地设置:按优先级覆盖。
- 托管设置:组织级策略覆盖,阻止所有作用域的安装并隐藏插件。
项目设置优先级高于用户设置。要退出项目启用的插件,在
.claude/settings.local.json中设为false。托管设置强制启用的插件无法被禁用。
extraKnownMarketplaces
定义额外的插件市场。通常在仓库级设置中使用,确保团队成员都可访问需要的插件来源。
市场来源类型:
github:GitHub 仓库 (repo)git:任意 git URL (url)directory:本地文件系统路径 (path,仅开发)hostPattern:正则表达式匹配市场主机 (hostPattern)settings:直接在 settings.json 中声明的内联市场 (name、plugins)file:本地文件系统路径指向 marketplace.jsonurl:URL 指向 marketplace.jsonnpm:npm 包 (package)
每个市场条目可选 autoUpdate 布尔值。官方市场默认 true,其他 false。
strictKnownMarketplaces
(仅托管设置)控制用户可添加和安装插件的市场来源。白名单行为:
undefined(默认):无限制- 空数组
[]:完全锁定 - 列表:只能添加精确匹配的市场
使用精确匹配(包括 ref、path)。hostPattern 和 pathPattern 使用正则匹配。
配置示例:允许特定市场、禁用所有市场、允许内部 git 服务器等。
比较 strictKnownMarketplaces 与 extraKnownMarketplaces
| 方面 | strictKnownMarketplaces | extraKnownMarketplaces |
|---|---|---|
| 目的 | 组织策略强制 | 团队便利 |
| 设置文件 | 仅 managed-settings.json | 任意 settings 文件 |
| 行为 | 阻止非白名单添加 | 自动安装缺失市场 |
| 实施时机 | 网络/文件系统操作前 | 用户信任确认后 |
| 可覆盖 | 否(最高优先级) | 是(更高优先级覆盖) |
| 使用场景 | 合规、安全限制 | 入门、标准化 |
strictPluginOnlyCustomization
(仅托管)阻止技能、代理、钩子和 MCP 服务器来自用户和项目源,只能来自插件或托管设置。值可以是 true(锁定全部)或数组(只锁定列出的表面)。需 v2.1.82+。
管理插件
使用 /plugin 命令交互式管理。
环境变量
环境变量可以控制 Claude Code 行为而无需编辑配置文件。所有变量也可以在 settings.json 的 env 键中配置。完整列表见环境变量参考。
系统提示
Claude Code 的内部系统提示不公开。要添加自定义指令,使用 CLAUDE.md 文件或 --append-system-prompt 标志。
参见
常见问题
Claude Code 配置放哪个文件?settings.json、settings.local.json 和 managed-settings.json 有什么区别?
用户级配置放在 ~/.claude/settings.json,影响所有项目。项目级配置放在 .claude/settings.json,可提交到 git 与团队共享。本地级配置放在 .claude/settings.local.json,仅影响当前机器且不提交。企业托管配置通过 managed-settings.json 文件或 MDM 部署,优先级最高且不可被用户覆盖。
为什么我的 settings.json 配置不生效?如何排查?
先运行 /status 查看实际加载了哪些设置来源。检查当前工作目录是否项目根目录(否则项目设置不会加载)。确认 .claude/settings.local.json 是否覆盖了你想要的值。检查启动命令是否带了 --permission-mode 或 --model 等临时参数。如果企业部署了托管设置,某些配置可能被强制覆盖。修改后重启会话或 IDE 插件。
如何让团队共享 Claude Code 的权限规则和 MCP 配置?
将权限规则(permissions.allow/deny)、MCP 服务器白名单(enableAllProjectMcpServers 或 enabledMcpjsonServers)、钩子(hooks)等写入项目根目录的 .claude/settings.json 并提交到 git。个人本地覆盖应使用 .claude/settings.local.json。如果需要企业级统一管控,使用 managed-settings.json 部署托管设置。