Skip to main content
托管设置让您决定 Claude Code 在组织中每台机器上安装和允许的 plugins。用户无法覆盖这些设置。您可以从 claude.ai 管理员控制台以服务器托管设置的形式或通过 MDM 或 managed-settings.json 文件以端点托管设置的形式提供这些设置。此页面上的大多数控制仅从托管设置生效。 此页面适用于管理员,此处的设置管理 Claude Code。
这些情况在其他页面上有介绍:
这些部分遵循大多数推出采取的顺序:为所有人或按存储库要求 plugins,为容器和 CI 提供种子,限制用户可以自己添加的内容,设置更新策略,然后审计已安装的内容。要在一个地方查看每个策略键,请参阅控制矩阵。

预安装和要求插件

市场是 Claude Code 从 git 存储库、URL 或本地路径获取的插件目录。在机器上注册市场后,Claude Code 可以从中安装插件。 要为整个车队安装插件,请在托管设置、策略文件或组织中每台机器读取的服务器交付策略中一起设置两个键:extraKnownMarketplaces 在每台机器上注册市场,enabledPlugins 命名要从中安装和启用的插件。选择交付机制涵盖托管设置如何到达每台机器。

选择交付机制

托管设置通过以下三种交付机制之一到达机器: 如果您在 claude.ai 上有 Claude for Teams 或 Enterprise 组织,并且您的设备不都在 MDM 下,请使用服务器托管设置。否则使用 MDM 策略或托管设置文件。有关权衡,请参阅在服务器托管和端点托管设置之间选择。

哪个托管源在机器上应用

默认情况下,这三个源中只有一个在机器上应用。Claude Code 使用首先交付策略键的源,首先检查服务器托管设置,然后是 MDM 策略,然后是托管设置文件。如果服务器托管设置交付甚至一个不相关的策略键,Claude Code 会忽略该机器上 MDM 策略或托管设置文件中的插件键,除了它从每个源读取的键。 要改为应用每个源,请将managedSourcesBehavior设置为 "merge"。 Claude Code 如何组合托管源也在两种模式中列出 Claude Code 从每个源读取的键。

要求市场及其插件

在 extraKnownMarketplaces 下添加市场,使用市场自己的 marketplace.json 中的 name 作为键。然后在 enabledPlugins 下添加每个插件作为 plugin-name@marketplace-name。每个市场条目都带有一个 source 对象,其中 source 字段命名类型,例如 github。此托管设置示例注册一个组织市场并强制启用来自它的两个插件:
设置到达机器后,Claude Code 注册市场并在用户下一个会话开始时安装两个插件。用户在 /plugin 中看到它们,在自己的范围内禁用一个不会阻止它加载,因为托管设置优先于每个其他范围。 要在每个范围内阻止插件并将其从市场列表中隐藏,请在托管 enabledPlugins 中将其设置为 false。 为您的市场调整 autoUpdate 和 source 字段:
  • autoUpdate:true 使市场及其插件在后台刷新,false 关闭它。请参阅设置更新策略。
  • source:github 是几种源类型之一。git 源为 GitLab 或内部主机采用 url,url 源采用托管 marketplace.json 的地址。每个源形状在市场参考中。
如果市场是私有 git 存储库,每个用户都需要对其有读取权限。git 市场的克隆在用户的机器上使用 git 运行,使用存储的凭证且无提示。对于没有 git 主机账户的用户,请改用播种。 托管条目也会覆盖来自另一个源的同名市场条目或 --plugin-dir 副本:
  • 市场:托管市场条目替换具有相同名称的较低优先级条目,两个条目的字段不合并。
  • --plugin-dir 副本:--plugin-dir 为一个会话从本地目录加载插件。有关当该副本的名称与您的托管 enabledPlugins 命名的插件匹配时会发生什么,请参阅名称冲突。
Anthropic 的官方市场 claude-plugins-official 当 enabledPlugins 将其一个插件设置为 true 时不需要 extraKnownMarketplaces 条目。该 name@claude-plugins-official 条目在这些键应用的任何地方声明市场。如果您不启用其任何插件但仍想在每台机器上注册它,请给它一个显式条目,如允许官方市场和您自己的所做的那样。

