通过 CLI 配置中的权限 token 控制智能体可执行的操作。权限可在 ~/.cursor/cli-config.json (全局) 或 <project>/.cursor/cli.json (项目专用) 中设置。
权限类型¶
Shell 命令¶
格式: Shell(commandBase)
用于控制对 Shell 命令的访问。commandBase 是命令行中的第一个词元。支持 glob 模式,并可使用可选的 command:args 语法进行更精细的控制。
| 示例 | 描述 |
|---|---|
Shell(ls) |
允许运行 ls 命令 |
Shell(git) |
允许任何 git 子命令 |
Shell(npm) |
允许 npm 包管理器命令 |
Shell(curl:*) |
允许 curl 使用任意参数 |
Shell(rm) |
拒绝执行破坏性的文件删除操作 (通常用于 deny) |
文件读取¶
格式: Read(pathOrGlob)
控制对文件和目录的读取权限。支持 glob 模式。
| 示例 | 描述 |
|---|---|
Read(src/**/*.ts) |
允许读取 src 中的 TypeScript 文件 |
Read(**/*.md) |
允许读取任意位置的 markdown 文件 |
Read(.env*) |
禁止读取环境文件 |
Read(/etc/passwd) |
禁止读取系统文件 |
文件写入¶
格式: Write(pathOrGlob)
控制对文件和目录的写入权限。支持 glob 模式。print 模式可使用写入和 shell 工具。使用 permissions.allow、permissions.deny 和 --force 控制哪些操作可在无需提示的情况下运行。
| 示例 | 描述 |
|---|---|
Write(src/**) |
允许写入 src 下的任意文件 |
Write(package.json) |
允许修改 package.json |
Write(**/*.key) |
拒绝写入私钥文件 |
Write(**/.env*) |
拒绝写入环境文件 |
网页抓取¶
格式: WebFetch(domainOrPattern)
控制智能体使用网页抓取工具时可抓取的域名 (例如,用于获取文档或网页) 。如果没有相应的允许列表条目,每次抓取都需要批准。将域名添加到 allow,即可自动批准从可信来源进行的抓取。
| 示例 | 描述 |
|---|---|
WebFetch(docs.github.com) |
允许抓取 docs.github.com 的内容 |
WebFetch(*.example.com) |
允许抓取 example.com 的任意子域名内容 |
WebFetch(*) |
允许抓取任意域名的内容 (请谨慎使用) |
域名模式匹配:
*匹配所有域名*.example.com匹配子域名 (例如,docs.example.com、api.example.com)example.com仅匹配该域名
MCP 工具¶
格式: Mcp(server:tool)
用于控制智能体可运行的 MCP (模型上下文协议) 工具。使用 server (来自 mcp.json) 和 tool 名称,* 可用作通配符。
| 示例 | 描述 |
|---|---|
Mcp(datadog:*) |
允许使用 Datadog MCP 服务器提供的所有工具 |
Mcp(*:search) |
允许使用任意服务器的 search 工具 |
Mcp(*:*) |
允许使用所有 MCP 工具 (请谨慎使用) |
配置¶
在 CLI 配置文件的 permissions 对象中添加权限:
{
"permissions": {
"allow": [
"Shell(ls)",
"Shell(git)",
"Read(src/**/*.ts)",
"Write(package.json)",
"WebFetch(docs.github.com)",
"WebFetch(*.github.com)",
"Mcp(datadog:*)"
],
"deny": [
"Shell(rm)",
"Read(.env*)",
"Write(**/*.key)",
"WebFetch(malicious-site.com)"
]
}
}
模式匹配¶
- Glob 模式使用
**、*和?通配符 - 相对路径以当前工作区为范围
- 绝对路径可指向项目外的文件
- 拒绝规则优先于允许规则
- 使用
command:args(例如curl:*) 通过 glob 同时匹配命令及其参数