通過 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 同時匹配命令及其參數