/config 命令来配置 Claude Code,这会打开一个选项卡式设置界面,您可以在其中查看状态信息并修改配置选项。
配置作用域
Claude Code 使用作用域系统来确定配置应用的位置以及与谁共享。了解作用域可以帮助您决定如何为个人使用、团队协作或企业部署配置 Claude Code。可用作用域
何时使用每个作用域
Managed 作用域用于:- 必须在整个组织范围内强制执行的安全策略
- 无法被覆盖的合规要求
- 由 IT/DevOps 部署的标准化配置
- 您想在任何地方使用的个人偏好(主题、编辑器设置)
- 您在所有项目中使用的工具和插件
- API 密钥和身份验证(安全存储)
- 团队共享的设置(权限、hooks、MCP servers)
- 整个团队应该拥有的插件
- 跨协作者标准化工具
- 特定项目的个人覆盖
- 在与团队共享之前测试配置
- 对其他人不适用的特定于机器的设置
作用域如何相互作用
当在多个作用域中配置相同的设置时,更具体的作用域优先:- Managed(最高)- 无法被任何内容覆盖
- 命令行参数 - 临时会话覆盖
- Local - 覆盖项目和用户设置
- Project - 覆盖用户设置
- User(最低)- 当没有其他内容指定设置时应用
哪些功能使用作用域
作用域适用于许多 Claude Code 功能:设置文件
settings.json 文件是我们用于通过分层设置配置 Claude Code 的官方机制:
-
用户设置在
~/.claude/settings.json中定义,适用于所有项目。 -
项目设置保存在您的项目目录中:
.claude/settings.json用于检入源代码管理并与您的团队共享的设置.claude/settings.local.json用于未检入的设置,适用于个人偏好和实验。Claude Code 将在创建.claude/settings.local.json时配置 git 以忽略它。
-
Managed 设置:对于需要集中控制的组织,Claude Code 支持可以部署到系统目录的
managed-settings.json和managed-mcp.json文件:- macOS:
/Library/Application Support/ClaudeCode/ - Linux 和 WSL:
/etc/claude-code/ - Windows:
C:\Program Files\ClaudeCode\
有关详细信息,请参阅 Managed 设置 和 Managed MCP 配置。这些是系统范围的路径(不是像~/Library/...这样的用户主目录),需要管理员权限。它们设计用于由 IT 管理员部署。Managed 部署还可以使用strictKnownMarketplaces限制插件市场添加。有关更多信息,请参阅 Managed 市场限制。 - macOS:
-
其他配置存储在
~/.claude.json中。此文件包含您的偏好(主题、通知设置、编辑器模式)、OAuth 会话、用户和本地作用域的 MCP server 配置、每个项目的状态(允许的工具、信任设置)和各种缓存。项目作用域的 MCP servers 单独存储在.mcp.json中。
Claude Code 自动创建配置文件的时间戳备份,并保留最近五个备份以防止数据丢失。
示例 settings.json
$schema 行指向 Claude Code 设置的官方 JSON 架构。将其添加到您的 settings.json 可在 VS Code、Cursor 和任何其他支持 JSON 架构验证的编辑器中启用自动完成和内联验证。
可用设置
settings.json 支持多个选项:
权限设置
权限规则语法
权限规则遵循格式Tool 或 Tool(specifier)。规则按顺序评估:首先是拒绝规则,然后是询问,最后是允许。第一个匹配的规则获胜。
快速示例:
有关完整的规则语法参考,包括通配符行为、Read、Edit、WebFetch、MCP 和 Task 规则的工具特定模式,以及 Bash 模式的安全限制,请参阅 权限规则语法。
Sandbox 设置
配置高级沙箱行为。沙箱将 bash 命令与您的文件系统和网络隔离。有关详细信息,请参阅 Sandboxing。 文件系统和网络限制通过 Read、Edit 和 WebFetch 权限规则配置,而不是通过这些沙箱设置。
配置示例:
- 使用
Read拒绝规则阻止 Claude 读取特定文件或目录 - 使用
Edit允许规则让 Claude 写入当前工作目录之外的目录 - 使用
Edit拒绝规则阻止写入特定路径 - 使用
WebFetch允许/拒绝规则控制 Claude 可以访问哪些网络域
Attribution 设置
Claude Code 为 git 提交和拉取请求添加归属。这些是单独配置的:- 提交默认使用 git trailers(如
Co-Authored-By),可以自定义或禁用 - 拉取请求描述是纯文本
默认提交归属:
attribution 设置优先于已弃用的 includeCoAuthoredBy 设置。要隐藏所有归属,请将 commit 和 pr 设置为空字符串。文件建议设置
为@ 文件路径自动完成配置自定义命令。内置文件建议使用快速文件系统遍历,但大型 monorepos 可能受益于项目特定的索引,例如预构建的文件索引或自定义工具。
CLAUDE_PROJECT_DIR。它通过 stdin 接收包含 query 字段的 JSON:
Hook 配置
仅 Managed 设置:控制允许运行哪些 hooks。此设置只能在 managed 设置 中配置,为管理员提供对 hook 执行的严格控制。 当allowManagedHooksOnly 为 true 时的行为:
- 加载 Managed hooks 和 SDK hooks
- 阻止用户 hooks、项目 hooks 和插件 hooks
设置优先级
设置按优先级顺序应用。从最高到最低:-
Managed 设置 (
managed-settings.json)- 由 IT/DevOps 部署到系统目录的策略
- 无法被用户或项目设置覆盖
-
命令行参数
- 特定会话的临时覆盖
-
本地项目设置 (
.claude/settings.local.json)- 个人项目特定设置
-
共享项目设置 (
.claude/settings.json)- 源代码管理中的团队共享项目设置
-
用户设置 (
~/.claude/settings.json)- 个人全局设置
Bash(npm run *),但项目的共享设置拒绝它,则项目设置优先,命令被阻止。
关于配置系统的关键要点
- 内存文件 (
CLAUDE.md):包含 Claude 在启动时加载的说明和上下文 - 设置文件 (JSON):配置权限、环境变量和工具行为
- Skills:可以使用
/skill-name调用或由 Claude 自动加载的自定义提示 - MCP servers:使用其他工具和集成扩展 Claude Code
- 优先级:更高级别的配置(Managed)覆盖更低级别的配置(User/Project)
- 继承:设置被合并,更具体的设置添加到或覆盖更广泛的设置
系统提示
Claude Code 的内部系统提示未发布。要添加自定义说明,请使用CLAUDE.md 文件或 --append-system-prompt 标志。
排除敏感文件
要防止 Claude Code 访问包含敏感信息(如 API 密钥、机密和环境文件)的文件,请在您的.claude/settings.json 文件中使用 permissions.deny 设置:
ignorePatterns 配置。匹配这些模式的文件被排除在文件发现和搜索结果之外,对这些文件的读取操作被拒绝。
Subagent 配置
Claude Code 支持可在用户和项目级别配置的自定义 AI subagents。这些 subagents 存储为带有 YAML frontmatter 的 Markdown 文件:- 用户 subagents:
~/.claude/agents/- 在所有项目中可用 - 项目 subagents:
.claude/agents/- 特定于您的项目,可与您的团队共享
插件配置
Claude Code 支持一个插件系统,让您可以使用 skills、agents、hooks 和 MCP servers 扩展功能。插件通过市场分发,可在用户和存储库级别配置。插件设置
settings.json 中的插件相关设置:
enabledPlugins
控制启用哪些插件。格式:"plugin-name@marketplace-name": true/false
作用域:
- 用户设置 (
~/.claude/settings.json):个人插件偏好 - 项目设置 (
.claude/settings.json):与团队共享的项目特定插件 - 本地设置 (
.claude/settings.local.json):每台机器的覆盖(未提交)
extraKnownMarketplaces
定义应为存储库提供的其他市场。通常在存储库级别设置中使用,以确保团队成员有权访问所需的插件源。
当存储库包含 extraKnownMarketplaces 时:
- 当团队成员信任该文件夹时,系统会提示他们安装市场
- 然后提示团队成员从该市场安装插件
- 用户可以跳过不需要的市场或插件(存储在用户设置中)
- 安装遵守信任边界并需要明确同意
github:GitHub 存储库(使用repo)git:任何 git URL(使用url)directory:本地文件系统路径(使用path,仅用于开发)hostPattern:正则表达式模式以匹配市场主机(使用hostPattern)
strictKnownMarketplaces
仅 Managed 设置:控制用户可以添加哪些插件市场。此设置只能在 managed-settings.json 中配置,为管理员提供对市场源的严格控制。
Managed 设置文件位置:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json - Linux 和 WSL:
/etc/claude-code/managed-settings.json - Windows:
C:\Program Files\ClaudeCode\managed-settings.json
- 仅在 managed 设置 (
managed-settings.json) 中可用 - 无法被用户或项目设置覆盖(最高优先级)
- 在网络/文件系统操作之前强制执行(阻止的源永远不会执行)
- 对源规范使用精确匹配(包括 git 源的
ref、path),除了hostPattern,它使用正则表达式匹配
undefined(默认):无限制 - 用户可以添加任何市场- 空数组
[]:完全锁定 - 用户无法添加任何新市场 - 源列表:用户只能添加与之完全匹配的市场
hostPattern 使用正则表达式匹配市场主机。
- GitHub 存储库:
repo(必需)、ref(可选:分支/标签/SHA)、path(可选:子目录)
- Git 存储库:
url(必需)、ref(可选:分支/标签/SHA)、path(可选:子目录)
- 基于 URL 的市场:
url(必需)、headers(可选:用于身份验证访问的 HTTP 标头)
基于 URL 的市场仅下载
marketplace.json 文件。它们不从服务器下载插件文件。基于 URL 的市场中的插件必须使用外部源(GitHub、npm 或 git URL),而不是相对路径。对于具有相对路径的插件,请改用基于 Git 的市场。有关详细信息,请参阅 故障排除。- NPM 包:
package(必需,支持作用域包)
- 文件路径:
path(必需:marketplace.json 文件的绝对路径)
- 目录路径:
path(必需:包含 .claude-plugin/marketplace.json 的目录的绝对路径)
- 主机模式匹配:
hostPattern(必需:与市场主机匹配的正则表达式模式)
当您想允许来自特定主机的所有市场而不枚举每个存储库时,请使用主机模式匹配。这对于具有内部 GitHub Enterprise 或 GitLab 服务器的组织很有用,开发人员可以在其中创建自己的市场。
按源类型的主机提取:
github:始终与github.com匹配git:从 URL 提取主机名(支持 HTTPS 和 SSH 格式)url:从 URL 提取主机名npm、file、directory:不支持主机模式匹配
github 和 git),这包括所有可选字段:
repo或url必须精确匹配ref字段必须精确匹配(或两者都未定义)path字段必须精确匹配(或两者都未定义)
extraKnownMarketplaces 的比较:
格式差异:
strictKnownMarketplaces 使用直接源对象:
extraKnownMarketplaces 需要命名市场:
- 限制在任何网络请求或文件系统操作之前检查
- 被阻止时,用户会看到清晰的错误消息,指示源被 managed 策略阻止
- 限制仅适用于添加新市场;以前安装的市场保持可访问
- Managed 设置具有最高优先级,无法被覆盖
管理插件
使用/plugin 命令以交互方式管理插件:
- 浏览市场中的可用插件
- 安装/卸载插件
- 启用/禁用插件
- 查看插件详细信息(提供的命令、agents、hooks)
- 添加/删除市场
环境变量
Claude Code 支持以下环境变量来控制其行为:所有环境变量也可以在
settings.json 中配置。这是自动为每个会话设置环境变量或为整个团队或组织推出一组环境变量的有用方式。Claude 可用的工具
Claude Code 可以访问一组强大的工具,帮助它理解和修改您的代码库:
权限规则可以使用
/allowed-tools 或在 权限设置 中配置。另请参阅 工具特定权限规则。
Bash 工具行为
Bash 工具执行 shell 命令,具有以下持久性行为:- 工作目录持久化:当 Claude 更改工作目录(例如
cd /path/to/dir)时,后续 Bash 命令将在该目录中执行。您可以使用CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1在每个命令后重置为项目目录。 - 环境变量不持久化:在一个 Bash 命令中设置的环境变量(例如
export MY_VAR=value)在后续 Bash 命令中不可用。每个 Bash 命令在新的 shell 环境中运行。
/path/to/env-setup.sh 包含:
.claude/settings.json 中配置:
$CLAUDE_ENV_FILE,然后在每个 Bash 命令之前获取。这对于团队共享的项目配置很理想。
有关选项 3 的更多详细信息,请参阅 SessionStart hooks。