部署托管设置
把托管设置部署到每台开发者的机器:写 managed-settings.json、四种交付机制、多个来源如何合并、验证策略是否生效。
托管设置是你的组织部署到每台开发者机器上的设置。Claude Code 把它们应用在所有其他层级之上,所以没有用户、项目、本地或 --settings 的值能覆盖它们(少数安全敏感的例外除外)。本页面向部署托管设置、或排查某个设置为什么没生效的管理员。
部署一个托管设置文件
最快把策略放到每台机器上的办法是一个 managed-settings.json 文件:
-
写一个包含你决定强制的键的
managed-settings.json,JSON 结构和settings.json相同:{ "permissions": { "deny": [ "Read(./.env)", "Read(./secrets/**)" ], "disableBypassPermissionsMode": "disable" }, "allowManagedPermissionRulesOnly": true } -
用你已有的、往设备群上放文件的工具,把它保存为对应操作系统系统目录里的
managed-settings.json:macOS 是/Library/Application Support/ClaudeCode/managed-settings.json;Linux 和 WSL 是/etc/claude-code/managed-settings.json;Windows 是C:\Program Files\ClaudeCode\managed-settings.json -
在一台机器上,在 Claude Code 里运行
/status,Setting sources一行应显示Enterprise managed settings (file);确认后再推广到整个设备群
选择交付机制
上面的文件只是把托管设置送到机器上的四种方式之一。每种机制携带和 settings.json 相同的策略键:
| 机制 | 怎么交付 | Claude Code 何时读取 | 适用 |
|---|---|---|---|
| 服务端托管设置 | 在 claude.ai 管理控制台,或自托管的 Claude apps gateway | 启动时获取,之后每小时轮询 | 想要不用部署端点基础设施的集中管理 |
| MDM 或操作系统级策略 | macOS 配置描述文件,或 Windows 的 HKLM 注册表值,通过 Jamf、Intune、组策略等工具 | 启动时读取,文件变化时重新加载 | 设备已由 MDM 管理 |
| 基于文件 | 每台机器系统目录里的 managed-settings.json | 启动时读取,文件变化时重新加载 | 没有 MDM 的机器 |
| HKCU 注册表(Windows 和 WSL) | Windows 的 HKCU 注册表值 | 启动时读取,每 30 分钟检查变化 | 最低优先级的兜底 |
同一台机器上有多个机制都交付了策略时,Claude Code 默认只用其中一个,忽略其他。MDM 和文件两行合称端点托管设置,因为策略存储在开发者设备上,而服务端托管则是 Claude Code 去获取。Jamf、Iru、Intune 和组策略的起步模板见官方 MDM 示例仓库。
策略在哪里、何时生效:开发者机器上的终端、VS Code 和 JetBrains 扩展、桌面应用的 Code 标签页和 Agent SDK 会话都读取这些来源。Anthropic 托管环境里的云端会话不读取设备的 MDM 描述文件或文件,所以它的策略必须来自服务端托管设置。运行中的会话里,多数变化按上表的节奏到达,无需重启;少数设置(如 requiredMinimumVersion 和 forceRemoteSettingsRefresh)的变化要到下次启动才生效。
用目录拆分基于文件的策略:几个团队各管策略的一部分时,把各部分放进 managed-settings.d/ 目录里各自的文件,而不是编辑一个共享文件。Claude Code 先合并 managed-settings.json,再按字母顺序合并该目录里的每个 *.json 文件,所以用数字前缀控制顺序(如 10-telemetry.json、20-security.json)。两个文件设置同一个键时:单值(如 "model": "opus")后面的文件替换前面的;数组之类按官方规则合并。
验证与限制
用 /status 检查策略是否生效,Setting sources 一行列出实际加载的来源。官方原文还涵盖多个托管来源如何合并的完整顺序、只有托管来源才能设置的键、为组织关闭遥测,以及托管 MCP 配置。