按存储库要求插件

要覆盖一个存储库的贡献者而不是整个车队,请在该存储库的 .claude/settings.json 中设置 extraKnownMarketplaces 和 enabledPlugins。extraKnownMarketplaces 条目仅在贡献者已信任的文件夹中应用,在不受信任的文件夹中 Claude Code 会无声地忽略它们:
  • 交互式会话:Claude Code 仅在贡献者接受该文件夹的工作区信任对话后注册市场。
  • 非交互式 -p 运行 :条目仅在贡献者已交互式接受其信任的文件夹中应用,或您在 ~/.claude.json 中设置其 hasTrustDialogAccepted 标志的文件夹中应用。
市场按相对路径列出的插件在存储库的 extraKnownMarketplaces 条目应用后从市场副本加载。市场条目指向外部源(例如插件自己的 GitHub 存储库)的插件不会仅从存储库的设置安装。每个贡献者看到 Plugin "<name>" is enabled in project settings but isn't installed,直到他们运行 claude plugin install <name>@<marketplace> --scope project,如安装插件所述。 如果您使用带有相对路径的本地 directory 或 file 源,路径相对于您的存储库的主检出解析。当您从 git worktree 运行 Claude Code 时,路径仍指向主检出,因此所有 worktree 共享相同的市场位置。 要推出具有依赖关系的插件包,请将包插件放在 enabledPlugins 中,如插件依赖关系所述。

每个表面何时应用插件键

该表显示每种 Claude Code 会话何时从托管设置和存储库的 .claude/settings.json 应用 extraKnownMarketplaces 和 enabledPlugins。对于 Desktop 应用和 IDE 扩展,请参阅安装插件。 在 -p 或 CI 运行中,市场和插件在后台安装,因此插件可能在第一轮中丢失。设置 CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1 使运行在其第一个查询之前等待安装。

确认推出

检查市场和插件是否到达机器或 CI 运行:
  • 在一台机器上:启动 Claude Code 并运行 /plugin。市场和插件被列出。
  • 在 CI 中:使用 --output-format stream-json --verbose 运行 claude -p。init 事件在 plugins 下列出加载的插件。

为容器和 CI 播种

对于无法在运行时克隆的容器镜像和 CI 运行器,在构建时预填充插件目录并在 CLAUDE_CODE_PLUGIN_SEED_DIR 处指向它。Claude Code 在启动时注册播种的市场并从播种加载插件缓存,无需克隆。 播种也为没有 git 主机账户的用户服务。
在 CI/CD 环境中,在从私有存储库安装插件之前配置 git 凭证助手。在 GitHub Actions 上,导出具有市场存储库读取权限的令牌作为 GH_TOKEN,然后运行 gh auth setup-git。默认工作流令牌只能访问工作流自己的存储库,因此另一个存储库中的私有市场需要个人访问令牌或应用令牌。
1

在构建时安装到播种中

设置 CLAUDE_CODE_PLUGIN_CACHE_DIR 为播种路径,以便市场和插件安装在那里而不是 ~/.claude/plugins:
播种的布局与 ~/.claude/plugins 相同:known_marketplaces.json、marketplaces/<name>/ 和 cache/<marketplace>/<plugin>/<version>/。您可以在与构建它不同的路径处挂载播种。
2

在运行时指向播种

在容器的环境中设置 CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed。要使用多个播种,在 Unix 上用 : 分隔其路径,在 Windows 上用 ; 分隔。Claude Code 使用包含给定市场或插件缓存的第一个播种。
3

启用插件

