11 Confidentialité et garde-fous
Troubleshooting des suggestions et exclusions
Cette leçon contient des faits datés. Dates et sources
11.12 Troubleshooting des suggestions 🛠️
Définition
Le troubleshooting des suggestions consiste à comprendre pourquoi Copilot :
- ne propose rien ;
- propose du code mauvais ;
- propose du code hors contexte ;
- propose du code bloqué ;
- propose des suggestions trop génériques ;
- ne respecte pas une convention ;
- ne voit pas le bon fichier.
Problème 1 — Copilot ne propose rien
Causes possibles :
- extension non connectée
- accès Copilot absent
- policy organisation bloque la feature
- fichier/langage non supporté ou désactivé
- editor settings désactivent Copilot
- réseau/proxy bloque l’accès
- contexte insuffisant
- suggestion bloquée par filtre public code
Problème 2 — Suggestions mauvaises
Causes possibles :
- prompt trop vague
- mauvais fichiers ouverts
- contexte obsolète
- instructions projet absentes
- historique de chat pollué
- mauvais langage/framework inféré
Exemple
Prompt :
Fix this.Suggestion mauvaise.
Meilleur prompt :
Fix the selected Python function.
The bug occurs when numbers is an empty list.
Raise ValueError for empty input.
Preserve the public function signature.
Add pytest tests.Problème 3 — Suggestion bloquée
Si une suggestion correspond à du code public et que le blocage est activé, elle peut ne pas être affichée. GitHub indique que lorsque le blocage des suggestions correspondant à du code public est activé, une correspondance ou quasi-correspondance peut empêcher l’affichage de la suggestion.
Problème 4 — Copilot ne suit pas les conventions
Solutions :
- ajouter instructions files
- ouvrir un fichier de référence
- préciser le framework
- donner un exemple few-shot
- demander explicitement de suivre un fichier existant
Prompt :
Generate tests for this service.
Follow the style of user.service.test.ts.
Use Jest and mock dependencies the same way.Du symptôme à la première piste
Ces pistes ne forment pas un ordre universel : on choisit la vérification selon le symptôme.
| Symptôme | Première piste |
|---|---|
| Aucune suggestion nulle part | accès, connexion, policy, réseau |
| Aucune suggestion pour un langage | editor settings |
| Aucune suggestion sous un chemin précis | content exclusion |
| Une suggestion attendue manque, les autres apparaissent | blocage du code public |
Checklist troubleshooting suggestions
- Suis-je connecté à GitHub ?
- Ai-je accès à Copilot ?
- La feature est-elle autorisée par policy ?
- Copilot est-il activé dans l’IDE ?
- Le langage est-il activé ?
- Le prompt est-il clair ?
- Les bons fichiers sont-ils ouverts ?
- Le contexte est-il pollué ?
- Une exclusion ou un filtre bloque-t-il le contenu ?
- Le réseau/proxy autorise-t-il Copilot ?
11.13 Troubleshooting des exclusions 🧩
Définition
Le troubleshooting des exclusions consiste à vérifier pourquoi une content exclusion :
- ne semble pas fonctionner ;
- ne s’applique pas à la bonne fonctionnalité ;
- est configurée au mauvais niveau ;
- a un pattern incorrect ;
- est surchargée ou mal comprise ;
- n’a pas encore été prise en compte.
Problème 1 — Mauvais niveau
Tu as configuré une exclusion au niveau repository, mais le problème concerne plusieurs repositories.
Solution :
Configurer au niveau organisation ou enterprise.
Problème 2 — Mauvais pattern
Tu veux exclure :
/secrets/**Mais le fichier est dans :
/config/secrets/prod.envTon pattern ne couvre pas ce chemin.
Pattern plus adapté :
**/secrets/**Problème 3 — Mauvaise surface Copilot
Certaines fonctionnalités peuvent ne pas supporter les content exclusions. D’après la documentation GitHub vérifiée pour cette version du cours, les modes Edit et Agent de Copilot Chat dans VS Code (et Copilot Chat dans Xcode et Eclipse) ne les supportent pas, alors que Copilot CLI et la GitHub Copilot app les respectent pour les plans Business et Enterprise. Le support du Copilot cloud agent n’est pas précisé : ne le suppose pas.
Donc si tu testes une exclusion avec l’une de ces surfaces, consulte le tableau de la section 11.3 : le comportement peut ne pas correspondre à ce que tu attends.
Problème 4 — Permissions
Qui peut configurer ?
- repository administrators
- organization owners
- enterprise owners
La documentation actuelle désigne ces trois rôles. Ne suppose pas qu’un autre rôle (par exemple Maintain) peut modifier les exclusions.
Attention à ne pas confondre : qui configure (ces trois rôles) et qui est concerné. Une exclusion repository concerne tous les utilisateurs Copilot qui travaillent dans ce repository ; une exclusion organisation concerne les utilisateurs qui reçoivent un seat via cette organisation ; une exclusion enterprise concerne tous les utilisateurs Copilot de l’enterprise.
Problème 5 — Besoin de vérifier les changements
Les modifications des content exclusions sont tracées dans les audit logs (événement copilot.content_exclusion_changed, « les chemins exclus pour GitHub Copilot ont été mis à jour »).
Donc si une exclusion a changé récemment, on peut retrouver qui l’a modifiée et quand.
Problème 6 — Délai de prise en compte
Après l’ajout ou la modification d’une exclusion, la prise en compte peut demander jusqu’à 30 minutes dans les IDE où les paramètres sont déjà chargés. Pour vérifier : recharger l’IDE (par exemple « Developer: Reload Window » dans VS Code), puis ouvrir un fichier non exclu (des suggestions apparaissent) et un fichier exclu (aucune suggestion ne doit apparaître).
Checklist troubleshooting exclusions
- Le bon niveau est-il configuré ? repo / org / enterprise
- Le pattern couvre-t-il vraiment le fichier ?
- La fonctionnalité utilisée supporte-t-elle les content exclusions ? (voir le tableau de 11.3)
- La modification date-t-elle de moins de 30 minutes ? L’IDE a-t-il été rechargé ?
- L’utilisateur reçoit-il Copilot via la bonne organisation ?
- L’exclusion est-elle visible dans les settings ?
- Y a-t-il eu un changement récent ?
- Les bons droits admin sont-ils utilisés ?
- Le fichier est-il réellement dans le chemin exclu ?
Exemple examen
Question :
Une organisation a configuré une content exclusion, mais un développeur teste avec le mode Agent de Copilot Chat dans VS Code et pense que l’exclusion ne marche pas. Quelle est l’explication possible ?
Réponse :
Les modes Agent et Edit de Copilot Chat dans VS Code ne supportent pas les content exclusions ; il faut vérifier les limites de la fonctionnalité utilisée.
11.14 Cas d’examen : sécuriser Copilot dans un contexte entreprise 🏢🔐
Cette section est la plus importante pour l’examen.
Tableau de décision rapide
| Scénario | Bonne réponse |
|---|---|
| Fichier sensible dans un repo | Content exclusion repository |
| Règle commune à une organisation | Content exclusion organisation |
| Règle globale multi-organisations | Content exclusion enterprise |
| Utilisateur veut désactiver Copilot pour Markdown | Editor settings |
| Organisation veut bloquer Copilot CLI | Organization/enterprise policy |
| Suggestion ressemble à du code public | Suggestions matching public code / code references |
| Copilot propose code vulnérable | Security warning + review + fix |
| Copilot ne suggère rien | Troubleshooting accès/settings/policies/réseau/filtre |
| Exclusion ne marche pas | Vérifier niveau, pattern, surface supportée |
| Logs contiennent données client | Anonymiser avant prompt |
| Secret hardcodé dans code | Supprimer, rotate secret, utiliser env/secret manager |
| Code généré en PR | Review humaine + tests + compliance |
Cas 1 — Repository sensible
Situation
Un repository contient :
/secrets/prod.env
/internal-pricing/rules.md
/fraud-detection/model-notes.mdBonne réponse
Configurer des content exclusions au niveau repository pour ces chemins.
Exemple :
/secrets/**
/internal-pricing/**
/fraud-detection/model-notes.mdCas 2 — Plusieurs repos avec même structure
Situation
Tous les repos de l’organisation ont un dossier :
/customer-exports/**Bonne réponse
Configurer une exclusion au niveau organisation.
Cas 3 — Plusieurs organisations
Situation
Une enterprise contient plusieurs organisations, et la sécurité veut exclure :
**/regulated-data/**partout.
Bonne réponse
Configurer une exclusion au niveau enterprise.
Cas 4 — Suggestion bloquée
Situation
Copilot ne montre pas une suggestion et indique qu’elle correspond à du code public.
Bonne réponse
C’est probablement lié au blocage des suggestions correspondant à du code public. Consulter le réglage « Suggestions matching public code » (personnel, ou hérité de l’organisation / de l’enterprise).
Cas 5 — Données sensibles dans prompt
Situation
Un développeur colle un log de production contenant :
email
JWT
customerId
IPBonne réponse
Ne pas envoyer le log brut. Anonymiser. Remplacer les secrets par . Fournir seulement l’extrait nécessaire.
Cas 6 — Code review sécurité
Situation
Copilot Code Review signale :
Possible SQL injection.Bonne réponse
Examiner le warning, vérifier le code, corriger avec requêtes paramétrées et ajouter un test si possible.
Cas 7 — Mode Agent dans l’IDE et exclusions
Situation
Une équipe pense que les exclusions ne marchent pas parce que le mode Agent de Copilot Chat dans VS Code peut accéder à certains fichiers.
Bonne réponse
Vérifier si la fonctionnalité utilisée supporte les content exclusions. Le mode Agent (et le mode Edit) de Copilot Chat dans VS Code ne les supporte pas selon la documentation GitHub. À l’inverse, Copilot CLI et la GitHub Copilot app les respectent pour les plans Business et Enterprise selon la documentation actuelle.
À retenir pour le GH-300
- Devant une exclusion qui semble inefficace, vérifie le niveau, le motif, la surface, le délai (jusqu’à 30 minutes dans les IDE), le seat et les droits.
- Le symptôme guide la piste : un chemin précis évoque une exclusion, un langage les editor settings, aucune suggestion nulle part l’accès ou une policy.
- Les modes Edit et Agent de VS Code ne prennent pas en charge les exclusions : ce n’est pas forcément une erreur de configuration.
- Les audit logs disent qui a changé une exclusion et quand. Le support d’une surface non documentée reste inconnu.
Faits datés de cette leçon
Ces points changent avec le produit. Chacun indique quand il a été vérifié et où le contrôler.
- Content exclusions : surfaces prises en charge
Pratique : Dépanner suggestions et exclusions
Une exclusion ou une suggestion ne se comporte pas comme prévu. Choisis la vérification la plus défendable pour le symptôme décrit. Le cours ne donne pas d’ordre universel : on raisonne par symptôme et par surface. Rien n’est configuré, rien n’est exécuté.
Chargement de la question…
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Devant une exclusion qui semble inefficace, vérifie le niveau, le motif, la surface, le délai (jusqu’à 30 minutes dans les IDE), le seat et les droits.
- Le symptôme guide la piste : un chemin précis évoque une exclusion, un langage les editor settings, aucune suggestion nulle part l’accès ou une policy.
- Les modes Edit et Agent de VS Code ne prennent pas en charge les exclusions : ce n’est pas forcément une erreur de configuration.
- Les audit logs disent qui a changé une exclusion et quand. Le support d’une surface non documentée reste inconnu.
Objectif GH-300
- Dépanner suggestions et exclusions (Troubleshoot Copilot suggestions and content exclusions)
Achèvement
Il reste à faire : , .