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 :

Texte
Fix this.

Suggestion mauvaise.

Meilleur prompt :

Texte
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 :

Texte
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ômePremière piste
Aucune suggestion nulle partaccès, connexion, policy, réseau
Aucune suggestion pour un langageeditor settings
Aucune suggestion sous un chemin préciscontent exclusion
Une suggestion attendue manque, les autres apparaissentblocage 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 :

Texte
/secrets/**

Mais le fichier est dans :

Texte
/config/secrets/prod.env

Ton pattern ne couvre pas ce chemin.

Pattern plus adapté :

Texte
**/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énarioBonne réponse
Fichier sensible dans un repoContent exclusion repository
Règle commune à une organisationContent exclusion organisation
Règle globale multi-organisationsContent exclusion enterprise
Utilisateur veut désactiver Copilot pour MarkdownEditor settings
Organisation veut bloquer Copilot CLIOrganization/enterprise policy
Suggestion ressemble à du code publicSuggestions matching public code / code references
Copilot propose code vulnérableSecurity warning + review + fix
Copilot ne suggère rienTroubleshooting accès/settings/policies/réseau/filtre
Exclusion ne marche pasVérifier niveau, pattern, surface supportée
Logs contiennent données clientAnonymiser avant prompt
Secret hardcodé dans codeSupprimer, rotate secret, utiliser env/secret manager
Code généré en PRReview humaine + tests + compliance

Cas 1 — Repository sensible

Situation

Un repository contient :

Texte
/secrets/prod.env
/internal-pricing/rules.md
/fraud-detection/model-notes.md

Bonne réponse

Configurer des content exclusions au niveau repository pour ces chemins.

Exemple :

Texte
/secrets/**
/internal-pricing/**
/fraud-detection/model-notes.md

Cas 2 — Plusieurs repos avec même structure

Situation

Tous les repos de l’organisation ont un dossier :

Texte
/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 :

Texte
**/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 :

Texte
email
JWT
customerId
IP

Bonne 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 :

Texte
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.