Aller au contenu

ACTU · FREELANCES

Claude Code : l'option « don't ask again » a exposé des secrets sur GitHub, comment vérifier tes dépôts

Quand tu réponds « Yes, and don't ask again » à Claude Code, la commande approuvée peut être gardée telle quelle, mot de passe compris, dans .claude/settings.local.json. Selon Apiiro, 1 122 copies publiques de ce fichier sur GitHub contenaient un secret : révoque d'abord, nettoie ensuite.

Une clé de porte argentée de marque BKS accrochée à un anneau de porte-clés avec un médaillon métallique, posée sur une surface noire brillante
Une clé de porte sur son trousseau, photographiée le 4 novembre 2022 (illustration). Photo : Pittigrilli, CC BY-SA 4.0, via Wikimedia Commons, recadrée (même licence)

En bref

  • La documentation d'Anthropic confirme que « Yes, and don't ask again » écrit une règle allow dans .claude/settings.local.json, protégé seulement par l'exclusion git globale de ta machine.
  • Apiiro dit avoir trouvé 104 185 copies publiques de ce fichier, dont 1 122 avec au moins un secret (1 379 secrets distincts), et 215 que ni gitleaks ni TruffleHog ne signalaient.
  • Le comportement était décrit dans un ticket GitHub du 11 août 2025, fermé automatiquement pour inactivité le 3 janvier 2026 ; en attendant un correctif, la vérification et la révocation sont à ta charge.

Ce que fait réellement « don't ask again »

Par défaut, Claude Code, l'agent de programmation d'Anthropic qui tourne dans ton terminal, demande la permission avant d'exécuter une commande shell. Si tu choisis « Yes, and don't ask again », la documentation des fichiers de réglages indique que l'approbation est enregistrée comme règle allow dans .claude/settings.local.json, à la racine du dépôt git. La commande ne te sera plus soumise dans les sessions suivantes.

Le problème tient au contenu de la règle. Quand l'invite propose un motif, comme toutes les commandes npm test, seul le motif est gardé. Quand elle propose une commande exacte, c'est la ligne entière qui est écrite en clair, y compris le mot de passe passé après PGPASSWORD= ou le jeton collé dans un curl. Le ticket n° 5544, ouvert le 11 août 2025, décrivait déjà des clés d'API et des jetons d'autorisation stockés « verbatim » dans la liste permissions.allow.

Anthropic a prévu un garde-fou, mais il est local. La documentation précise que, la première fois qu'il écrit le fichier dans un dépôt qui ne l'ignore pas déjà, Claude Code ajoute **/.claude/settings.local.json au fichier d'exclusion git global de ta machine. Rien n'est ajouté au .gitignore du projet. Et la documentation de git rappelle qu'un fichier déjà suivi n'est pas concerné par les règles d'exclusion. Si tu as créé le fichier à la main, si tu clones le dépôt sur un autre poste ou si le dossier devient un dépôt plus tard, la protection ne joue pas.

Ce qu'Apiiro a trouvé sur GitHub

L'éditeur de sécurité Apiiro, qui vend des outils de protection du développement, a recensé les copies publiques de ce fichier entre le 1er et le 3 novembre 2026. Sa publication n'a pas pu être consultée directement (page dynamique inaccessible) ; les chiffres ci-dessous sont ceux qu'en rapporte The Hacker News le 7 novembre 2026. Ce sont les chiffres d'Apiiro, sans réplication indépendante, et l'éditeur n'a testé aucun des secrets.

Constat d'ApiiroValeurSource
Copies publiques de .claude/settings.local.json104 185, dans 103 617 dépôtsThe Hacker News
Copies contenant au moins un secret1 122 (environ 1,1 %), 1 379 secrets distinctsThe Hacker News
Mots de passe de bases de données379The Hacker News
Accès SSH, jetons GitHub/GitLab/npm, clés AWS43, 42 et 23The Hacker News
Secrets dans d'anciennes versions du fichier seulement734, dans 509 dépôtsThe Hacker News
Total avec settings.json partagé et journaux d'agent2 539 secrets, 1 994 dépôtsThe Hacker News
Fichiers avec secret ignorés par gitleaks et TruffleHog215 sur 1 122The Hacker News

