J'ai collé une clé d'API dans mon agent de code. Et maintenant ?

Faites d'abord pivoter ou révoquez la clé, puis occupez-vous des copies dans l'historique de votre agent, puis configurez zn-gate pour que la prochaine soit bloquée ou remplacée par un marqueur avant que le modèle ne la voie.

Voir le .md

Vous avez tapé ou collé une clé d'API dans le chat d'un agent de code, ou l'agent l'a lue dans un fichier. La clé se trouve maintenant dans la conversation envoyée au modèle, et probablement dans l'historique de l'agent sur votre disque. Cette page donne les étapes dans l'ordre qui compte : faire pivoter la clé, nettoyer les copies, puis éviter que cela se reproduise.

1. Faites d'abord pivoter ou révoquez la clé

Faites-le avant tout le reste. Supprimer un chat ou un fichier d'historique n'annule pas une copie déjà envoyée à un fournisseur de modèles ou conservée dans une sauvegarde. Seule la révocation de la clé rend la valeur divulguée inutilisable.

  1. Ouvrez la console du service qui a émis la clé. Repérez la clé dans sa liste de clés d'API, de jetons ou de clés d'accès.
  2. Créez une nouvelle clé si quelque chose dépend de l'ancienne. Si un service en production utilise la clé et que vous ne pouvez pas vous permettre une interruption, créez d'abord la clé de remplacement, faites-y basculer votre application, mettez à jour tous les autres endroits qui utilisent la clé (secrets de CI, paramètres de déploiement, collègues), puis révoquez l'ancienne. AWS, GitHub et Google Cloud décrivent cet ordre dans leurs propres pages. Si rien ne dépend de la clé, révoquez-la tout de suite.
  3. Révoquez ou supprimez l'ancienne clé. Ne la laissez pas active « pour l'instant ».
  4. Donnez à la nouvelle clé les permissions minimales dont elle a besoin.
  5. Conservez la nouvelle clé là où l'agent ne la lira pas. Pas dans le chat, ni dans un fichier .env ordinaire que l'agent peut ouvrir. Voir l'étape 3 plus bas.
  6. Consultez le journal d'utilisation ou d'accès du fournisseur pour l'ancienne clé. Si vous voyez des requêtes que vous ne reconnaissez pas, considérez le compte comme compromis et suivez les recommandations du fournisseur.

Où révoquer, d'après la documentation de chaque fournisseur :

Fournisseur Ce que dit sa documentation
AWS Updating IAM user access keys : créez une deuxième clé, faites-y basculer vos applications, désactivez la première, puis supprimez-la quand plus rien n'en a besoin.
GitHub Remediating a leaked secret : un guide pas à pas qui comprend la révocation du secret, la recherche des services qui l'utilisent et la vérification des accès non autorisés. Les jetons se gèrent dans Managing your personal access tokens.
Google Cloud API keys : la page explique comment faire pivoter une clé, ce qui crée une nouvelle clé avec les mêmes restrictions, et comment supprimer l'ancienne une fois que vos applications utilisent la nouvelle.
Stripe API keys : comment renouveler (roll) une clé et quand l'ancienne expire.
Anthropic API key best practices : si vous soupçonnez qu'une clé est compromise, révoquez-la depuis la page des clés d'API de la Claude Console avec « Delete API key ».

Pour un service qui n'apparaît pas ici, ouvrez sa propre documentation et cherchez comment révoquer, faire pivoter ou renouveler une clé. Nous ne renvoyons qu'à des pages que nous avons pu ouvrir et lire.

2. Nettoyez les copies qui restent sur votre machine

Claude Code, Codex CLI, Cursor et OpenCode conservent un historique de vos conversations, et une clé que vous avez tapée ou qui est passée par un outil peut s'y trouver. Claude Code garde aussi chaque prompt que vous saisissez dans un fichier d'historique des prompts distinct. Chaque agent stocke son historique à un endroit différent et offre des contrôles différents, et pour certains la documentation ne dit rien du chemin local ni de la conservation.

Nous avons réuni cela dans un seul guide pour qu'il reste exact à un seul endroit : Les agents de code gardent-ils vos clés d'API dans leurs transcriptions ? Il indique où chacun des quatre agents stocke son historique d'après la documentation de son éditeur, combien de temps il le conserve, ce que dit chaque éditeur sur les envois, comment trouver les fichiers qui contiennent une clé et les supprimer, et les copies faciles à oublier, comme les sauvegardes et la synchronisation cloud de votre dossier personnel.

Faites-le après l'étape 1, pas à sa place.

3. Évitez la suivante avec zn-gate

zn-gate est une couche locale entre votre agent de code et ses outils. Il s'exécute sur votre machine, sans compte. Son Scrubber de secrets est disponible à partir de zn-gate 1.5.0 (sous Windows, à partir de 1.5.1) et fonctionne avec Claude Code, Codex CLI, Cursor (IDE) et OpenCode. Ce qu'il peut modifier dépend de chaque agent.

Ce qu'il fait pour une clé que vous allez coller

