Ce face Permisiunile CLI: Shell, Read, Write, WebFetch, Mcp
Permisiunile se pun în obiectul permissions din ~/.cursor/cli-config.json (global) sau <project>/.cursor/cli.json (proiect). Fiecare intrare este un șir exact, în lista allow sau deny. Regulile deny au prioritate față de allow.
Shell(commandBase) se potrivește pe primul cuvânt al comenzii și acceptă sintaxa command:args, de exemplu Shell(curl:*). Read(...) și Write(...) acceptă căi și tipare glob (**, *, ?): căile relative se raportează la workspace, cele absolute pot ținti fișiere din afara proiectului.
WebFetch(domeniu) acceptă *, *.example.com (subdomenii) sau un domeniu exact; fără intrare în allowlist, fiecare fetch cere aprobare. Mcp(server:tool) folosește numele serverului din mcp.json și numele uneltei, cu * ca wildcard.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
Shell(commandBase) |
Comenzi shell, de exemplu Shell(git), Shell(curl:*). |
Read(pathOrGlob) |
Citirea fișierelor, de exemplu Read(src/**/*.ts). |
Write(pathOrGlob) |
Scrierea fișierelor, de exemplu Write(package.json). |
WebFetch(domainOrPattern) |
Domeniile permise pentru fetch, de exemplu WebFetch(*.github.com). |
Mcp(server:tool) |
Uneltele MCP, de exemplu Mcp(datadog:*) sau Mcp(*:search). |
Exemple practice
Exemplul 1: Allow și deny
{
"permissions": {
"allow": ["Shell(ls)", "Shell(git)", "Read(src/**/*.ts)", "WebFetch(docs.github.com)"],
"deny": ["Shell(rm)", "Read(.env*)", "Write(**/*.key)"]
}
}
Greșeli frecvente și bune practici
- Pui
WebFetch(*)sauMcp(*:*)înallowfără motiv. Documentația le marchează ca fiind de folosit cu prudență. - Te bazezi pe
allowca să permiți ceva interzis îndeny.denyare prioritate.