Skip to content
FunCoding

Search

Search docs, Skills and MCP

CLI 权限规则

按 Shell、Read、Write、WebFetch 与 Mcp 配置允许和拒绝项,并理解匹配范围。

This page has not been translated into English yet. The original Chinese version is shown below.

CLI 权限可以写在全局 ~/.cursor/cli-config.json,或项目 .cursor/cli.json 的 permissions 对象里。先确定任务需要的操作,再设置允许项和明确拒绝项。

令牌格式

类型示例实际范围
ShellShell(git)git 命令及其所有子命令
ShellShell(curl:*)curl 与参数的 glob 匹配
ReadRead(src/**/*.ts)工作区 src 中的 TypeScript 文件
WriteWrite(docs/**)工作区 docs 下的写入
WebFetchWebFetch(docs.github.com)该精确域名
McpMcp(datadog:*)mcp.json 中 datadog 服务器的全部工具

Shell 的 commandBase 是命令行第一个 token。不要把 Shell(git) 当作仅允许 git status;需要限制其他 Git 操作时应重新评估规则范围。

项目示例

下面允许读取 Markdown、写文档和运行 ls,拒绝 Git 操作、读取环境文件及写密钥文件:

{
  "permissions": {
    "allow": ["Shell(ls)", "Read(**/*.md)", "Write(docs/**)"],
    "deny": ["Shell(git)", "Read(**/.env*)", "Write(**/*.key)"]
  }
}

全局文件还需包含 version、editor 等字段,见配置文件。

匹配与优先级

  • deny 优先于 allow;--force 也不覆盖显式 deny。
  • 路径 glob 支持 **、*、?;相对路径以工作区为范围,绝对路径可指向工作区之外。
  • WebFetch() 匹配所有域;WebFetch(.example.com) 匹配子域;WebFetch(example.com) 只匹配该域。
  • Mcp(:search) 匹配各服务器的 search 工具;Mcp(:*) 的范围是所有 MCP 工具。

没有对应 WebFetch allow 条目时,网络获取会请求批准。打印模式能够使用写入和 shell 工具,不能把 -p 当作访问控制;应结合权限、运行模式和沙箱设置。