Lors du déploiement de l'assistant de codage assisté par intelligence artificielle Sourcegraph Cody en entreprise, les responsables de l'ingénierie ainsi que les équipes chargées de la sécurité et de la conformité font face à un enjeu de gouvernance majeur : comment s'assurer que les algorithmes propriétaires, les secrets commerciaux ou les bases de code soumises à des réglementations strictes (telles que PCI-DSS, HIPAA ou ITAR) ne soient jamais inclus comme contexte et envoyés à des modèles de langage (LLM) tiers ?
Sourcegraph Cody propose un mécanisme d'administration centralisé et appliqué côté serveur : les filtres de contexte (cody.contextFilters). Définis directement dans la configuration du site (Site Configuration) de Sourcegraph, ces filtres permettent aux administrateurs d'établir des règles précises d'inclusion et d'exclusion basées sur des expressions régulières RE2. Ils contrôlent ainsi strictement les dépôts auxquels Cody peut accéder pour générer des suggestions d'autocomplétion, des réponses de chat et des commandes.
Ce guide détaille la procédure de configuration de cody.contextFilters, explicite la logique d'évaluation et la syntaxe d'expressions régulières, et présente les bonnes pratiques pour instaurer une gouvernance de sécurité en profondeur.
Prérequis et compatibilité des clients
Avant de configurer les filtres de contexte, assurez-vous que votre infrastructure et vos postes de travail respectent les exigences suivantes :
- Instance Sourcegraph : Version Sourcegraph Enterprise
5.4.0ou supérieure avec une licence Cody Enterprise active. - Indicateur de fonctionnalité (Feature Flag) : Le paramètre
cody-context-filters-enableddoit être positionné surtrue. - Clients IDE pris en charge :
- Extension VS Code : version
>= 1.20.0 - Plugin JetBrains : version
>= 6.0.0 - Client web Sourcegraph natif
- Extension VS Code : version
Matrice de compatibilité et application des règles
Afin d'empêcher les développeurs de contourner les exigences de conformité en conservant d'anciennes versions d'extensions IDE, Sourcegraph applique une politique stricte de rétrocompatibilité :
| Client | Version de l'extension | Comportement sous Sourcegraph v5.4.0 | Comportement sous Sourcegraph v5.4.12303+ |
|---|---|---|---|
| VS Code | < 1.16.x | Cody non compatible | Respecte la politique ; invite à mettre à jour |
| VS Code | 1.18.0 à < 1.20.0 | Cody non compatible | Respecte la politique ; invite à mettre à jour |
| VS Code | >= 1.20.0 | Respecte pleinement la politique | Respecte pleinement la politique |
| JetBrains | <= 5.5.9 | Cody non compatible | Respecte la politique ; invite à mettre à jour |
| JetBrains | 5.5.10 à < 6.0.0 | Cody non compatible | Respecte la politique ; invite à mettre à jour |
| JetBrains | >= 6.0.0 | Respecte pleinement la politique | Respecte pleinement la politique |
Sur les instances Sourcegraph récentes, les clients obsolètes incapables d'interpréter les filtres de contexte se voient bloquer l'accès au contexte et sont sommés de mettre à niveau leurs extensions, éliminant ainsi toute faille de sécurité.
Schéma de configuration et syntaxe RE2
Les filtres de contexte s'intègrent dans le JSON de configuration du site Sourcegraph sous la clé principale cody.contextFilters. Le schéma accepte deux tableaux facultatifs : include (liste d'autorisation) et exclude (liste d'exclusion).
{
"cody.contextFilters": {
"include": [
{
"repoNamePattern": "^github\\.com\\/example-corp\\/.*"
}
],
"exclude": [
{
"repoNamePattern": ".*-sensitive$"
},
{
"repoNamePattern": "^github\\.com\\/example-corp\\/core-payments.*"
}
]
}
}
Règles clés du schéma :
- Si
cody.contextFiltersest présent, il doit comporter au moins un bloc (includeouexclude). - Chaque élément de la liste est un objet contenant la clé obligatoire
repoNamePattern. repoNamePatterndoit strictement respecter la syntaxe d'expressions régulières RE2 (moteur standard développé par Google et intégré en Go).- Dans une chaîne JSON, les barres obliques inverses doivent être échappées par une double barre (
\\). Par exemple, un point littéral s'écrit\\., et les barres obliques peuvent s'écrire\\/ou directement/. - Le motif est comparé au nom canonique complet du dépôt tel qu'enregistré dans Sourcegraph (ex.
github.com/organisation/nom-depotou chemins GitLab internes).
Logique d'évaluation et priorité des règles
Le comportement de Cody varie selon l'agencement des tableaux include et exclude :
1. Aucun filtre défini (comportement par défaut)
Si cody.contextFilters est omis, Cody applique son modèle de droits standard : tout dépôt auquel l'utilisateur a accès en lecture dans Sourcegraph peut servir de contexte, sans restriction supplémentaire.
2. Seules les règles include sont définies (Liste blanche stricte)
Cody est strictement limité aux dépôts dont le nom correspond à au moins un motif présent dans include. Tous les autres dépôts sont exclus d'office.
- Idéal pour les organisations appliquant une politique Zero-Trust à l'IA, n'ouvrant l'assistance qu'à des composants transverses ou publics préalablement homologués.
- Une seule correspondance dans la liste
includesuffit pour autoriser le dépôt.
{
"cody.contextFilters": {
"include": [
{
"repoNamePattern": "^github\\.com\\/example-corp\\/frontend-.*"
},
{
"repoNamePattern": "^github\\.com\\/example-corp\\/public-docs$"
}
]
}
}
3. Seules les règles exclude sont définies (Liste d'exclusion)
Cody peut extraire du contexte de n'importe quel dépôt, à l'exception de ceux correspondant à au moins un motif de la liste exclude.
- Idéal pour les entreprises souhaitant stimuler la productivité globale de leurs développeurs tout en isolant des projets hypersensibles (moteurs de règlement financier, coffres-forts cryptographiques, outils de sécurité offensifs).
- L'utilisation d'un joker absolu tel que
.*dansexcludeagit comme un coupe-circuit d'urgence (kill-switch), bloquant tout accès au contexte sur l'ensemble de l'instance.
{
"cody.contextFilters": {
"exclude": [
{
"repoNamePattern": "^github\\.com\\/example-corp\\/crypto-vault$"
},
{
"repoNamePattern": ".*payment-processing.*"
},
{
"repoNamePattern": ".*-restricted$"
}
]
}
}
4. Les règles include et exclude sont toutes deux définies (Filtrage combiné)
Lorsque les deux blocs coexistent, un dépôt doit satisfaire deux critères simultanément :
- Correspondre à au moins un motif de la liste
include. - Ne correspondre à aucun motif de la liste
exclude.
Les règles d'exclusion l'emportent systématiquement sur les règles d'inclusion. Dans l'exemple ci-dessous, tous les dépôts sous example-corp sont acceptés, sauf ceux dont le nom contient compliance ou se termine par -secret :
{
"cody.contextFilters": {
"include": [
{
"repoNamePattern": "^github\\.com\\/example-corp\\/.+"
}
],
"exclude": [
{
"repoNamePattern": ".*compliance.*"
},
{
"repoNamePattern": ".*-secret$"
}
]
}
}
Guide de configuration étape par étape pour les administrateurs
Voici le processus recommandé pour déployer et vérifier les filtres de contexte sur une instance Sourcegraph :
Étape 1 : Auditer les conventions de nommage des dépôts
Cody vérifie les expressions régulières par rapport au chemin complet indexé dans Sourcegraph.
- Dans la console Sourcegraph, accédez à Site Admin > Repositories.
- Relevez les préfixes de vos forges logicielles (ex.
github.com/mon-organisation/...ou domaines GitLab internes). - Établissez l'inventaire des dépôts sensibles et concevez vos règles de filtrage RE2.
Étape 2 : Accéder à l'éditeur de configuration du site
- Connectez-vous à Sourcegraph avec un compte administrateur (Site Admin).
- Cliquez sur votre avatar en haut à droite et sélectionnez Site Admin.
- Dans le menu de navigation latéral gauche, cliquez sur Configuration (chemin
/site-admin/configuration).
Étape 3 : Insérer le bloc cody.contextFilters
Ajoutez les directives appropriées dans l'objet JSON racine :
{
// ... autres paramètres du site ...
"cody-context-filters-enabled": true,
"cody.contextFilters": {
"include": [
{
"repoNamePattern": "^github\\.com\\/mon-organisation\\/.*"
}
],
"exclude": [
{
"repoNamePattern": "^github\\.com\\/mon-organisation\\/noyau-financier$"
},
{
"repoNamePattern": ".*proprietary.*"
},
{
"repoNamePattern": ".*sec-tools.*"
}
]
}
}
Étape 4 : Enregistrer et appliquer les modifications
Cliquez sur Save changes en bas de page. Sourcegraph applique la mise à jour à chaud, sans interruption de service ni redémarrage de conteneurs.
Étape 5 : Valider le blocage côté développeur
Assurez-vous que les restrictions sont effectives directement dans les environnements de développement :
- Ouvrez un projet appartenant à un dépôt exclu dans VS Code ou JetBrains.
- Tentez d'exécuter une modification inline (Edit) ou de générer du code. L'extension interrompt la requête et affiche l'alerte suivante :
Edit failed to run: file is ignored (due to cody.contextFilters Enterprise configuration setting) - Dans le panneau Cody Chat, tentez de mentionner des fichiers ou des symboles du dépôt exclu via
@-mention. Constatez qu'ils n'apparaissent pas dans les suggestions et que Cody n'extrait aucun extrait de code pour alimenter le prompt.
Impact sur l'expérience développeur
Connaître les répercussions pratiques sur le travail des développeurs permet d'accompagner l'adoption sereinement :
- Le chat généraliste reste disponible : Même au sein d'un dépôt exclu, les ingénieurs peuvent interroger le chat de Cody pour des questions de syntaxe, des concepts algorithmiques ou l'utilisation de bibliothèques tierces. Le code du dépôt local n'est simplement jamais injecté dans le contexte.
- Commandes contextuelles avancées limitées : Certaines fonctionnalités reposant sur l'analyse globale du projet (comme des modèles de Prompts personnalisés) peuvent être désactivées ou renvoyer une erreur dans les dépôts exclus.
- Interruption de l'autocomplétion : Dès lors qu'un fichier d'un dépôt exclu est actif, aucun fragment de code environnant n'est envoyé vers les serveurs de traitement du modèle.
Gouvernance en couches : Comparaison des mécanismes de contrôle
Une stratégie robuste de protection du code repose sur une défense en profondeur associant plusieurs mécanismes complémentaires :
| Couche de gouvernance | Emplacement | Portée et granularité | Administré par | Contournable par le développeur ? |
|---|---|---|---|---|
| Filtres de contexte d'entreprise | Configuration du site (cody.contextFilters) | Dépôts complets via expressions régulières RE2 | Administrateurs de site / Sécurité | Non (Appliqué de force par le serveur) |
| Règles d'exclusion de dépôt | Fichier .cody/ignore à la racine du dépôt | Fichiers spécifiques, dossiers ou extensions | Responsables de dépôt / Devs | Versionné dans Git ; s'applique à tous les contributeurs |
| Exclusions locales de l'IDE | Paramètres de l'éditeur (settings.json) | Chemins locaux ou fichiers temporaires | Développeur individuel | Oui (Propre au poste de travail local) |
| Droits d'accès au code Sourcegraph | RBAC, synchronisation OAuth | Droits de lecture au niveau du dépôt | Équipes IAM d'entreprise | Non (Cody n'accède jamais à ce que l'utilisateur ne peut lire) |
| Engagements contractuels du LLM | Accords Zero-Retention de Cody Gateway | Flux réseau complet des requêtes LLM | Contrats fournisseurs cloud | Non (Données non conservées et non utilisées pour l'entraînement) |
En combinant cody.contextFilters au niveau central, le fichier .cody/ignore pour les fichiers sensibles locaux et les garanties d'absence de rétention de Cody Gateway, les entreprises disposent d'un cadre étanche pour démultiplier l'efficacité de leurs ingénieurs tout en protégeant rigoureusement leur propriété intellectuelle.