Skip to main content

Command Palette

Search for a command to run...

Comenzar

Referencia de permissions.json

Usa permissions.json para configurar listas de permitidos de herramientas MCP y comandos de terminal, y orientar el clasificador del modo Auto-review para que las herramientas se ejecuten sin aprobación.

Cuando permissions.json define una lista de permitidos, anula la lista de permitidos correspondiente de la app en Cursor Settings. El editor de listas de permitidos de la app pasa a ser de solo lectura para ese tipo de lista.

Ubicación del archivo

Cursor lee permissions.json desde dos ubicaciones:

~/.cursor/permissions.json              # por usuario (se aplica en todas partes)<workspace>/.cursor/permissions.json    # por repositorio (se aplica en este espacio de trabajo)

Ambos archivos son opcionales. Cuando existen ambos, Cursor concatena los arrays de cada campo. Las entradas por usuario y por repositorio se combinan; una no sustituye a la otra. Confirma el archivo por repositorio para que los miembros del equipo hereden las mismas reglas.

Los archivos se leen al iniciar y se vuelven a leer automáticamente cada vez que cambian. Se admite JSONC (JSON con comentarios).

Campos de nivel superior

Todos los campos son opcionales. Las claves desconocidas se ignoran.

CampoTipoPredeterminadoDescripción
mcpAllowliststring[]no establecidoHerramientas MCP que pueden ejecutarse sin aprobación. Cuando se establece, reemplaza la lista de permitidos de MCP de la app.
terminalAllowliststring[]no establecidoComandos de terminal que pueden ejecutarse sin aprobación. Cuando se establece, reemplaza la lista de permitidos del terminal de la app.
autoRunobjectno establecidoInstrucciones en lenguaje natural para el clasificador del modo Auto-review. Consulta la configuración de autoRun.

Las entradas que no son cadenas de cualquiera de los arrays se descartan silenciosamente.

Prioridad

Las listas de permitidos provienen de tres fuentes, evaluadas en estricto orden de prioridad:

administrador de equipo (panel de control)  >  permissions.json (por usuario ∪ por repo)  >  UI de ajustes del IDE                (máxima)                                                                          (mínima)
  • Controles del administrador de equipo. Si el administrador de tu equipo ha configurado controles del Modo de ejecución desde el panel de control, se aplican esos ajustes. Ni permissions.json ni la lista de permitidos del IDE pueden añadir entradas adicionales.
  • permissions.json. Cuando el Modo de ejecución no está controlado por el administrador y permissions.json define una clave, el valor de esa clave reemplaza por completo la lista de permitidos correspondiente del IDE. Los arrays de ~/.cursor/permissions.json y <workspace>/.cursor/permissions.json se concatenan antes de aplicarse. El editor de la app de esa lista de permitidos pasa a ser de solo lectura y se oculta el botón "Añadir a la lista de permitidos".
  • Ajustes del IDE. Cuando el Modo de ejecución no está controlado por el administrador y ninguno de los archivos de permisos define una clave determinada, se usa la lista de permitidos del IDE de Cursor Settings.

MCP, el terminal y autoRun son independientes. Puedes definir uno en permissions.json y gestionar los demás en el IDE. Definir solo mcpAllowlist en el archivo reemplaza la lista de permitidos de MCP, pero deja la lista de permitidos del terminal bajo el control del IDE.

Cómo se muestra en Cursor Settings

Cuando permissions.json define una lista de permitidos, Cursor Settings indican que esta se configura mediante permissions.json.

  • Si la lista de permitidos está controlada por permissions.json, el Editor es de solo lectura y muestra las entradas definidas en el archivo. La opción "Añadir a la lista de permitidos" no está disponible para este tipo de lista de permitidos.
  • Si la lista de permitidos está controlada por el administrador, el Editor es de solo lectura y muestra las entradas definidas por el administrador.

Formato de la lista de permitidos de MCP

Cada entrada es una cadena con el formato server:tool. No se distingue entre mayúsculas y minúsculas en ninguna de las dos partes. El comodín * coincide con cualquier valor en esa parte.

PatrónCoincide con
my-server:my_toolExactamente la herramienta my_tool del servidor llamado my-server
my-server:*Todas las herramientas de my-server
*:my_toolLa herramienta my_tool de cualquier servidor
*:*Todas las herramientas de todos los servidores

El nombre del servidor es la clave que usaste en mcp.json (p. ej., "github", "linear"). Los patrones * de estilo glob también funcionan dentro de los nombres (p. ej., my-server:list_* coincide con list_issues, list_users, etc.).

Las entradas que no contienen : se ignoran.

Configuración de autoRun

El objeto autoRun orienta al clasificador LLM que controla las llamadas a herramientas de shell, MCP y Fetch cuando el modo Auto-review está activo. No tiene efecto en lista de permitidos ni en Ejecutar todo.