D'après la page Scrubber et coffre de secrets :

  • Les prompts collés, les lectures de fichiers, la sortie des commandes, les recherches et les résultats d'outils MCP passent par le Scrubber avant d'atteindre le modèle. Les valeurs qu'il connaît (celles du coffre et de vos fichiers .env) et plus de 60 formats de secrets deviennent des marqueurs stables comme __ZN_AWS_KEY_1__, de sorte que, là où l'agent laisse zn-gate les réécrire, le modèle reçoit le marqueur au lieu de la valeur (voir les limites plus bas).
  • Les hooks bloquent la lecture des fichiers .env qui contiennent de vraies valeurs et des fichiers d'identifiants comme ~/.aws/credentials ou ~/.ssh/id_*. La documentation parle d'un garde-fou, pas d'un bac à sable.
  • Les vraies valeurs vivent dans un coffre chiffré sur votre machine. L'agent travaille avec des marqueurs, et une valeur n'est insérée que là où vous l'avez autorisé.

Un secret collé dans un prompt est bloqué dans les quatre agents, donc le prompt n'atteint pas le modèle. Le blocage n'efface pas ce que vous avez saisi de votre propre machine : l'agent peut conserver le prompt en local (Claude Code le garde en clair dans sa transcription). Les marqueurs n'apparaissent que dans la sortie d'outil nettoyée par zn-gate.

Les jetons placés dans env ou headers d'un serveur MCP sont un autre cas : Jetons en clair dans votre configuration MCP : comment les en sortir explique comment les sortir du fichier de configuration.

Configurez-le

Il vous faut Node.js 18 ou plus récent. Exécutez ceci dans votre propre terminal :

npx -y zn-gate init
npx -y zn-gate unlock
npx -y zn-gate env shadow .env
npx -y zn-gate check
  • init trouve les quatre agents sur votre machine, affiche la configuration de chacun de ceux qui ne sont pas encore protégés et exécute chaque étape après votre confirmation.
  • unlock crée le coffre la première fois. Avec le trousseau du système, il demande un terminal interactif.
  • env shadow .env déplace les valeurs de votre fichier .env dans le coffre. Le fichier conserve des marqueurs comme __ZN_STRIPE_KEY__.
  • check teste avec un faux secret dans un dossier temporaire et vous dit quel agent n'est pas protégé. Rien n'est envoyé nulle part. Ce que signifie la sortie.

Pour ajouter un seul secret sans le coller dans un chat ni le mettre sur une ligne de commande, saisissez-le à une invite masquée : zn secret set GITHUB_TOKEN --host api.github.com. La documentation indique de ne jamais passer un secret en argument.

Pour essayer avec une fausse valeur, ouvrez votre agent dans un dossier vide et collez dans le prompt la clé d'exemple de la documentation AWS AKIAIOSFODNN7EXAMPLE. Si zn-gate reconnaît le format, le prompt est bloqué. S'il n'est pas bloqué, ce format n'est peut-être pas l'un de ceux que zn-gate détecte, et ce test ne dit rien de vos vraies clés.

Ce que zn-gate ne fait pas

Ces limites viennent de la page Scrubber et coffre de secrets et du modèle de menaces de zn-gate.

  • Il ne nettoie pas les transcriptions écrites avant son installation. La clé que vous avez collée aujourd'hui y reste jusqu'à ce que vous les supprimiez (étape 2).
  • Il ne révoque rien et ne contrôle pas ce qu'un éditeur d'agent stocke sur ses serveurs. La rotation reste toujours l'étape 1.
  • Le Scrubber trouve les valeurs connues et les formats reconnaissables. Un secret sans format connu qui n'est ni dans le coffre ni dans un fichier .env peut passer.
  • Dans Cursor, seule la sortie des outils MCP peut être réécrite. La sortie du shell et le contenu des fichiers n'y sont pas nettoyés.
  • Certains agents gardent leurs propres copies locales. Le journal de session de Codex conserve la sortie d'origine.
  • Dans Claude Code, un prompt que zn-gate a bloqué reste en clair dans la transcription, comme le dit la documentation de Claude Code elle-même.

Questions fréquentes

Dois-je faire pivoter la clé si j'ai supprimé la conversation ? Oui. Supprimer des fichiers locaux n'efface pas une copie envoyée au fournisseur du modèle ou conservée dans une sauvegarde. Révoquez d'abord la clé.

Puis-je supprimer la transcription et garder la clé ? Ce n'est pas sûr. La clé a été envoyée au modèle dans le cadre de la conversation : considérez-la comme exposée.

zn-gate supprime-t-il une clé déjà présente dans mon historique ? Non. Il agit sur les nouveaux prompts et sur la sortie des outils. Les fichiers d'historique existants restent tels quels.

zn-gate m'empêchera-t-il de coller une clé ? Il bloque un secret collé dans un prompt quand il en reconnaît le format, dans Claude Code, Codex CLI, Cursor et OpenCode. Un secret dans un format qu'il ne connaît pas peut passer : gardez donc les clés hors des chats de toute façon.

Comment retirer les hooks de zn-gate ? zn hooks uninstall <agent>, par exemple zn hooks uninstall codex.

Pages liées

Sources