播种中的插件不会自动启用。为每个要加载的播种插件在托管设置或存储库的 .claude/settings.json 中设置 enabledPlugins。
要验证播种,在镜像中使用 --output-format stream-json --verbose 运行 claude -p。在 init 事件的 plugins 列表中,每个加载的插件的 path 在播种下,例如 /opt/claude-seed/cache/your-marketplace/code-formatter/1.0.0。 播种市场遵循这些规则:
  • 只读:Claude Code 从不写入播种并为播种市场强制 autoUpdate 关闭。
  • 播种条目优先:在每次启动时,播种中声明的市场覆盖用户的同名条目。用户使用 claude plugin disable 选择退出播种插件,而不是通过删除市场。
  • 更新和删除失败:claude plugin marketplace update <name> 和在播种市场上不带 --scope 的 remove 失败,并显示命名播种目录的消息。
  • 策略仍然适用:允许列表和阻止列表也检查播种市场的记录源。允许您构建播种的源。
对于没有出站 git 访问的车队,将播种与共享挂载上的 directory 或 file 市场源结合。也设置 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1,这也关闭插件自动更新。如果代理可用,请参阅代理配置了解要设置的变量。

限制用户可以安装的内容

托管 strictKnownMarketplaces 允许列表和 blockedMarketplaces 阻止列表决定插件可能来自哪些市场源。市场的源是 Claude Code 从中获取它的 git 存储库、URL 或本地路径。两个列表都匹配插件来自的市场的源,而不是该市场内的插件自己的条目。 对于常见的锁定,允许官方市场和您自己的,请参阅允许官方市场和您自己的。将其与disableSideloadFlags配对,以便用户无法从本地目录或 URL 加载插件。 两个列表在任何下载之前和会话开始时应用:
  • 在下载之前:当用户添加市场以及在每次安装、更新、刷新和自动更新时应用列表。
  • 在会话开始时:列表再次应用于已安装的插件,因此已安装的插件其市场源不再匹配不加载。/plugin 将其列为 Marketplace "<name>" is not in the allowed marketplace list 或 Marketplace "<name>" is blocked by enterprise policy。
两个列表的执行位置取决于您在哪里设置它们:
  • claude.ai 管理控制台:Claude Code 在读取服务器托管设置的会话中执行两个列表。claude.ai 也在您组织中的任何人从 git 存储库在 claude.ai 上添加新市场时检查它们,或从 Claude Desktop 应用外其 Code 选项卡的自定义中检查。这涵盖成员为自己的账户添加的市场和在组织设置 > 插件下为整个组织添加的市场。claude.ai 拒绝允许列表不允许或阻止列表命名的存储库。它不重新检查在您设置列表之前在任一位置添加的市场,也不检查上传的插件。
  • 托管设置文件、OS 级策略或其他托管源:Claude Code 在读取该源的地方执行两个列表。claude.ai 不读取它。
虽然设置了任何允许列表,或阻止列表命名除skills-dir之外的任何源,Claude Code 找不到的市场的插件不加载。/plugin 为其显示策略错误而不是未找到错误。常见情况是市场的陈旧 enabledPlugins 条目,没有人注册。

控制矩阵

该表列出每个插件策略键、它执行的内容以及它无法做的内容。 表中的每个键都是托管设置,除了 enabledPlugins、syncClaudeAiPlugins 和 CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL:
  • enabledPlugins:您可以在任何范围内设置它,托管设置锁定它。
  • syncClaudeAiPlugins:每个用户也可以在自己的用户或本地设置中设置它。请参阅其设置参考中的范围。
  • CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL:这是一个环境变量,您通过关闭整个车队的更新下显示的托管 env 块交付。
此处的每个设置键在设置参考中都有条目。

市场键的别名

strictKnownMarketplaces 也可以拼写为 allowedMarketplaces,extraKnownMarketplaces 也可以拼写为 additionalMarketplaces。
  • 版本:别名需要 Claude Code v2.1.232 或更高版本,较旧的客户端忽略它们。在混合车队读取的文件中,保持规范名称。
  • 两个拼写都设置:当文件设置两个拼写时,规范键的值应用。

使用 strictKnownMarketplaces 的允许列表

