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.
Inicio rápido (sin necesidad de programar)
-
Comprueba que Node.js está instalado. En Cursor, abre Terminal → New Terminal, pega
node --versiony 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. -
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 cursorEn 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, escribezn.cmd hooks install cursoren su lugar (aún no verificado). -
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.
- Si el agente dice que no puede leer tu archivo
.env(opcional): ejecutazn unlock(crea tu bóveda local la primera vez) y luegozn env shadow .env. Tu.envcontendrá 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):
beforeReadFileybeforeSubmitPromptfallan en modo cerrado: si el hook falla o agota el tiempo de espera, la lectura o el prompt se bloquean.beforeShellExecutionbloquea los comandos que leen archivos de secretos y remite al agente azn runpara los comandos que necesitan un secreto.postToolUseelimina los secretos de la salida de herramientas MCP (la única salida que Cursor permite que un hook modifique).preToolUserevisa 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
- MCP: https://cursor.com/docs/context/mcp
- Enlaces de instalación de MCP: https://cursor.com/docs/context/mcp/install-links
- Hooks: https://cursor.com/docs/hooks