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 服务器,需要所有人生效。
  • 本地级:个人本地测试、不想影响团队的临时覆盖。

优先级(从高到低)

  1. 托管设置(不可被任何其他设置覆盖)
  2. 命令行参数(临时会话覆盖)
  3. 本地项目设置.claude/settings.local.json
  4. 共享项目设置.claude/settings.json
  5. 用户设置~/.claude/settings.json

数组类型的设置合并:当同一数组键(如 permissions.allowsandbox.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(最低策略优先级)。
  • 文件系统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.d/ 目录,放入多个 JSON 文件(按字母顺序合并)。例如使用数字前缀控制合并顺序:10-telemetry.json20-security.json。合并规则:基本文件作为基础,drop-in 文件按字母顺序覆盖,标量值后覆盖前,数组拼接去重,对象深度合并。

详细内容见托管设置托管 MCP 配置

企业还可以通过 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 文件的变化,大多数键修改后立即生效,无需重启会话。包括 permissionshooksapiKeyHelper 等。修改会触发 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 (仅托管)阻止用户和项目设置定义 allowaskdeny 规则。 true
alwaysThinkingEnabled 默认启用扩展思考。通常通过 /config 配置。要强制关闭思考,可在 env 中设置 CLAUDE_CODE_DISABLE_THINKING true
apiKeyHelper 自定义脚本(在 /bin/sh 中执行),生成认证值作为 X-Api-KeyAuthorization: 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 自定义自动模式分类器的放行和阻止规则。包含 environmentallowsoft_denyhard_deny 数组。使用 "$defaults" 继承内置规则。不被项目共享设置读取。 {"soft_deny": ["$defaults", "Never run terraform apply"]}
autoScrollEnabled 全屏渲染时自动滚动到最新内容。默认 true。权限提示不受此影响。 false
autoUpdatesChannel 更新频道:"stable"(约一周前的版本,跳过重大回退)或 "latest"(默认,最新版)。要完全禁用自动更新,在 env 中设置 DISABLE_AUTOUPDATER "stable"
availableModels 限制用户可通过 /model--modelANTHROPIC_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 时自动写入。--effortCLAUDE_CODE_EFFORT_LEVEL 会覆盖本次会话。 "xhigh"
enableAllProjectMcpServers 自动批准项目 .mcp.json 中的所有 MCP 服务器。 true
enabledMcpjsonServers 自动批准的 .mcp.json 中的 MCP 服务器列表。 ["memory", "github"]
env 应用于每个会话和子进程的环境变量。注意:从 v2.1.143 起,在此设置的 NO_COLORFORCE_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 限制登录方式为 claudeaiClaude.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 覆盖默认模型。--modelANTHROPIC_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 提示。excludeDefaulttrue 则只显示自定义提示。 { "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 代理团队的队友显示方式:autoin-processtmux "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 语音输入设置:enabledmode"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 时的默认权限模式。可取 defaultacceptEditsplanautodontAskbypassPermissions。注意:从 v2.1.142 起,auto 在项目或本地设置中被忽略。 "acceptEdits"
permissions.disableBypassPermissionsMode 设为 "disable" 阻止 bypassPermissions 模式激活。禁用 --dangerously-skip-permissions 标志。 "disable"
permissions.skipDangerousModePermissionPrompt 跳过使用 --dangerously-skip-permissionsdefaultMode: "bypassPermissions" 时显示的确认提示。在项目设置中被忽略。 true

权限规则语法

权限规则格式:ToolTool(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 (仅托管)只允许托管设置中的 allowedDomainsWebFetch(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 设置:在操作系统沙箱边界控制路径。适用于所有子进程命令(如 kubectlterraformnpm),不仅仅是 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。要隐藏所有归因,将 commitpr 都设为空字符串。

文件建议设置

自定义 @ 文件路径自动补全命令:

{
  "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 钩子可以访问什么。

allowManagedHooksOnlytrue 时的行为

  • 加载托管钩子和 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。

设置优先级

从最高到最低:

  1. 托管设置(服务器托管、MDM/OS 策略、文件系统托管)。同一层级内优先级:服务器托管 > MDM/OS 策略 > 文件系统(managed-settings.d/*.json + managed-settings.json)> HKCU(仅 Windows)。注意托管层内不合并,只使用一个来源。
  2. 命令行参数:临时会话覆盖。通过 --settings <file-or-json> 传入的 JSON 与文件设置合并,同层覆盖的高优先级。
  3. 本地项目设置.claude/settings.local.json
  4. 共享项目设置.claude/settings.json
  5. 用户设置~/.claude/settings.json

数组跨作用域合并:当同一数组值设置(如 sandbox.filesystem.allowWritepermissions.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 中声明的内联市场 (nameplugins)
  • file:本地文件系统路径指向 marketplace.json
  • url:URL 指向 marketplace.json
  • npm:npm 包 (package)

每个市场条目可选 autoUpdate 布尔值。官方市场默认 true,其他 false

strictKnownMarketplaces

(仅托管设置)控制用户可添加和安装插件的市场来源。白名单行为:

  • undefined(默认):无限制
  • 空数组 []:完全锁定
  • 列表:只能添加精确匹配的市场

使用精确匹配(包括 refpath)。hostPatternpathPattern 使用正则匹配。

配置示例:允许特定市场、禁用所有市场、允许内部 git 服务器等。

比较 strictKnownMarketplaces 与 extraKnownMarketplaces

方面 strictKnownMarketplaces extraKnownMarketplaces
目的 组织策略强制 团队便利
设置文件 仅 managed-settings.json 任意 settings 文件
行为 阻止非白名单添加 自动安装缺失市场
实施时机 网络/文件系统操作前 用户信任确认后
可覆盖 否(最高优先级) 是(更高优先级覆盖)
使用场景 合规、安全限制 入门、标准化

strictPluginOnlyCustomization

(仅托管)阻止技能、代理、钩子和 MCP 服务器来自用户和项目源,只能来自插件或托管设置。值可以是 true(锁定全部)或数组(只锁定列出的表面)。需 v2.1.82+。

管理插件

使用 /plugin 命令交互式管理。

环境变量

环境变量可以控制 Claude Code 行为而无需编辑配置文件。所有变量也可以在 settings.jsonenv 键中配置。完整列表见环境变量参考

系统提示

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 服务器白名单(enableAllProjectMcpServersenabledMcpjsonServers)、钩子(hooks)等写入项目根目录的 .claude/settings.json 并提交到 git。个人本地覆盖应使用 .claude/settings.local.json。如果需要企业级统一管控,使用 managed-settings.json 部署托管设置。