权限
通过 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 同时匹配命令及其参数