CampoTipoDescripción
allow_instructionsstring[]Indicaciones en lenguaje natural que describen patrones de llamadas que el clasificador debería tender a permitir.
block_instructionsstring[]Indicaciones en lenguaje natural que describen patrones de llamadas que el clasificador debería tender a bloquear y, en su lugar, solicitar aprobación.

Cada entrada es una frase de formato libre. Escribe la instrucción como le indicarías a un compañero qué debe tener en cuenta. Las llamadas que coincidan con una entrada de allow_instructions siguen pasando por la comprobación de seguridad; las que coincidan con una entrada de block_instructions pueden aprobarse si Cursor lo exige. Considera ambas como orientación, no como aplicación obligatoria.

Las entradas por usuario y por repositorio se concatenan, por lo que un espacio de trabajo puede añadir medidas de protección específicas del repositorio a tus valores predeterminados personales.

Formato de la lista de permitidos del terminal

Cada entrada es un comando o una cadena que representa un prefijo de comando.

PatrónCoincide con
gitCualquier comando que empiece por git (p. ej., git status, git diff)
git statusSolo git status (y cualquier comando que empiece por git status )
npm:install*npm install, npm install express, etc. : separa el comando base de un glob de argumentos.

La coincidencia distingue entre mayúsculas y minúsculas y usa semántica de prefijo: git coincide con git status, pero no con gitk.

Ejemplos

Establecer globalmente la lista de permitidos de MCP

{  // Anula por completo la lista de permitidos de MCP de la app.  "mcpAllowlist": [    "github:*",    "linear:list_issues"  ]}

Establecer globalmente la lista de permitidos del terminal

{  "terminalAllowlist": [    "git",    "npm",    "yarn",    "pnpm",    "cargo",    "make"  ]}

Anular solo un tipo de lista de permitidos

Si permissions.json solo define mcpAllowlist, la lista de permitidos de MCP se toma del archivo, mientras que la lista de permitidos del terminal sigue bajo el control del IDE:

{  "mcpAllowlist": [    "github:*",    "linear:*"  ]}

Las entradas de MCP configuradas previamente en Cursor Settings se ignoran mientras este archivo esté presente. Las entradas de la lista de permitidos del terminal en Cursor Settings siguen aplicándose.

Configuración combinada

{  "mcpAllowlist": [    "github:*",    "linear:*",    "notion:search"  ],  "terminalAllowlist": [    "git",    "npm",    "cargo build",    "cargo test"  ]}

Guiar el clasificador de Auto-review

{  "autoRun": {    "allow_instructions": [      "Read-only inspections of build artifacts under ./dist are fine."    ],    "block_instructions": [      "Especially for delete operations, I like for the classifier to reject so I can have a chance to review the operation."    ]  }}

Combinar archivos por usuario y por repositorio

~/.cursor/permissions.json:

{  "terminalAllowlist": ["git", "npm", "pnpm"],  "autoRun": {    "block_instructions": [      "Anything that touches my SSH config or shell rc files."    ]  }}

<workspace>/.cursor/permissions.json:

{  "terminalAllowlist": ["cargo build", "cargo test"],  "autoRun": {    "block_instructions": [      "Never run database migrations against the production schema in this repo."    ]  }}

La configuración efectiva es la concatenación de ambos archivos:

{  "terminalAllowlist": ["git", "npm", "pnpm", "cargo build", "cargo test"],  "autoRun": {    "block_instructions": [      "Anything that touches my SSH config or shell rc files.",      "Never run database migrations against the production schema in this repo."    ]  }}

Notas

  • Se requiere un modo de ejecución. permissions.json solo surte efecto cuando se activa un modo de ejecución en Cursor Settings (Auto-review, Lista de permitidos o Ejecutar todo). Las instrucciones de autoRun solo se consultan en el modo Auto-review. Antes de Cursor 3.5, las listas de permitidos no se consultaban en el modo en desuso Preguntar siempre.
  • No es un límite de seguridad. Las listas de permitidos y las instrucciones de autoRun son mecanismos de conveniencia que se aplican en la medida de lo posible. No garantizan la seguridad. Consulta seguridad de los agentes para más detalles.
  • Anula la configuración del IDE y fusiona archivos. Cuando permissions.json define una clave, reemplaza por completo la lista de permitidos de la app para ese tipo. Las entradas de los archivos por usuario y por repositorio se concatenan; las del IDE no se fusionan.
  • Visualización en el IDE. Cuando permissions.json controla una lista de permitidos, la sección de ajustes correspondiente pasa a ser de solo lectura y muestra las entradas definidas en el archivo. La opción "Añadir a la lista de permitidos" se oculta.
  • Los permisos de la CLI son independientes. La CLI de Cursor tiene su propio sistema de permisos. Consulta Permisos de la CLI para obtener más información.