Integraciones

Cursor

Configura zn-gate en Cursor en dos minutos y, después, los detalles técnicos: el servidor MCP, los hooks que bloquean la lectura de secretos y limpian la salida de MCP, y lo que Cursor no permite que zn-gate cubra.

Ver .md

Inicio rápido (sin necesidad de programar)

  1. Comprueba que Node.js está instalado. En Cursor, abre Terminal → New Terminal, pega node --version y pulsa Intro. Si ves un número de versión (18 o posterior), continúa. Si ves "command not found", instala la versión LTS desde nodejs.org y luego cierra y vuelve a abrir Cursor.

  2. Instala zn-gate y activa su protección para Cursor. Pega cada línea en la misma terminal y pulsa Intro después de cada una:

    npm install -g zn-gate
    zn hooks install cursor

    En un Mac, si ves EACCES, sigue la guía de npm sobre cómo corregir errores de permisos. En Windows, si PowerShell indica que la ejecución de scripts está deshabilitada, escribe zn.cmd hooks install cursor en su lugar (aún no verificado).

  3. Reinicia Cursor.

Estado: estos pasos siguen la documentación de Cursor; todavía no los hemos ejecutado de principio a fin en Cursor (Cursor no tiene un modo de línea de comandos con hooks que podamos probar automáticamente), y no los hemos probado en absoluto en Windows.

Una vez que funcione, el agente de Cursor no puede leer archivos .env con valores reales ni los archivos de credenciales habituales (lecturas de archivos y la mayoría de comandos de shell), un secreto que zn-gate reconoce en tu mensaje de chat se bloquea antes de enviarse, y los secretos que reconoce se eliminan de los resultados de herramientas MCP.

  1. Si el agente dice que no puede leer tu archivo .env (opcional): ejecuta zn unlock (crea tu bóveda local la primera vez) y luego zn env shadow .env. Tu .env contendrá entonces marcadores en lugar de valores reales, y zn-gate rellena los valores solo para los comandos que permitas.

Para deshacerlo: zn hooks uninstall cursor.

Qué protege zn-gate en Cursor, y qué no

En Cursor
Bloquea la lectura de archivos .env con valores, de archivos de credenciales (~/.aws/credentials, ~/.ssh/id_*…) y de ~/.zn Sí, para lecturas de archivos y comandos de shell
Elimina secretos de los resultados de herramientas MCP Sí
Bloquea un secreto pegado en el chat Sí
Elimina secretos de la salida de shell y del contenido de archivos No. Cursor no permite que los hooks los modifiquen
Revisa tus otros servidores MCP en busca de inyección de prompts Sí, si los envuelves (abajo)
Cursor CLI (cursor-agent) No cubierto: su soporte de hooks no está documentado

No cubierto: un secreto impreso por un comando de shell, o escrito en un archivo que el agente lee y que no está bloqueado, llega al modelo. Guarda los secretos en la bóveda de zn-gate (zn unlock, y luego zn env shadow .env) para que tus archivos contengan marcadores en lugar de valores reales: consulta Scrubber. Los hooks son una barrera de protección, no un sandbox.

Referencia técnica

zn-gate como servidor MCP

Un clic (aún no verificado): abre este enlace en tu navegador y Cursor te pedirá que lo confirmes.

cursor://anysphere.cursor-deeplink/mcp/install?name=zn-gate&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInpuLWdhdGUiLCJtY3AiXX0%3D

O añádelo a mano en ~/.cursor/mcp.json (todos los proyectos) o en .cursor/mcp.json (un solo proyecto):

{ "mcpServers": { "zn-gate": { "command": "npx", "args": ["-y", "zn-gate", "mcp"] } } }

Después, el agente puede llamar a analyze_prompt, check_tool_call, check_tool_result y zn_status. El agente decide cuándo llamarlas, así que por sí solo esto no es una protección automática; lo son los hooks de arriba.

Revisa la salida de tus otros servidores MCP

npx -y zn-gate init --dry-run   # shows what would change
npx -y zn-gate init             # wraps each local server with zn-gate shield (a backup is written first)

Cada resultado de un servidor envuelto se revisa en busca de inyección de prompts, y los secretos que zn-gate reconoce se eliminan antes de que el agente lo vea. npx -y zn-gate init --revert restaura la copia de seguridad.

Los hooks

zn hooks install cursor escribe el hooks.json de Cursor (zn-gate 1.5 y posteriores, npm):

  • beforeReadFile y beforeSubmitPrompt fallan en modo cerrado: si el hook falla o agota el tiempo de espera, la lectura o el prompt se bloquean.
  • beforeShellExecution bloquea los comandos que leen archivos de secretos y remite al agente a zn run para los comandos que necesitan un secreto.
  • postToolUse elimina los secretos de la salida de herramientas MCP (la única salida que Cursor permite que un hook modifique).
  • preToolUse revisa las escrituras y eliminaciones con el mejor esfuerzo posible: Cursor no documenta la entrada de todas las herramientas.

Detalles por agente y comparación entre agentes: compat.md.

Documentación de Cursor