Les outils de codage IA changent ce qui quitte votre machine, qui peut lire une invite, et ce qui finit dans une pull request. Cette checklist donne à une équipe dev une réponse répétable à « est-ce sûr de coller » et « est-ce sûr de fusionner », sans lire chaque page de conditions de chaque vendeur de zéro. Chaque affirmation de politique de données ci-dessous est sauvegardée par une source officielle ; tout ce que nous ne pouvions pas vérifier est marqué ainsi au lieu d’être deviné.
Confidentialité des données : ce qui quitte la machine
Chaque assistant IA envoie des invites et du contexte aux serveurs d’un fournisseur. La vraie question est ce qui se passe après, et quel paramètre contrôle cela.
| Vérification | Pourquoi | Comment vérifier |
|---|---|---|
| Le mode Privacy de Cursor est activé, ou appliqué à l’équipe | Cursor déclare que le code n’est pas utilisé pour l’entraînement par Cursor ou ses fournisseurs de modèle, en vertu d’accords ZDR | Paramètres → General → Privacy Mode ; les admins l’appliquent depuis le tableau de bord d’équipe |
| Vous connaissez quels modèles Cursor sont en dehors de ZDR | Quelques modèles ont besoin de rétention côté fournisseur pour la révision de sécurité et l’approbation d’admin même avec le mode Privacy activé | Voir « Models with data retention » dans la docs de confidentialité d’entreprise de Cursor |
| L’exclusion de contenu de Copilot couvre les chemins chargés de secrets | Les chemins exclus restent hors des suggestions inline et de Copilot Chat dans l’IDE | Paramètres du dépôt → Copilot → Content exclusion, ou une règle org-level "*": ["/.env"] |
| Vous connaissez la lacune de l’exclusion de contenu | Copilot CLI et le mode Agent dans Copilot Chat ne supportent pas l’exclusion de contenu, selon les docs de GitHub | Traitez les sessions CLI et agent comme non-protégées par ce paramètre |
| ChatGPT workspace est Business/Enterprise/Edu pour le travail client | Le défaut d’OpenAI est pas d’entraînement sur les entrées/sorties de ces espaces de travail ou l’API ; les comptes personnels diffèrent | Vérifiez le type d’espace de travail avant de coller du matériel client |
| L’exception de bouton de retour sur les comptes personnels est connue | Sur Free/Plus/Pro, un thumbs-up/down peut laisser OpenAI utiliser toute cette conversation même après une opt-out générale | Ne classez pas une conversation tenant des choses sensibles sur un compte personnel |
| L’utilisation de Claude pour le travail client est Team/Enterprise/API | Anthropic déclare pas d’entraînement par défaut sur ces plans ; les consumer Free/Pro/Max (incluant Claude Code de chez eux) peuvent opter pour | code.claude.com/docs/en/data-usage |
| L’emplacement de la transcription Claude Code est examiné | Les transcriptions vivent en plaintext sous ~/.claude/projects/ pendant 30 jours par défaut, ajustable via cleanupPeriodDays |
Réduisez la rétention sur une machine partagée ou client |
| PII est enlevée avant de coller n’importe où ci-dessus | Une promesse de politique d’entraînement n’est pas une promesse de contrôle d’accès ; les classificateurs de sécurité peuvent toujours voir du contenu signalé | Effacez les noms, emails, IDs de compte des logs avant de coller |
C’est un problème de paramètre, pas une raison d’éviter ces outils. Le Cursor cheat sheet couvre où ces contrôles vivent au jour le jour.
Secrets : jamais dans les invites, attrapés avant qu’ils partent
Une politique d’entraînement est hors de propos si un secret a déjà quitté votre machine dans un commit ou un log collé.
| Vérification | Pourquoi | Comment vérifier |
|---|---|---|
| Aucun secret n’est tapé ou collé dans une invite | N’importe quel outil de chat peut retenir le texte signalé peu importe les paramètres d’entraînement | Grep les exports d’invites pour AKIA, -----BEGIN, Bearer, password= |
.env* et les fichiers d’identifiant sont dans .gitignore |
Arrête le commit accidentel le plus courant avant qu’un scanner ne soit nécessaire | git check-ignore -v .env imprime une correspondance |
| gitleaks s’exécute pré-commit | Attrape un secret en dur avant qu’il quitte votre machine, indépendant de n’importe quel outil IA | pre-commit run gitleaks --all-files échoue sur un secret de test planté |
| gitleaks balaie aussi l’historique git | Un secret enlevé plus tard est toujours lisible dans l’historique sauf s’il est réécrit | gitleaks git -v --redact balaie les patches via git log -p |
Un hook Claude Code/Cursor bloque les lectures de .env |
Arrête un agent tirant les contenus du fichier secret dans son propre contexte, pas seulement bloquant les éditions | Demandez à l’agent d’ouvrir .env ; l’appel devrait être nié. Setup complet : guide des hooks Claude Code |
| CI exécute son propre scan de secret comme filet de sécurité | Attrape --no-verify, un commit de web-UI, ou un hook local manquant |
Un travail gitleaks (ou équivalent) sur pull_request et push |
Validation du code généré
Le code IA sonne tout aussi confiant faux que juste. Barrière-le comme n’importe quelle autre différence, plus une vérification que cette source a besoin.
| Vérification | Pourquoi | Comment vérifier |
|---|---|---|
| Chaque fonction générée sort avec un test passant | La confiance dans le ton n’a aucune corrélation avec la correction | CI bloque la fusion sans test ; voir TDD assisté par l’IA |
| Le même linter/SAST s’exécute sur les diffs créés par l’IA | Aucune exemption IA ne rend une différence plus sûre ; la vitesse de révision est le vrai risque | Aucune exclusion de chemin pour les commits signalés IA en CI |
| Les nouveaux noms de dépendance sont vérifiés par rapport au registre réel | Un modèle peut nommer un paquet qui n’existe pas — une dépendance hallucinez ou « slopsquatted » qu’un attaquant peut enregistrer | npm view <package> ou pip index versions <package> avant d’installer |
| Les dépendances vérifiées sont versionnées, pas en plage | Une plage non-versionnée peut résoudre une version ultérieure que personne n’a révisée | Versionnez dans package.json/requirements.txt, committez le lockfile |
| Les blocs générés distinctifs obtiennent une vérification de licence | Un snippet peut reproduire étroitement une source sous licence et porter sa licence | Cherchez une correspondance proche avant de livrer un bloc long, stylistiquement spécifique |
Contrôles d’hallucination
Une hallucination est un mauvais fait livré aussi confiant qu’un bon. Ces contrôles concernent où un humain ré-entre dans la boucle.
| Vérification | Pourquoi | Comment vérifier |
|---|---|---|
| L’agent cite une source pour les affirmations d’API/flag/limit | Réduit, n’élimine pas, les réponses confiant fausses sur les détails de version | Demandez « quel doc page dit cela » avant d’agir sur cela |
| Un humain examine la différence réelle, pas un résumé | Les résumés omettent le détail qui importe | git diff sur le commit, pas la description de l’agent |
| L’auto-fusion/auto-apply est désactivé pour les modifications de l’agent | Enlève le checkpoint le plus probable de attraper une hallucination | La protection de branche nécessite une révision approuvée par humain |
| L’agent est dit de dire « inconnu », pas de deviner | Un fait manquant déguisé en réponse confiante est le genre coûteux | Invite : « Si un fait requis manque, listez-le sous Unknown. » Voir flux de travail d’agentic validation |
Chaîne d’approvisionnement : serveurs MCP comme code tiers
Un serveur MCP est un programme que l’hôte lance et fait confiance avec l’accès outil. Le protocole ne le bac à sable pas — vous le faites.
| Vérification | Pourquoi | Comment vérifier |
|---|---|---|
| Chaque serveur MCP est traité comme du code tiers | Un serveur stdio partage le domaine de confiance de l’hôte ; les notes de sécurité du protocole disent qu’il n’y a pas de bac à sable | Examinez la source/l’éditeur avant d’approuver ; voir MCP servers explained |
Le serveur est versionnée à une version, pas latest |
Un serveur non-versionnée peut changer le comportement ou les permissions après approbation | Versionnez command/args à une version taguée dans mcp.json |
| Les permissions et les outils accessibles sont examinés d’abord | Un serveur négligent peut diriger comment l’agent utilise chaque autre outil dans la session | /mcp dans Claude Code, ou Output → MCP Logs dans Cursor |
Les secrets vivent dans le bloc env propre du serveur |
Un profil shell partagé est lisible par chaque processus que l’hôte lance | Vérifiez l’entrée env du serveur, pas .bashrc/.zshrc |
| Les serveurs distants utilisent des tokens de courte durée sur HTTPS | Un token de longue durée dans un fichier config est une fuite permanente, la même classe de risque que l’accès hôte trop large (voir docker-sock-permission-denied) | La config référence ${env:NAME}, jamais un token brut |
Réglementations à être conscient
Informatif uniquement, pas un conseil juridique — vérifiez avec le conseil avant de faire une affirmation de conformité à un client ou régulateur.
| Vérification | Pourquoi | Comment vérifier |
|---|---|---|
| Vous savez si vous êtes un fournisseur de « modèle IA généraliste » en vertu de l’EU AI Act | Le fine-tuning, l’hébergement ou la redistribution d’un modèle GPAI peut déclencher les devoirs de l’Article 53 — docs techniquement, une politique de copyright, un résumé public du contenu d’entraînement | Page GPAI obligations de la stratégie numérique de l’UE ; FAQ du service d’assistance de l’AI Act sur l’Article 53 |
| Le tier « risque systémique » est connu comme séparé et plus lourd | Seuls les modèles classés systémique-risque par la Commission doivent l’évaluation, la signalisation d’incident et les devoirs de cybersécurité en vertu de l’Article 55 | FAQ du service d’assistance de l’AI Act sur le risque systémique |
| Un champ d’invite qui peut identifier une personne est les données personnelles du RGPD | L’Article 4(1) définit cela largement : un nom, un email, un ID de device ou une note d’identification se qualifient tous | EUR-Lex Article 4(1) |
| La ligne « pas d’entraînement » d’un vendeur est lue comme une politique d’entraînement, pas une garantie de conformité | Elle couvre le traitement du vendeur uniquement ; votre org est généralement toujours le contrôleur pour comment les données sont arrivées | Vérifiez qui est nommé « contrôleur » dans le DPA du vendeur, pas seulement la page marketing |
Modèle de politique d’équipe
Collez dans AI_POLICY.md ; ajustez les noms d’outil et les tiers de plan aux licences de votre org.
# Politique d'utilisation des outils IA
## Portée
Claude Code, Cursor, GitHub Copilot, ChatGPT — n'importe qui travaillant dans ce
dépôt ou sur des livrables client.
## Comptes approuvés
- Les comptes Commercial/Team/Enterprise uniquement pour le travail client ou production.
Les comptes personnels sont pour l'apprentissage et l'open source uniquement.
- Confirmez le Privacy Mode / content exclusion / workspace type avant de
toucher le code ou les données d'un nouveau client.
## Ne jamais coller
- Identifiants, clés API, tokens, kubeconfigs, clés privées.
- Client PII : noms, emails, IDs de compte, notes d'identification.
- Anything sous un chemin .gitignore ou Copilot content-exclusion.
## Code généré
- Sort avec un test, passe la barrière lint/SAST existante.
- Les nouvelles dépendances vérifiées sur le registre réel, puis versionnées.
- Un humain examine la différence avant la fusion. Pas d'auto-fusion.
## Serveurs MCP
- Examinés pour la source, les permissions et la version versionnée avant que n'importe quel
membre de l'équipe les connecte.
- Les secrets vivent dans la config env propre du serveur, jamais un shell partagé.
## Incidents
- Un secret collé est une fuite d'identifiant : le relancer immédiatement.
- Signalez une dépendance hallucinez soupçonnée, ou une différence IA fusionnée
qui a cassé quelque chose, à #eng-incidents le même jour.
## Révision
Révisé trimestriellement à mesure que les conditions du vendeur changent.
Modèles que vous réutiliserez
- Scan de secret pré-commit :
pre-commit install && pre-commit run gitleaks --all-files - Scanner l’historique git complet :
gitleaks git -v --redact - Ignorer le hook à dessein :
SKIP=gitleaks git commit -m "..." - Bloquer les lectures
.envdans un hook Claude CodePreToolUse(matcher^Read$) :jq -r '.tool_input.file_path' | grep -qE '\.env(\.|$)' && exit 2 || exit 0 - Vérifier qu’un paquet existe avant d’installer :
npm view <package>oupip index versions <package> - Versionnez un serveur MCP au lieu de
latest: utilisez une balise exacte danscommand/args - Forcer « inconnu » sur une supposition : « Si un fait requis manque, listez-le sous Unknown. Ne le remplissez pas. »
FAQ
Le mode Privacy de Cursor empêche-t-il mon code d’être utilisé pour l’entraînement ?
Avec le mode Privacy activé, Cursor dit que votre code n’est pas utilisé pour l’entraînement par Cursor ou par les fournisseurs d’IA qu’il appelle, en vertu d’accords ZDR. Quelques modèles sortent de cet accord et ont besoin d’une approbation d’admin séparée. Le mode Privacy est désactivé par défaut pour les individus et activé par défaut pour les équipes Enterprise.
Copilot voit-il les fichiers que j’ai exclus, y compris en mode Agent ?
L’exclusion de contenu au niveau du dépôt et de l’organisation empêche les chemins exclus d’atteindre les suggestions inline et Copilot Chat dans l’IDE. Les docs de GitHub disent que Copilot CLI et le mode Agent dans Copilot Chat ne supportent pas l’exclusion de contenu, donc traitez les sessions d’agent et CLI comme non-protégées par ce contrôle.
Les données de ChatGPT Team ou Enterprise sont-elles utilisées pour entraîner les modèles d’OpenAI ?
Par défaut, OpenAI n’utilise pas les entrées ou sorties de ChatGPT Business, Enterprise, Edu, ou l’API pour entraîner les modèles. Une organisation peut opter pour. Sur les comptes personnels Free, Plus ou Pro, soumettre un retour thumbs-up ou thumbs-down peut toujours laisser OpenAI utiliser cette conversation même après une opt-out générale.
Comment la politique de données de Claude Code diffère-t-elle entre un plan personnel et un plan Team ou Enterprise ?
Sur un compte personnel Free, Pro ou Max, vous choisissez si les chats et sessions de codage améliorent les modèles futurs. Sur les comptes Team, Enterprise, API et Claude Gov, Anthropic ne s’entraîne pas sur votre code ou invites à moins que l’organisation ne fasse explicitement opt-in, par exemple via le Development Partner Program.
Comment j’attrape une dépendance générée par l’IA qui n’existe réellement pas ?
Regardez le paquet sur le vrai registre avant de l’installer. Pour npm, lancez npm view <package> ; pour pip, lancez pip index versions <package>. Une recherche échouée signifie ne pas installer — un nom inexistant est aussi un créneau qu’un attaquant peut enregistrer et livrer du malware sous.
Comment ce guide a été vérifié
Rédigé à la main à partir de la documentation officielle, chaque commande revérifiée, puis relu une seconde fois avant publication. Dernière relecture le .
Sources officielles consultées pour cet article
- cursor.com/help/security-and-privacy/privacy
- cursor.com/data-use
- cursor.com/docs/enterprise/privacy-and-data-governance
- docs.github.com/en/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot
- docs.github.com/en/copilot/concepts/context/content-exclusion
- openai.com/enterprise-privacy/
- help.openai.com/en/articles/5722486-how-your-data-is-used-to-improve-model-performance
- privacy.claude.com/en/articles/10023580-is-my-data-used-for-model-training
- privacy.claude.com/en/articles/9267385-does-anthropic-act-as-a-data-processor-or-controller
- code.claude.com/docs/en/data-usage
- code.claude.com/docs/en/zero-data-retention
- github.com/gitleaks/gitleaks/blob/master/README.md
- digital-strategy.ec.europa.eu/en/factpages/general-purpose-ai-obligations-under-ai-act
- ai-act-service-desk.ec.europa.eu/en/ai-act/article-53
- eur-lex.europa.eu/eli/reg/2016/679/art_4/oj/eng