Source : reprise par The Hacker News de l'étude Apiiro, relevé du 10 novembre 2026.

Deux détails comptent pour toi. D'abord, dans 539 des 1 105 dépôts retracés, un commit cosigné par Claude modifiait le fichier, ce qu'Apiiro interprète comme le signe que l'agent le commite souvent lui-même, selon The Hacker News. Ensuite, sur 16 agents de programmation dont Apiiro a comparé la documentation, Claude Code serait le seul à enregistrer par défaut la commande complète dans un fichier du projet. Les deux affirmations sont celles de l'éditeur.

Pourquoi tes scanners peuvent passer à côté

Les outils comme gitleaks ou TruffleHog cherchent des formats de clés connus (préfixe d'un fournisseur, longueur typique). Un mot de passe écrit après mysql -p, sshpass -p ou PGPASSWORD= ressemble à un mot ordinaire dans une ligne de commande. C'est l'explication que donne Apiiro aux 215 fichiers non signalés, toujours selon The Hacker News. Un scan propre ne prouve donc pas que le fichier est sain : ouvre-le et lis-le.

Le même risque vaut pour tout dossier d'agent : Apiiro recommande de traiter .cursor/, .gemini/ ou .specstory/ comme des fichiers .env, d'après la même reprise. C'est la logique des contrôles de secrets que Cursor applique avant chaque publication d'appli. Les agents IA exécutent des commandes en ton nom ; ce qu'ils retiennent de ces commandes devient une donnée sensible. Il en va de même des conversations avec un assistant : en novembre 2026, des transcriptions de Notion AI ont été dérobées chez son sous-traitant Fireworks, avec les secrets que des utilisateurs y avaient collés.

Les tickets restés sans suite

Le ticket de 2025 n'est pas resté isolé. Le ticket n° 13106 du 4 décembre 2025 raconte une clé repérée par une alerte de sécurité après le push d'un settings.local.json vers un dépôt public ; un robot l'a fermé comme doublon le 8 décembre. Le ticket n° 24994 du 11 février 2026 décrit un fichier de 311 entrées après deux mois d'usage, avec des clés Stripe et des mots de passe Postgres ; il a été fermé de la même façon. Le ticket d'août 2025, lui, a été fermé automatiquement le 3 janvier 2026 après 60 jours d'inactivité.

Côté Anthropic, Boris Cherny, de l'équipe Claude Code, a écrit sur Hacker News que l'équipe « regarde ce qu'elle peut faire pour l'empêcher » (traduction Le Latent), d'après Ars Technica le 9 novembre 2026. Il conseille le mode automatique et les scanners de secrets, tout en reconnaissant qu'en mode automatique aussi, des commandes sensibles peuvent être enregistrées. Le 10 novembre 2026, le journal des modifications de Claude Code, arrivé à la version 2.1.322, ne mentionne aucun changement sur ce point ; ce n'est pas la première fois que des données sortent de l'outil, comme l'avait montré l'email du compte envoyé dans le User-Agent.

La marche à suivre pour un développeur indépendant

  1. Cherche le fichier partout, historique compris. Dans chaque dépôt : git log --all -- .claude/settings.local.json .claude/settings.json. Sur GitHub, cherche ces deux chemins dans tes dépôts et ceux de tes clients.
  2. Révoque avant de nettoyer. La documentation de GitHub est nette : un secret exposé se révoque ou se change en premier. Une fois révoqué, il ne donne plus accès ; réécrire l'historique avec git-filter-repo devient facultatif, et ne touche de toute façon ni les forks ni les clones existants.
  3. Arrête de suivre le fichier. git rm --cached .claude/settings.local.json, puis ajoute .claude/settings.local.json au .gitignore du projet et commite ce .gitignore, pour que la protection voyage avec le dépôt.
  4. Purge ton fichier local, même s'il n'a jamais été poussé : supprime chaque règle qui contient un secret. Le fichier peut aussi finir dans un paquet npm, une image Docker ou un dossier synchronisé.
  5. Change de réflexe. Plus de secret tapé en clair dans une commande : passe par une variable ($DB_URL) chargée depuis ton gestionnaire de secrets, et approuve des motifs plutôt que des commandes exactes.

Si une clé exposée ouvrait une base contenant des données personnelles de tes clients et que tu constates un accès non autorisé, la CNIL rappelle que toute violation se documente en interne et qu'elle se notifie, si elle présente un risque pour les personnes, dans les 72 heures si possible après sa constatation (article 33 du RGPD). Pour un freelance, le responsable de traitement est souvent le client : préviens-le sans attendre. D'autres outils pour ton activité sont rassemblés dans la rubrique Freelances.

Ce qu'on ne sait pas encore

La date exacte de publication d'Apiiro diffère selon les reprises : le 5 novembre 2026 pour certaines, la veille du 7 novembre pour The Hacker News. Personne ne sait si les 1 379 secrets ont été utilisés ; une seule organisation prévenue a confirmé que sa clé était encore active. Enfin, Anthropic n'a annoncé ni date ni forme de correctif (masquage automatique, scanner intégré ou fichier déplacé hors du projet).

Questions fréquentes

Faut-il committer .claude/settings.local.json ?

Non. La documentation d'Anthropic le présente comme un fichier personnel à un projet, à l'inverse de .claude/settings.json, fait pour être partagé. Ajoute-le au .gitignore du dépôt, pas seulement à l'exclusion globale de ta machine.

Claude Code ajoute-t-il settings.local.json au .gitignore ?

Pas au .gitignore du projet. La documentation dit qu'il ajoute **/.claude/settings.local.json à ton fichier d'exclusion git global la première fois qu'il écrit le fichier. Cette protection ne suit pas le dépôt sur une autre machine et ne couvre pas un fichier déjà suivi par git.

Supprimer le fichier ou rendre le dépôt privé suffit-il ?

Non. Le secret reste dans l'historique git, les forks et les clones. GitHub demande de révoquer ou de changer d'abord le secret ; une fois révoqué, il ne donne plus accès, et la réécriture de l'historique devient secondaire.

Partager l'article

Sources primaires

  1. Settings files and precedence — Anthropic (documentation Claude Code) · consulté le
  2. [BUG] approved bash commands containing credentials are stored as is with plain text credentials in settings.local.json — GitHub (anthropics/claude-code), publié le 11 août 2025 · consulté le
  3. [BUG] Sensitive tokens stored in .claude/settings.local.json and not ignored by git by default — GitHub (anthropics/claude-code), publié le 4 décembre 2025 · consulté le
  4. [Bug] "Allow always" saves full command text leaking secrets and causing parse errors — GitHub (anthropics/claude-code), publié le 11 février 2026 · consulté le
  5. Claude Code CHANGELOG (versions 2.1.321 et 2.1.322) — Anthropic (dépôt claude-code) · consulté le
  6. gitignore Documentation — Git (documentation officielle) · consulté le
  7. Removing sensitive data from a repository — GitHub (documentation) · consulté le
  8. Notifier une violation de données personnelles — CNIL, publié le 24 mai 2018 · consulté le
  9. Claude Code's "Don't Ask Again" File Exposes Passwords and Keys in 1,122 Public Copies on GitHub — The Hacker News, publié le 7 novembre 2026 · consulté le
  10. Claude Code is accidentally exposing secrets all over GitHub — Ars Technica, publié le 9 novembre 2026 · consulté le

Entités citées

Anthropic : valorisation et levées de fonds

Dans le même dossier

Tout le dossier

Article de la Rédaction Métiers & Usages pro, publié sous la direction éditoriale de Bastien Hugon. Méthode éditoriale et usage de l'IA

À lire aussi

Historique des modifications

  • — Mise à jour : Ajout d'un lien vers l'article sur la fuite de conversations Notion AI chez Fireworks (11 novembre 2026).

Notre politique de corrections