本指南介绍如何在组织内的开发者电脑上部署 Cursor 编辑器和 命令行界面 工具。大多数组织会同时部署编辑器 (用于日常开发) 和 命令行界面 (用于自动化、CI/CD 和脚本编写) 。
如需了解其他部署方式,例如 SCM 集成 (Bugbot、BGA 应用) 或网页端访问,请参阅相关集成文档。
通过 MDM 部署编辑器¶
将 Cursor 编辑器和智能体部署到用户工作站,并通过移动设备管理 (MDM) 系统实施策略。
工作原理¶
- IT 团队将 Cursor 应用打包以供部署
- 通过 MDM (Jamf、Intune 等) 推送至用户设备
- 用户可在其主要开发设备上使用 Cursor
MDM 可让您为 Cursor 强制执行策略,例如允许的团队 ID 和扩展。
您还可以强制执行 Workspace Trust 等设置,并控制自动更新和新版本的部署。
MDM 配置¶
您可以通过设备管理解决方案集中管理 Cursor 的特定功能,以确保满足组织需求。指定 Cursor 策略后,该策略的值会覆盖用户设备上对应的 Cursor 设置。
Cursor 支持在 Windows (组策略) 、macOS (配置描述文件) 和 Linux (JSON 策略文件,版本 2.0 及更高版本) 上使用策略。
Cursor 目前提供以下策略,用于控制由管理员管理的功能:
| 策略 | 描述 | Cursor 设置 |
|---|---|---|
| AllowedExtensions | 控制可安装哪些扩展。 | extensions.allowed |
| AllowedTeamId | 控制允许哪些团队 ID 登录。使用未经授权团队 ID 的用户将被强制登出。 | cursorAuth.allowedTeamId |
| ExtensionGalleryServiceUrl | 配置自定义扩展市场 URL。 | extensions.gallery.serviceUrl |
| NetworkDisableHttp2 | 禁用所有请求的 HTTP/2,改用 HTTP/1.1。 | cursor.general.disableHttp2 |
| UpdateMode | 控制自动更新行为。设为 ‘none’ 可禁用更新。 | update.mode |
| WorkspaceTrustEnabled | 控制是否启用 Workspace Trust。 | security.workspace.trust.enabled |
使用 MDM 管理运行模式允许列表¶
您还可以通过 MDM 部署 Cursor 的权限文件,管理哪些终端命令和 MCP 工具无需提示即可运行,并对 Auto-review 模式分类器进行引导。
文件路径为 ~/.cursor/permissions.json。用户还可以在 <workspace>/.cursor/permissions.json 中添加按仓库配置的文件;两个文件中的条目会按顺序合并。
文件格式如下:
| 键 | 类型 | 必填 | 含义 |
|---|---|---|---|
terminalAllowlist |
string[] |
否 | 无需批准即可运行的终端命令。启用沙箱后,不在允许列表中的受支持终端命令可在沙箱中运行。每个条目都会与完整命令字符串匹配。 |
mcpAllowlist |
string[] |
否 | 无需批准即可运行的 MCP 工具。MCP 工具不会在本地沙箱中运行。每个条目使用 server:tool 语法。 |
autoRun |
object |
否 | 使用自然语言 allow_instructions 和 block_instructions 数组引导 Auto-review 模式分类器。适用于 Cursor 3.6 及更高版本中的 shell、MCP 和 Fetch 调用。请参阅 permissions.json 参考。 |
mcpAllowlist 条目支持以下形式:
| 条目 | 含义 |
|---|---|
server:tool |
某个特定 MCP 服务器上的特定工具 |
server:* |
某个 MCP 服务器上的所有工具 |
*:tool |
任意 MCP 服务器上的指定工具名称 |
*:* |
所有 MCP 工具 |
terminalAllowlist、mcpAllowlist 和 autoRun 均为可选项。如果某个键被省略或为空 (合并按用户和按仓库文件后) ,Cursor 会回退到由编辑器管理的该类别允许列表。
示例:
{
"terminalAllowlist": [
"npm install",
"pnpm test",
"python -m pytest"
],
"mcpAllowlist": [
"linear:*",
"github:create_pull_request",
"*:search"
],
"autoRun": {
"block_instructions": [
"Block any command that drops or truncates a database table."
]
}
}
由于这是一个普通文件,你可以使用 Jamf、Kandji、Intune 或任何其他能将文件写入用户 Cursor 数据目录的设备管理工具进行分发。
允许列表优先级如下:
- 团队仪表盘或其他由管理员控制的设置
- 托管的
~/.cursor/permissions.json与<workspace>/.cursor/permissions.json拼接 - 编辑器设置和内联 添加到允许列表
由管理员控制的设置会覆盖该类别中由文件定义的值。按用户和按仓库的文件通过拼接合并;编辑器设置不会与这两者合并。
Cursor 会监视两个 permissions.json 路径,因此更新会自动生效,无需重新启动。
Windows 组策略¶
Cursor 支持基于 Windows 注册表的组策略。安装策略定义后,管理员可使用本地组策略编辑器管理策略值。
添加策略:
- 从
AppData\Local\Programs\cursor\policies复制策略 ADMX 和 ADML 文件。 - 将 ADMX 文件粘贴到
C:\Windows\PolicyDefinitions目录,并将 ADML 文件粘贴到C:\Windows\PolicyDefinitions\<your-locale>\目录。 - 重新启动本地组策略编辑器。
- 在本地组策略编辑器中设置相应的策略值 (例如,为
AllowedExtensions策略设置{"anysphere": true, "github": true}) 。
策略可在计算机级别和用户级别设置。若两者均已设置,则以计算机级别为准。
重要提示: 设置策略值后,将覆盖在任何级别 (默认值、用户、工作区等) 配置的 Cursor 设置值。这是一项全局覆盖,用户无法更改这些设置。
在 Cursor 2.1 中,我们将组策略编辑器中的类别名称更名为 Cursor。旧键仍然有效。建议使用当前的 ADMX 策略文件。
Windows 安装程序¶
Windows 安装程序基于 Inno Setup。如需在无需用户交互的情况下以完全后台方式安装 Cursor,请使用以下命令行标志:
全新安装:
CursorSetup-x64-2.0.exe /SILENT /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS /LOG=install.log
更新现有安装:
更新现有的 Cursor 安装时,必须使用不同的标志,其中包含指向标志文件的 /update 参数。标志文件是一个空文件,用于通知安装程序这是一次更新操作。
创建临时标志文件,并将其路径传递给安装程序:
CursorSetup-x64-2.0.exe /VERYSILENT /update="%TEMP%\cursor-update.flag" /CLOSEAPPLICATIONS /LOG=update.log
**注意:**2.0 之前的安装程序可能无法正确识别 /SILENT 标志。后续安装程序 (2.0 及更高版本) 将确保静默安装正常进行。
macOS 配置描述文件¶
配置描述文件用于管理 macOS 设备上的设置。配置描述文件是包含键值对的 XML 文件,这些键值对对应可用的策略。您可以通过 Jamf、Kandji 或 Microsoft Intune 等移动设备管理 (MDM) 解决方案部署这些配置描述文件,也可以手动安装。
各渠道的 Bundle ID:
配置描述文件中的 PayloadType 必须与您所用渠道的 Cursor Bundle ID 匹配:
| 渠道 | Bundle ID |
|---|---|
| 正式版 | com.todesktop.230313mzl4w4u92 |
| Nightly | co.anysphere.cursor.nightly |
对于大多数企业部署,请使用正式版 Bundle ID:com.todesktop.230313mzl4w4u92。
示例 .mobileconfig 文件¶
以下是一个适用于 macOS 的 .mobileconfig 文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadDisplayName</key>
<string>Cursor</string>
<key>PayloadIdentifier</key>
<string>com.todesktop.230313mzl4w4u92.J6B5723A-6539-4F31-8A4E-3CC96E51F48C</string>
<key>PayloadType</key>
<string>com.todesktop.230313mzl4w4u92</string>
<key>PayloadUUID</key>
<string>J6B5723A-6539-4F31-8A4E-3CC96E51F48C</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>AllowedExtensions</key>
<string>{"anysphere":true}</string>
<key>AllowedTeamId</key>
<string>1,2</string>
<key>ExtensionGalleryServiceUrl</key>
<string>https://marketplace.example.com</string>
<key>NetworkDisableHttp2</key>
<true/>
<key>UpdateMode</key>
<string>none</string>
<key>WorkspaceTrustEnabled</key>
<true/>
</dict>
</array>
<key>PayloadDescription</key>
<string>This profile manages Cursor.</string>
<key>PayloadDisplayName</key>
<string>Cursor</string>
<key>PayloadIdentifier</key>
<string>com.todesktop.230313mzl4w4u92</string>
<key>PayloadOrganization</key>
<string>Anysphere</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>F2C1A7B3-9D4E-4B2C-8E1F-7A6C5D4B3E2F</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>TargetDeviceType</key>
<integer>5</integer>
</dict>
</plist>
字符串策略¶
以下示例演示如何配置 AllowedExtensions 策略。示例文件中的策略值默认为空 (不允许任何扩展) 。
<key>AllowedExtensions</key>
<string></string>
在 <string> 标签之间添加定义策略所需的 JSON string。
<key>AllowedExtensions</key>
<string>{"anysphere": true, "github": true}</string>
扩展控制规则:
AllowedExtensions 策略接受一个 JSON 对象,其中:
- 键可以是发布者名称 (例如
"github") 或完整的扩展 ID (例如"ms-azuretools.vscode-docker") - 值为布尔值,表示是否允许来自该发布者的扩展或某个特定扩展
- 如果将发布者设为
true,则允许该发布者的所有扩展 - 特定扩展 ID 的优先级高于发布者规则
对于 AllowedTeamId 策略,请添加以逗号分隔的团队 ID 列表:
<key>AllowedTeamId</key>
<string>1,3,7</string>
对于 NetworkDisableHttp2 策略,使用布尔值禁用 HTTP/2:
<key>NetworkDisableHttp2</key>
<true/>
布尔策略¶
对于 WorkspaceTrustEnabled 等布尔策略,请使用 <true/> 或 <false/> 标记:
<key>WorkspaceTrustEnabled</key>
<false/>
或启用该功能:
<key>WorkspaceTrustEnabled</key>
<true/>
UpdateMode 策略¶
UpdateMode 策略用于控制 Cursor 如何处理自动更新。适用于希望控制更新部署时间和方式的组织。
可用值:
none- 禁用所有自动更新manual- 用户可以手动检查更新start- Cursor 启动时检查更新default- 默认行为 (与start相同)silentlyApplyOnQuit- 在后台下载更新,并在退出 Cursor 时应用更新
要禁用自动更新:
<key>UpdateMode</key>
<string>none</string>
WorkspaceTrustEnabled 策略¶
WorkspaceTrustEnabled 策略用于控制是否启用 Workspace Trust。启用后,Cursor 会提示用户为新工作区选择普通模式或受限模式。
使用布尔值:
<key>WorkspaceTrustEnabled</key>
<true/>
ExtensionGalleryServiceUrl 策略¶
ExtensionGalleryServiceUrl 策略用于配置扩展市场的 URL,适用于希望使用自定义扩展市场或镜像的组织。
将 URL 设置为 string 值:
<key>ExtensionGalleryServiceUrl</key>
<string>https://marketplace.example.com</string>
使用 MDM 解决方案部署¶
可将 .mobileconfig 文件直接上传到您的 MDM 解决方案:
- Jamf:作为自定义配置描述文件上传
- Kandji:在 Library 中添加为自定义配置文件
- Microsoft Intune:使用正确的负载域名部署为自定义配置文件
请确保 PayloadType 与 Cursor 渠道的 bundle ID 一致。
参考配置文件¶
Cursor 随附了一份完整的配置描述文件示例,路径如下:
# 正式版渠道
/Applications/Cursor.app/Contents/Resources/app/policies/com.todesktop.230313mzl4w4u92.mobileconfig
# Nightly 渠道
/Applications/Cursor Nightly.app/Contents/Resources/app/policies/co.anysphere.cursor.nightly.mobileconfig
文件路径因渠道而异。请根据您的 Cursor 安装渠道使用相应的路径。
重要安全注意事项:
- 提供的
.mobileconfig文件会初始化该版本 Cursor 中可用的所有策略 - 请删除不需要的策略,以免无意中采用过于严格的默认值
- 如果未编辑或从示例中删除某项策略,该策略将按其默认值强制执行
- 策略值会全局覆盖所有用户和工作区设置
在 Finder 中双击 .mobileconfig 描述文件,然后在“系统偏好设置”的 通用 > 设备管理中启用它,即可手动安装配置描述文件。从“系统偏好设置”中移除该描述文件后,Cursor 中的相关策略也会被移除。
有关配置描述文件的更多信息,请参阅 Apple 的文档。
Linux 策略文件¶
与 Windows 注册表或 macOS 配置描述文件不同,Linux 发行版没有标准化的企业策略系统。Cursor 通过读取 JSON 文件来提供相应功能。
**注意:**Linux 策略文件支持 Cursor 2.0 及更高版本。
策略文件位于 ~/.cursor/policy.json。
创建策略文件¶
在上述位置创建一个 JSON 文件,以策略名称为键、策略值为值。所有策略均为可选项;仅包含您想强制执行的策略。
policy.json 文件示例¶
{
"AllowedExtensions": "{\"anysphere\": true, \"github\": true}",
"AllowedTeamId": "1,3,7",
"WorkspaceTrustEnabled": true
}
策略格式¶
JSON 文件中的每项策略均对应一个策略名称:
- AllowedExtensions:定义允许的扩展发布者的 JSON string
"AllowedExtensions": "{\"anysphere\": true, \"github\": true}"
- AllowedTeamId:以逗号分隔的团队 ID string
"AllowedTeamId": "1,3,7"
- WorkspaceTrustEnabled:用于控制工作区信任的 布尔
"WorkspaceTrustEnabled": true
注意:AllowedExtensions 的值必须是 JSON string (引号需转义) ,而不是 JSON 对象。这与 Windows 和 macOS 使用的格式一致。
部署策略¶
使用组织的配置管理工具部署策略文件:
- 使用 Ansible、Puppet 或 Chef 自动部署
- 使用 NFS 或共享网络存储集中存放策略文件
- 使用带有安装后脚本的包管理器
- 在容器化环境中使用容器基础镜像
策略文件的更改会在 Cursor 重启时生效。系统会监控文件更改,因此更新会自动传播到正在运行的实例。
如果策略文件不存在,Cursor 将不受策略限制地运行。
非管理员用户的自动更新¶
受 Electron 框架限制,Cursor 在 macOS 上更新时需要管理员权限。
推荐做法:
- MDM 部署:使用 MDM 工具 (Jamf、Kandji、Intune) 以适当权限集中部署更新
- 自动化部署工具:考虑使用 Installomator 等工具,通过脚本更新
- 禁用更新提示:将
UpdateMode策略设为none,避免用户看到更新失败的通知
对于包含非管理员用户的组织,最可靠的做法是通过现有的软件部署流程管理 Cursor 更新,并通过 MDM 策略禁用自动更新。
命令行界面 部署¶
在您的基础设施上以无图形界面的 命令行界面 工具运行 Cursor agents。
工作方式¶
- 将 命令行界面 部署到您的环境中 (本地、企业云、Kubernetes 集群、CI/CD 系统)
- 可通过脚本运行 命令行界面,也可让其在后台或作为 CI 的一部分运行
- 命令行界面 可访问用户从其设备可访问的任何资源 (VPN、内部 API、私有包注册表等)
安装与设置¶
安装 Cursor 命令行界面:
# 安装 Cursor 命令行界面(macOS、Linux、WSL)
curl https://cursor.com/install -fsS | bash
# 安装 Cursor 命令行界面(Windows PowerShell)
irm 'https://cursor.com/install?win32=true' | iex
# 为脚本设置 API 密钥
export CURSOR_API_KEY=your_api_key_here
agent -p "Analyze this code"
完整详情请参阅 命令行界面 无图形界面模式文档。
GitHub Actions 集成¶
Cursor 命令行界面可在 GitHub Actions 和其他 CI 系统中使用。
有关示例,请参阅 GitHub Actions 集成。
Cursor 命令行界面注意事项¶
无论是在桌面端应用中运行,还是作为独立 命令行界面 运行,Cursor agents 都具备相同的安全控制:
功能相同:
- 隐私模式同样适用
- 钩子同时适用于桌面端应用和 命令行界面
- 相同的模型访问控制
- 相同的审计日志记录
- 相同的用量跟踪
要求相同:
- 两者都需要访问 Cursor 服务的网络连接
- 两者都会将代码发送给 LLM (受隐私模式保护)
- 两者都需要进行适当的身份验证
命令行界面 使用的是同一个智能体,只是界面不同。
网络注意事项¶
用户设备需要访问以下端点。请相应配置防火墙和代理规则:
*.cursor.sh- 后端服务和 API 端点cursor-cdn.com- 应用下载和更新marketplace.cursorapi.com- 扩展市场- 第三方 AI 提供商的端点 (OpenAI、Anthropic、Google 等)
当 UpdateMode 策略设为 none 时,可以限制对更新端点的访问,同时保留对其他服务的访问权限。
Cursor 编辑器会继承设备的网络配置,包括 VPN 访问、内部服务端点和私有包注册表。
这意味着,在编辑器中运行的 agents 可以访问用户通过其设备能够访问的所有资源。
有关防火墙和代理的详细要求,请参阅网络配置。
最低版本¶
Cursor 设定了两个最低版本门槛:
- 最低支持版本:使用较早版本的用户会看到可关闭的警告,提示其升级。
- 最低允许版本:使用较早版本的用户会看到无法关闭的错误,且必须升级。这意味着该发布系列已结束生命周期。
通常,某个发布版本会在其 GA 日期约 2 个月后具备成为最低支持版本的资格,并在约 3 个月后具备成为最低允许版本的资格。版本门槛的提升还取决于较新版本的采用率。
您可以结合这些说明以及我们发布的 GA 日期和变更日志日期,估算某个发布版本何时会不再适用。
在为组织管理 Cursor 部署时,我们建议定期更新 Cursor (例如通过 MDM) ,以确保用户始终使用受支持的版本。
疑难排查¶
常见问题¶
Cursor 是否支持 Linux 策略?¶
支持,从 2.0 版本起,Linux 使用基于文件的策略系统,策略文件位于 ~/.cursor/policy.json。有关格式和部署的详细信息,请参阅上方的“Linux 策略文件”部分。
可以在策略文件中使用环境变量吗?¶
不可以。策略文件必须是包含静态值的有效 JSON 文件。如有需要,请使用配置管理工具动态生成该文件。
如果策略文件中的 JSON 无效,会发生什么?¶
Cursor 会记录错误,并在不受策略限制的情况下运行。请查看主进程日志,了解解析错误。
如何查找我的团队 ID?¶
您可以在 https://cursor.com/dashboard 点击团队名称,查看团队 ID。
需要帮助大规模部署 Cursor?¶
联系我们的团队,获取 MDM 部署指导和优先支持。