Intégrations

Cursor

Configurer zn-gate dans Cursor en deux minutes, puis les détails techniques : le serveur MCP, les hooks qui bloquent la lecture des secrets et nettoient la sortie MCP, et ce que Cursor ne permet pas à zn-gate de couvrir.

Voir le .md

Démarrage rapide (sans programmation)

  1. Vérifiez que Node.js est installé. Dans Cursor, ouvrez Terminal → New Terminal, collez node --version et appuyez sur Entrée. Si vous voyez un numéro de version (18 ou supérieur), passez à l'étape suivante. Si vous voyez « command not found », installez la version LTS depuis nodejs.org, puis fermez et rouvrez Cursor.

  2. Installez zn-gate et activez sa protection pour Cursor. Collez chaque ligne dans le même terminal et appuyez sur Entrée après chacune :

    npm install -g zn-gate
    zn hooks install cursor

    Sur un Mac, si vous voyez EACCES, suivez le guide de npm pour corriger les erreurs de permission. Sous Windows, si PowerShell indique que l'exécution de scripts est désactivée, tapez à la place zn.cmd hooks install cursor (non encore vérifié).

  3. Redémarrez Cursor.

Statut : ces étapes suivent la documentation de Cursor ; nous ne les avons pas encore exécutées de bout en bout dans Cursor (Cursor ne dispose pas de mode en ligne de commande avec hooks que nous puissions tester automatiquement), et pas du tout sous Windows.

Une fois en place, l'agent de Cursor ne peut plus lire les fichiers .env contenant de vraies valeurs ni les fichiers d'identifiants courants (lectures de fichiers et la plupart des commandes shell). Un secret reconnu par zn-gate dans votre message de chat est bloqué avant d'être envoyé, et les secrets reconnus sont supprimés des résultats des outils MCP.

  1. Si l'agent indique qu'il ne peut pas lire votre fichier .env (facultatif) : exécutez zn unlock (il crée votre coffre local la première fois), puis zn env shadow .env. Votre .env contient alors des marqueurs à la place des vraies valeurs, et zn-gate ne remplit les valeurs que pour les commandes que vous autorisez.

Pour annuler : zn hooks uninstall cursor.

Ce que zn-gate protège dans Cursor, et ce qu'il ne protège pas

Dans Cursor
Bloque la lecture des fichiers .env contenant des valeurs, des fichiers d'identifiants (~/.aws/credentials, ~/.ssh/id_*…) et ~/.zn Oui, pour les lectures de fichiers et les commandes shell
Supprime les secrets des résultats des outils MCP Oui
Bloque un secret collé dans le chat Oui
Supprime les secrets de la sortie shell et du contenu des fichiers Non. Cursor ne permet pas aux hooks de les modifier
Vérifie vos autres serveurs MCP contre l'injection de prompt Oui, si vous les encapsulez (voir ci-dessous)
Cursor CLI (cursor-agent) Non couvert : la prise en charge des hooks n'est pas documentée

Non couvert : un secret affiché par une commande shell, ou écrit dans un fichier lu par l'agent qui n'est pas bloqué, atteint le modèle. Conservez les secrets dans le coffre de zn-gate (zn unlock, puis zn env shadow .env) afin que vos fichiers contiennent des marqueurs au lieu de vraies valeurs : voir Scrubber. Les hooks sont un garde-fou, pas un bac à sable.

Référence technique

zn-gate comme serveur MCP

Un clic (non encore vérifié) : ouvrez ce lien dans votre navigateur, et Cursor vous demande de confirmer.

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

Ou ajoutez-le manuellement à ~/.cursor/mcp.json (tous les projets) ou .cursor/mcp.json (un seul projet) :

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

L'agent peut alors appeler analyze_prompt, check_tool_call, check_tool_result et zn_status. C'est l'agent qui décide quand les appeler, donc ceci n'est pas une protection automatique à lui seul ; ce sont les hooks ci-dessus qui le sont.

Vérifier la sortie de vos autres serveurs 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)

Chaque résultat d'un serveur encapsulé est vérifié contre l'injection de prompt, et les secrets reconnus par zn-gate sont supprimés, avant que l'agent ne le voie. npx -y zn-gate init --revert restaure la sauvegarde.

Les hooks

zn hooks install cursor écrit le fichier hooks.json de Cursor (zn-gate 1.5 et versions ultérieures, npm) :

  • beforeReadFile et beforeSubmitPrompt échouent en mode fermé : si le hook plante ou dépasse le délai, la lecture ou le prompt est bloqué.
  • beforeShellExecution bloque les commandes qui lisent des fichiers de secrets et oriente l'agent vers zn run pour les commandes qui ont besoin d'un secret.
  • postToolUse supprime les secrets de la sortie des outils MCP (la seule sortie que Cursor laisse un hook modifier).
  • preToolUse vérifie les écritures et suppressions au mieux : Cursor ne documente pas l'entrée de chaque outil.

Détails par agent et comparaison entre agents : compat.md.

Documentation de Cursor