企业治理对照:Claude Code 与 Cursor 的管理员能锁住哪些设置
给一支已经混着用了两三个 AI 编码工具的团队铺企业策略,最先要回答的不是「哪个功能多」,而是三个很土的问题:策略从哪儿到开发者的机器上、开发者能不能自己改回去、策略拿不到的时候是拒绝启动还是照常放行。这三问的答案在两家文档里写得都挺细,但边界划的位置不一样。下面只对照两边都白纸黑字写明的部分,一方查不到就直说不比。
第一岔路:策略走哪条路到机器上
Claude Code 官方文档 code.claude.com/docs/en/admin-setup 里有一张下发通道表,按优先级从高到低列了四类来源:服务端下发(claude.ai 管理控制台,或自托管的 Claude apps gateway)、plist / 注册表策略、文件式 managed settings、以及 Windows 用户注册表。这四类的平台覆盖不一样,Windows 侧的落点是:
- 高优先级那条是
HKLM\SOFTWARE\Policies\ClaudeCode - 文件式的路径是
C:\Program Files\ClaudeCode\managed-settings.json - 最低优先级那条是
HKCU\SOFTWARE\Policies\ClaudeCode
文档对 HKCU 的措辞很值得抄下来:plist 与 HKLM 位置「需要管理员权限才能写入」因而能抵抗篡改,而 HKCU 无需提权即可写,所以文档明说把它当作一个便利的默认值来源,而不是强制通道。这句话决定了你在 Windows 上该往哪儿放策略——放错一层,策略等于没锁。
Linux 与 macOS 侧分别是 /etc/claude-code/managed-settings.json 与 /Library/Application Support/ClaudeCode/managed-settings.json。WSL 是单独一条:文档写明 WSL 默认只读 Linux 那条路径,要让 Windows 注册表与 C:\Program Files\ClaudeCode 的策略延伸进同一台机器的 WSL,需要在这两个仅管理员可写的 Windows 来源里设 wslInheritsWindowsSettings: true。
Cursor 这边,官方文档 cursor.com/docs/enterprise/admin-setup-guide 给的是一份行动清单而不是通道优先级表:部署时配置 MDM 策略、通过 MDM 配置 AllowedTeamIDs 以限制公司设备上使用个人 Cursor 账号、用 Dashboard 监控用量与设置告警。具体到某一类控制项,cursor.com/docs/enterprise/model-and-integration-management 写明了两条并行的路:团队看板(Team Settings、MCP Configuration、Repository Blocklist 等,这几处均标注 Enterprise only)与通过 MDM 分发的 ~/.cursor/permissions.json。
这个差异什么时候咬到你:如果你的设备根本没进 MDM,Claude Code 侧还有一条服务端下发可走——文档写明这些设置在认证时到达、活动会话中每小时刷新一次;经 claude.ai 管理控制台下发需要 Claude for Teams 或 Enterprise 计划,部署在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的组织,文档写明可以自托管一份 Claude apps gateway 拿到同等的远端下发。Cursor 侧同样有不依赖端点管理的管理端通道,就是上面提到的团队看板那几处开关;但具体到「把 permissions.json 这类文件下发到设备」,我们在这两页文档里没有找到不走 MDM 的对应说明,这一点不比。
第二岔路:多个来源打架时,是合并还是替换
这是最容易踩空的地方,两家的默认方向不一样,各自内部也不统一。
Claude Code 侧,admin-setup 页写明:数组型设置如 permissions.allow 与 permissions.deny 会把各来源的条目合并,所以开发者能往管理员的清单里加,但删不掉;而 fallbackModel 与 availableModels 是替换而非合并。管理层内部又是另一套规则,code.claude.com/docs/en/server-managed-settings 写明:服务端下发与端点下发同处最高层,先查服务端,只要它交付了任何键,端点侧就整体被忽略;两类例外是跨来源锁键(如 sandbox 允许列表的锁)与 env 块——后者在管理员可控来源之间逐键合并,高优先级来源定义的变量胜出,低优先级来源填补它没设的变量,文档标明这需要 Claude Code v2.1.223 或更新版本。还有一条压过所有:配置了 policyHelper 时,它的输出成为该次运行唯一的管理配置。
Cursor 侧的方向正好反过来。model-and-integration-management 写明团队与 Organization Group 的模型访问按**最宽松(并集)**调和:团队或用户所属任一 Group 允许即允许,Group 不能把某个模型压得比另一个放行来源更严,文档因此建议把最严的默认放在团队层、只用 Group 给特定人群加权限。但同一页里 MCP 允许列表的规则又是替换:解析顺序是团队看板等管理员控制的设置、~/.cursor/permissions.json、编辑器设置里的 MCP 允许列表与就地「Add to allowlist」,共三层,文档明说高优先级来源替换低优先级来源、不合并。
决策上的落点:如果你的策略意图是「兜底最低标准,允许各团队自行加严」,Claude Code 的权限数组合并方向是顺着你的;如果意图是「总部定死一套,任何下层都不得偏离」,那你要盯的是替换语义那几个键,而不是合并的那些。Cursor 侧模型访问这一层,文档已经把话说死了——Group 只能放宽,收紧要回到团队层做。
第三岔路:到底能锁住哪些项
只列两边都有依据的维度。
| 维度 | Claude Code 文档写明 | Cursor 文档写明 |
|---|---|---|
| 模型可选范围 | availableModels 过滤选择器里出现的模型,加上 enforceAvailableModels 还会约束自动选择的默认模型 | 团队看板 Team Settings → Models 设团队基线,Organization Groups 可为特定人群加宽,也可走 Admin API 的 model access 路由 |
| 自带密钥 | 文档写明设置登录方式限制后,用 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN 或 apiKeyHelper 认证的会话在启动时被阻止(forceLoginMethod、forceLoginOrgUUID) | Enterprise 团队可禁止成员使用自己的第三方 API 密钥,即 BYOK 控制,配置在 Team Settings → Models |
| MCP 服务器 | allowedMcpServers、deniedMcpServers、allowManagedMcpServersOnly,或部署一份 managed-mcp.json 文件 | 团队看板 MCP Configuration 里按 command 或 URL 逐条批准,~/.cursor/permissions.json 里的 mcpAllowlist 用 server:tool 语法,支持 server:*、*:tool、*:* |
| 工具与命令粒度 | permissions.allow、permissions.deny 允许 / 询问 / 拒绝到具体工具与命令 | 每台批准的服务器有自己的 Tools 字段,留空即放行该服务器全部工具 |
| 网络出口 | sandbox.enabled、sandbox.network.allowedDomains,操作系统层的文件系统与网络隔离加域名允许列表 | 本地 stdio 服务器在 sandbox 中运行,网络模式四档:Allow all、Allowlist、Deny all、No sandbox;远程 URL 服务器被限制在配置的 URL 模式内 |
| 版本下限 | minimumVersion 阻止自动更新降到组织下限以下,requiredMinimumVersion 与 requiredMaximumVersion 更强,运行版本超出批准区间时直接拒绝启动 | 我们在这两页文档里没有找到对应说明,不比 |
| 仓库范围 | 我们在本文引用的这几页里没有找到「按仓库封禁」的对应设置键,不比 | Repository Blocklist 可按仓库 URL 或模式阻止索引与使用;Protected Git Scopes 把 Git 组织 / 命名空间锁到你的 Cursor 组织 |
admin-setup 页里还有一条提醒跟上表第五行直接相关:拒绝 WebFetch 只是挡住了 Claude 自己的抓取工具,如果 Bash 是放行的,curl 和 wget 照样能访问任意 URL,要堵这个口子得靠 sandbox 的域名允许列表在操作系统层拦。Cursor 侧有一条同类的连带关系:model-and-integration-management 写明 Auto-review 依赖一个跑在特定后台分类器模型上的机制,把这些模型全部禁掉会连带在 IDE 里关掉 Auto-review,即使团队的 run mode 里启用了它。锁一个控制项时顺手关掉了另一个功能,这种耦合两边都有,翻文档时值得专门找一遍。
第四岔路:策略拿不到的时候
Claude Code 文档在这里写得相当直白,值得原样抄一段结论:服务端下发的设置「是客户端侧的控制,不是安全边界」,在未纳管的设备上,用户不需要管理员或 sudo 权限就能绕过。文档同时列了首次启动无缓存时的行为——设置异步拉取,拉取失败则继续运行而不带管理配置,存在一个短暂的未强制窗口。要消掉这个窗口,文档给的键是:
{
"forceRemoteSettingsRefresh": true
}
(原样抄自 code.claude.com/docs/en/server-managed-settings。)文档写明该键生效时,CLI 会在启动时阻塞直到成功拉取到新设置,失败则退出而不是继续;同时提醒启用前要确保网络策略允许连通 api.anthropic.com,否则用户将无法启动。claude auth 系列子命令是这项检查的例外,好让凭据过期的用户还能重新认证。文档还标明自 v2.1.191 起,这个键是优先级规则的例外,任一管理员可控来源设置了它都会被采纳。
同一页的另一段管理员示例也可以直接拿去改:
{
"permissions": {
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
],
"disableBypassPermissionsMode": "disable"
},
"allowManagedPermissionRulesOnly": true
}
(同样原样抄自该页,未做任何改写。)另外文档提醒:因为 hooks 会执行 shell 命令,涉及它的下发会触发面向用户的安全审批对话框;需要审批的类别共四类——执行 shell 命令的设置、需要用户批准的 env 变量、任何 hook 定义、通过管理设置下发的 claudeMd 内容。用户拒绝则 Claude Code 退出。
Cursor 侧,我们在本文引用的两页里没有找到「策略拉取失败时是拒绝启动还是放行」的对应说明,这一点不比。这两页里能核到的相邻事实只有两条:允许列表生效时,不匹配任何条目的 MCP 服务器会被阻止运行;以及把服务器加进允许列表不会把它推到用户机器上,成员仍需自行配置,要分发得走团队 marketplace。
第五岔路:能不能按人群分层
Claude Code 的服务端下发在这一点上有明确的当前限制,文档原文列在「Current limitations」里:设置对组织内所有用户统一生效,尚不支持按组配置;managed-mcp.json 文件不能通过服务端下发分发,改用 allowedMcpServers 与 deniedMcpServers 策略键;受限于操作系统级策略来源的键(如 policyHelper 与 wslInheritsWindowsSettings)不被服务端下发采纳。也就是说,要分层就得回到 MDM / 注册表 / 文件通道自己按设备分发。
Cursor 侧有 Organization Groups 这一层,但如上文所述方向是单向的:只能放宽,不能收紧。两边在「分层」上的边界因此完全不同——一边是暂时没有,另一边是有但只朝一个方向使。
配完怎么确认它真的生效了
Claude Code 文档给了可执行的验证动作:在会话里运行 /status,Status 标签页的 Setting sources 行会显示 Enterprise managed settings 加上括号里的来源,取值是 (remote)、(plist)、(HKLM)、(HKCU)、(file) 之一;WSL 会话里同样跑 /status,应看到 Windows 来源 (HKLM) 或 (file)。要看权限规则实际生效成什么样跑 /permissions;排查下发问题用 claude --debug-file <path> 并在日志里搜 Remote settings;灰度前先在测试机上用 claude doctor 验证载荷。
以上命令均为官方文档中原样写明的用法,我们没有做过实测,请以官方文档与 --help 的实际输出为准。两个产品迭代都很频繁,文中涉及的设置键、默认值与限制随版本变动,以各自官方文档最新内容为准。
Cursor 侧,我们在本文引用的这两页里没有找到等价的「管理员如何在客户端验证策略已生效」的命令或步骤说明,这一点不比。
落到选型上
如果你的约束是「设备大多没进 MDM」,那要看的是有没有不依赖端点管理的下发通道;如果约束是「必须按团队分层」,Claude Code 服务端下发这条路当前明说不支持按组,得走端点通道,Cursor 的 Group 只能放宽;如果约束是「运行版本必须卡在批准区间内」,Claude Code 有对应设置键,Cursor 这一点我们没有依据;如果约束是「按仓库封禁」,情况正好相反。剩下的模型范围、BYOK、MCP、网络出口这四项两边都有明确写法,差别在配置放在哪一层、以及合并方向朝哪边——那才是真正会在半年后咬到你的地方。
本文依据 Claude Code 官方文档(code.claude.com/docs)于 2026-08-17 的公开内容整理。
该产品闭源,本文只复述官方文档写明的机制,不推断其内部实现;
我们没有对文中涉及的功能做过实测,因此不涉及界面外观、操作手感与运行速度的任何描述。
该产品迭代频繁,文中涉及的命令、配置项与默认值随版本变动,请以官方文档最新内容为准。
本文不涉及价格、额度与限流的具体数值,相关信息请以官方定价与用量说明页为准。
本文涉及的另一方内容依据其官方文档整理(Cursor:cursor.com/docs)。
双方均为闭源商业产品,本文只对照各方公开写明的机制,不推断实现,也不对产品做优劣排名。
安全与合规相关做法请结合自身环境评估,本文不构成安全方案建议。
合规与许可条款请以官方原文与你所在组织的要求为准,本文不构成法律意见。