将允许列表设置为这些源对象的列表。大多数条目完全匹配,hostPattern 和 pathPattern 条目作为正则表达式匹配,github 所有者通配符按所有者匹配:
  • github:{ "source": "github", "repo": "your-org/approved-plugins" },带可选的 ref 和 path。
  • github 所有者通配符:{ "source": "github", "repo": "your-org/*" } 匹配该所有者下的每个存储库。* 必须代表整个存储库名称。Claude Code 忽略诸如 */plugins 和 your-org/tools-* 之类的条目作为无效,因此它们不匹配任何内容。需要 Claude Code v2.1.223 或更高版本。
  • git:{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" },带可选的 ref 和 path。
  • url:{ "source": "url", "url": "https://plugins.example.com/marketplace.json" },带可选的 headers。
  • file 和 directory:{ "source": "file", "path": "/opt/marketplace/marketplace.json" } 或 { "source": "directory", "path": "/opt/marketplace/plugins" },带绝对路径。
  • hostPattern:{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" },与 github、git 和 url 源的主机匹配。该模式在主机名中的任何地方匹配,因此如所示用 ^ 和 $ 锚定以匹配整个主机。github 源始终计为 github.com。对于开发人员创建自己的市场的 GitHub Enterprise Server 或 GitLab 主机,使用 hostPattern 条目。GHES 页面有工作示例。
  • pathPattern:{ "source": "pathPattern", "pathPattern": "^/opt/approved/" },与 file 和 directory 源的 path 匹配。该模式在路径中的任何地方匹配,因此以 ^ 开头以固定目录前缀。".*" 允许每个本地路径。
  • skills-dir:{ "source": "skills-dir" } 在设置允许列表时保持技能目录插件加载,并不匹配任何市场。

条目如何匹配

url 条目在其 url 值上匹配;headers 不被比较。对于 github 和 git 条目,repo 或 url、ref 和 path 必须都匹配,或在两侧都不存在:
  • 没有 ref 的条目不覆盖具有 ref: "main" 的源。
  • your-org/your-marketplace 的条目不覆盖克隆相同存储库的 git URL。
  • 尾部斜杠、.git 后缀或 ssh:// 代替 https:// 是不同的值。当市场可以通过多个 URL 克隆时,更喜欢 hostPattern 条目。
所有者通配符条目遵循 ref 的确切规则,并匹配存储库内的任何 path,除非条目固定一个。通配符匹配在允许列表上区分大小写。

保持技能目录插件加载

技能目录插件是用户在 ~/.claude/skills/ 或项目的 .claude/skills/ 下保持的插件,在带有 .claude-plugin/plugin.json 的文件夹中。如果您设置任何没有 { "source": "skills-dir" } 条目的允许列表,它们停止加载。普通技能,意思是没有该清单的 SKILL.md,继续加载。

在 claude.ai 上托管的市场

允许列表和阻止列表通过其主机匹配在 claude.ai 上托管的市场。要允许或阻止一个,将与 claude.ai 匹配的 hostPattern 条目添加到 strictKnownMarketplaces 或 blockedMarketplaces。在允许列表上,这样的条目允许您组织的 claude.ai 市场和 claude.ai 默认市场,但不允许由成员自己的 claude.ai 上传组成的市场或其范围 claude.ai 未声明的市场。需要 Claude Code v2.1.273 或更高版本。

锁定每个源

空允许列表 [] 锁定每个市场源,包括官方市场。 此锁定不覆盖从 claude.ai 同步的插件,Claude Code 从每个用户的账户而不是从市场下载。要也停止那些,请在托管设置中将syncClaudeAiPlugins设置为 false,或在 claude.ai 上为您的组织关闭技能。

使用 blockedMarketplaces 的阻止列表

blockedMarketplaces 采用与strictKnownMarketplaces相同的源对象,并首先检查,因此两个列表上的源被阻止。阻止列表匹配比允许列表匹配更宽:
  • Git URL 被规范化,因此一个 github.com 存储库的 git@ 和 https:// 形式、.git 后缀和尾部斜杠都匹配相同的条目。
  • github 条目也阻止等效的 git URL,反之亦然。
  • 对于 owner/* 条目,所有者比较不区分大小写。
  • 没有 ref 或 path 的条目阻止它匹配的存储库的每个 ref 和 path。
此条目阻止一个 GitHub 所有者下的每个存储库:
blockedMarketplaces 中的 url 条目也在用户添加 Claude Code 克隆而不是获取的 https:// 存储库 URL 时应用,例如裸 github.com 或 gitlab.com 存储库 URL。如果条目命名该 URL,用户无法添加它。匹配忽略 .git 后缀和用户在 # 后附加的任何 ref。需要 Claude Code v2.1.232 或更高版本。 此处的 { "source": "skills-dir" } 条目停止技能目录插件从 ~/.claude/skills/ 和项目的 .claude/skills/ 加载。 仅命名该条目的阻止列表不计为活跃限制,因此它不停止 Claude Code 找不到其市场的插件加载。

允许官方市场和您自己的

大多数组织允许官方市场和他们自己的,并注册两者,以便每台机器都有它们。此托管设置策略允许两个市场,注册两者,强制启用两个插件,并拒绝 --plugin-dir:
在具有此策略的机器上,添加列表外的任何源,例如 /plugin marketplace add https://example.com/other-marketplace.git,失败,消息包含 is blocked by enterprise policy 后跟允许的源。claude --plugin-dir ./x 以命名 disableSideloadFlags 的消息退出。 { "source": "skills-dir" } 条目在此允许列表下保持技能目录插件加载。删除该条目,它们停止加载。 使用显式 extraKnownMarketplaces 条目注册两个市场,如此策略所做的那样,而不是依赖允许列表或官方市场注册自己:
  • 允许列表不注册任何内容:extraKnownMarketplaces 条目注册,它本身必须通过允许列表。Claude Code 拒绝注册其源允许列表不匹配的托管市场。
  • 官方市场仅在交互式终端会话中注册自己:即使在那里,它也仅在允许列表允许时注册。-p 运行或附加到云会话的终端从不注册它。
  • 阻止的尝试被记住:如果机器曾在阻止官方市场的策略下运行,Claude Code 记录阻止的尝试,并在策略更改后不重试。[] 锁定是一个这样的策略。该机器仅通过 extraKnownMarketplaces 条目(例如此策略中的条目)、其一个插件的 enabledPlugins 条目或手动 /plugin marketplace add 再次注册它。

设置更新策略

您可以按市场、整个车队或通过发布频道按用户组设置更新策略。

按市场打开或关闭自动更新

插件自动更新在启动后在后台为打开它的市场运行。有关默认打开哪些市场,请参阅自动更新何时运行。要为车队决定,在托管 extraKnownMarketplaces 条目上设置 "autoUpdate": true 或 false:
  • 如果托管条目设置字段,Claude Code 拒绝用户的 /plugin 切换,错误以 Auto-update for '<name>' is set by 开头。
  • 如果托管条目保留字段未设置,用户的切换持续。

关闭整个车队的更新

要关闭每个市场的插件自动更新,在托管 env 块中设置 DISABLE_AUTOUPDATER,如此示例所做的那样。相同的变量也停止 Claude Code 自己的更新:
要停止 Claude Code 自己的更新但保持插件自动更新,将 "FORCE_AUTOUPDATE_PLUGINS": "1" 添加到相同的块。其他停止插件自动更新的环境变量以相同的方式工作。 DISABLE_AUTOUPDATER 不覆盖具有command 源的插件。Claude Code 每个会话重新运行每个启用的命令,并在其更改时安装输出。有关停止那些运行的内容,请参阅命令源何时重新运行。

为用户组分配发布频道

要运行稳定和早期访问频道,托管两个指向相同插件的不同 ref 的市场。然后通过单独的端点托管设置或网关策略为每个用户组提供自己的市场。来自管理控制台的服务器托管设置应用于组织中的每个用户,因此它们无法为不同的组分配不同的设置。
  • 将单独的端点托管设置(例如托管设置文件或 MDM 配置文件)部署到每个组的设备。要检查按组文件或配置文件是否在也有组织范围源的设备上应用,请参阅Claude Code 如何组合托管源。
  • 为每个组定义一个Claude 应用网关策略。网关应用第一个匹配规则适合用户的策略,因此订购策略以便每个用户到达其组的策略。该策略的 extraKnownMarketplaces 映射不与任何其他策略的合并,因此在其中列出组需要的每个市场,而不仅仅是其频道市场。
使用任一机制,稳定组接收此配置:
早期访问组接收 latest-tools 代替。要设置两个市场,请参阅运行发布频道。

推荐插件

市场所有者可以将 relevance 信号附加到条目,以便 Claude Code 在项目匹配时建议插件。 来自市场的建议仅在其在用户的机器上注册、您在托管设置中的 pluginSuggestionMarketplaces 中列出其名称,并且您在相同策略中声明其源时出现。声明源作为市场的 extraKnownMarketplaces 条目或允许列表条目。官方市场仅需要名称。请参阅在托管设置中启用建议。

审计和审查

OpenTelemetry 事件和 Analytics API 告诉您您的车队安装和运行什么。 有关插件可以在机器上运行什么以及每个信任层允许什么,在批准市场之前阅读插件安全。

OpenTelemetry 事件

claude_code.plugin_installed 记录每次安装,claude_code.plugin_loaded 记录每个启用的插件在会话开始时。除非您设置 OTEL_LOG_TOOL_DETAILS=1,否则两个事件都删除或省略第三方插件和市场名称,如您的后端中的删除插件名称所示。字段列表在插件已安装事件和插件已加载事件下。

Analytics API

在 Enterprise 计划上,GET /v1/organizations/analytics/plugins 返回跨 Claude Code 和 Cowork 的每个插件、每天的安装和调用计数。您可以按用户或 RBAC 组对计数进行分组。到达 Anthropic 而没有插件名称的插件活动出现在一个聚合 third-party 行中。请参阅端点参考和以编程方式访问数据了解它需要的键。

规划托管设置无法执行的内容

这些来自安全审查的请求在当前设置架构中没有专用键。最接近的现有控制是:
  • 按用户或按组目标:每个插件键应用于接收设置的每个用户。服务器托管设置为每个组织交付一个配置。对于按组策略,使用单独的端点托管设置或网关策略,如为用户组分配发布频道下所述。
  • 限制允许市场内的条目:允许列表匹配市场源。要从允许的市场阻止一个插件,在托管 enabledPlugins 中将其设置为 false。
  • 隐藏 /plugin:没有键禁用命令。最接近的等效项结合仅命名您的市场的允许列表、您提供的插件的托管 enabledPlugins 条目和 disableSideloadFlags。
  • 通过允许列表门控 --plugin-dir:允许列表不覆盖 --plugin-dir。disableSideloadFlags 覆盖。
  • 通过这些键执行 claude.ai 插件切换:组织设置 > 插件和技能不设置此页面上的键。成员和您的组织在那里打开的内容作为同步插件到达 CLI,它们有自己的控制。

策略故障排除

如果插件策略在机器上的行为不符合预期,首先检查这些症状:
  • 托管文件未解析:当 managed-settings.json 不是有效的 JSON 时,Claude Code 拒绝启动并打印命名文件的错误。解析但有一个无效条目的文件保持其策略的其余部分。请参阅托管设置中的无效条目。
  • 托管源未加载:运行 /status 并在 Setting sources 行中查找 Enterprise managed settings。如果缺少,源未加载。
  • 用户报告 blocked by enterprise policy:消息命名市场或其源。对于允许列表,它也列出允许的源。面向用户的条目在插件故障排除上。
  • 用户在 ~/.claude/settings.json 中禁用的插件仍然加载:另一个设置源重新启用它,例如强制启用它的托管 enabledPlugins 条目。/plugin 和 claude plugin list 显示 Disabled in ~/.claude/settings.json but still loads 与该设置源。

后续步骤