配置体系¶
本文你会学到:
- 🏗️ 理解 Claude Code 五层配置优先级的含义和作用范围
- 📝 配置文件的位置与冲突解决规则
- ✅ 根据场景选择合适的配置层级
- 💡 配置最佳实践与常见陷阱
→ 更多内容请查看子页面:「CLAUDE.md 记忆文件」「Settings 与权限」「模型与输出风格」「高级配置」
🏗️ 为什么 Claude Code 的配置很重要?¶
想象一下:你刚入职一家公司,有公司制度(所有员工都要遵守)、部门规章(你所在部门的额外规则)、还有你个人的工作习惯。这三层规则共同决定了你「能做什么」和「该怎么做」。
Claude Code 的配置体系也是同样的道理——它有五层配置,从「管理员强制执行的安全策略」到「你个人的偏好」,层层叠加、逐级覆盖。理解这个体系,你就掌握了让 Claude Code 按你的意愿高效工作的钥匙。
graph TD
A["🔴 Managed<br/>管理员强制"] --> B["🟠 CLI 参数<br/>单次会话"]
B --> C["🟡 Local<br/>本地偏好"]
C --> D["🔵 Project<br/>团队共享"]
D --> E["⚪ User<br/>全局个人"]
F["💡 实际场景"] --> A
F --> G["禁用 Fast Mode<br/>禁止 rm -rf<br/>API 端点锁定"]
F --> H["--model opus<br/>--permission-mode plan"]
F --> I["个人工具白名单<br/>本地路径配置"]
F --> J["团队编码规范<br/>共享 MCP 配置"]
F --> K["全局语言偏好<br/>默认权限"]
style A fill:transparent,stroke:#d32f2f,stroke-width:2px
style B fill:transparent,stroke:#f57c00,stroke-width:2px
style C fill:transparent,stroke:#fbc02d,stroke-width:1px
style D fill:transparent,stroke:#0288d1,stroke-width:1px
style E fill:transparent,stroke:#768390,stroke-width:1px
style F fill:transparent,stroke:#7b1fa2,stroke-width:1px
数字越小优先级越高——左边的 Managed 像公司的「安全制度」,右边的 User 像你的「个人偏好」。当两层配置冲突时,高优先级覆盖低优先级。
📂 配置文件有哪几层?¶
五层优先级¶
Claude Code 的所有配置都遵循相同的优先级规则:数字越小优先级越高。
| 优先级 | 层级 | 谁能修改 | 作用范围 | 典型用途 |
|---|---|---|---|---|
| 1(最高) | Managed(托管) | 系统管理员 | 整个组织 | 强制安全策略、合规要求(v2.1.83 新增 managed-settings.d/ 分片配置目录) |
| 2 | CLI 参数 | 用户(启动时) | 单次会话 | 临时覆盖、调试 |
| 3 | Local(本地) | 用户 | 本机、本项目 | 个人偏好(不提交 git) |
| 4 | Project(项目) | 团队 | 当前项目 | 团队规范(提交 git 共享) |
| 5(最低) | User(用户) | 用户 | 所有项目 | 全局个人偏好 |
💡 把它想成 CSS 的优先级:!important > inline style > ID > class > tag。Managed 配置就像 !important,无论你怎么设置,它说了算。
📝 一些实用的配置项:
autoScrollEnabled(v2.1.110 新增):全屏模式下禁用对话自动滚动。当 Claude 输出很长而你正在回看上方内容时,关闭自动滚动可以防止页面自动跳到底部/config设置持久化(v2.1.119 新增):通过/config修改的设置(主题、编辑器模式、verbose 等)现在会持久化到~/.claude/settings.json,并参与项目/本地/策略覆盖优先级——之前这些设置只在当前会话生效,重启后就丢失了- Auto mode
$defaults(v2.1.118 新增):在autoMode.allow、autoMode.soft_deny或autoMode.environment中使用"$defaults"可以在内置默认列表旁添加自定义规则,而不必全部手动重写 - Auto mode "Don't ask again"(v2.1.118 新增):在 auto mode 选择加入提示中新增"不再询问"选项,确认后不再每次弹出
--dangerously-skip-permissions写入放宽(v2.1.121 改进):不再提示对.claude/skills/、.claude/agents/和.claude/commands/目录的写入——这些目录本身就是 Claude 工作空间的组成部分--dangerously-skip-permissions受保护路径范围扩展(v2.1.126 改进):现在绕过对.claude/、.git/、.vscode/、shell 配置文件等受保护路径的写入提示。不过灾难性删除命令仍会提示作为安全网,防止意外损坏关键文件- Auto mode 错误提示增强(v2.1.128 改进):当 auto mode 的安全分类器无法评估操作时,错误信息现在包含具体提示——建议重试、运行
/compact释放上下文、或使用--debug模式运行
配置文件位置¶
每一层都有对应的配置文件路径:
| 层级 | 配置文件路径 | 是否提交 git |
|---|---|---|
| Managed | 由系统管理器注入,路径因平台而异 | 不适用 |
| Local | .claude/settings.local.json |
❌ 不提交 |
| Project | .claude/settings.json |
✅ 提交共享 |
| User | ~/.claude/settings.json |
不适用(全局) |
⚠️ 注意:.claude/settings.local.json 和 .gitignore 默认会忽略本地配置文件,所以你的个人偏好不会意外提交到仓库。
💡 在 settings.json 文件头部添加 "$schema": "https://json.schemastore.org/claude-code-settings.json" 可以在 VS Code、Cursor 等编辑器中获得自动补全和内联验证。
自动备份
Claude Code 会自动创建配置文件的时间戳备份,保留最近五个备份以防止数据丢失。如果你意外修改了配置文件,可以在同目录下找到 .backup.* 后缀的备份文件。
全局配置(~/.claude.json)¶
部分设置存储在 ~/.claude.json 中(不是 settings.json),添加到 settings.json 会触发架构验证错误:
| 配置项 | 说明 | 默认值 |
|---|---|---|
autoConnectIde |
从外部终端启动时自动连接 IDE | false |
autoInstallIdeExtension |
从 VS Code 终端运行时自动安装 IDE 扩展 | true |
externalEditorContext |
用 Ctrl+G 打开外部编辑器时附带 Claude 上次响应 |
false |
| ~/.claude.json 示例 | |
|---|---|
Worktree 设置¶
通过 worktree.* 配置 --worktree 如何创建和管理 git worktree,适用于大型 monorepo:
| 配置项 | 说明 | 示例 |
|---|---|---|
worktree.symlinkDirectories |
从主仓库符号链接到每个 worktree 的目录 | ["node_modules", ".cache"] |
worktree.sparsePaths |
通过 sparse-checkout 只检出指定目录 | ["packages/my-app"] |
冲突解决规则¶
当多个层级对同一个配置项设置了不同的值时,高优先级覆盖低优先级。但有一个重要的例外:权限规则(permissions)是追加的,不是覆盖的。所有层级的 allow 规则会合并,而 deny 规则会从最严格的层级生效。v2.1.0 新增了通配符权限匹配(如 Bash(npm *)、Bash(* install)),让权限规则更灵活。
v2.1.113 安全收紧
从 v2.1.113 起,权限引擎对常见绕过手法做了关键收紧——这些是真实存在过的安全漏洞:
deny规则匹配 exec wrapper:Bash(rm:*)等 deny 规则现在会匹配被env、sudo、watch、ionice、setsid等 wrapper 包裹的命令,不能再通过sudo rm ...绕过Bash(find:*)allow 不再放行-exec/-delete:避免攻击者用find . -exec rm {} \;绕过Bash(rm:*)限制- macOS
/private/{etc,var,tmp,home}视为危险删除目标:在Bash(rm:*)allow 规则下,删除这些路径会触发危险确认(macOS 上/etc实际指向/private/etc) dangerouslyDisableSandbox强制提示:使用此参数运行命令时不再绕过权限提示(v2.1.113 修复)- 多行注释命令完整显示:第一行是注释的多行 Bash 命令现在在 transcript 中显示完整命令,关闭 UI 欺骗向量(v2.1.113 修复)
如果你之前依赖这些"漏洞"做某些自动化,升级后需要显式调整 allow 规则。
新增 sandbox 网络黑名单
v2.1.113 新增 sandbox.network.deniedDomains 设置——即使更广泛的 allowedDomains 通配符允许,仍可阻止特定域名。适合"允许 *.example.com 但禁止 internal.example.com"这类场景。
✅ 配置最佳实践¶
推荐的项目级配置¶
| .claude/settings.json(提交到 git) | |
|---|---|
推荐的 User 级配置¶
| ~/.claude/settings.json | |
|---|---|
💡 language 设置在 v2.1.0 中新增,用于配置 Claude 的回复语言。
主题方面,v2.1.111 新增了 "Auto (match terminal)" 主题选项,自动匹配终端的深色/浅色模式——你不再需要根据终端主题手动切换。从 /theme 命令中选择即可。
💡 命令行输入子命令时如果拼写接近但不正确,Claude Code 会自动建议最接近的子命令(v2.1.111 新增),比如输入 claude udpate 会提示 "你是想说 claude update?"。
配置层级选择指南¶
| 你想配置什么? | 放在哪一层? | 原因 |
|---|---|---|
| 团队编码规范 | Project | 全员共享,通过 git 同步 |
| 个人语言偏好 | User | 所有项目通用 |
| 企业的安全策略 | Managed | 管理员强制执行 |
| 临时调试配置 | CLI 参数 | 仅本次会话生效 |
| 本地开发环境路径 | Local | 因机器而异,不提交 git |
📝 小结:Claude Code 的配置体系由五层优先级构成——Managed > CLI > Local > Project > User。理解这个层级关系后,你就能精确控制 Claude Code 在不同场景下的行为。权限系统保障安全,沙箱机制提供隔离,模型配置和输出风格让你按需定制 Claude 的能力与风格。