Présentation
Copilot CLI utilise un large éventail d’outils pour effectuer des tâches pour vous. Il peut exécuter des commandes shell, lire et écrire des fichiers, rechercher votre base de code, extraire du contenu web et déléguer des tâches à des sous-agents spécialisés.
Les opérations en lecture seule telles que la recherche, la lecture de fichiers et l’exécution de commandes shell en lecture seule sont généralement autorisées automatiquement, sous réserve d’une stratégie applicable. D’autres opérations, telles que l’exécution de commandes d’interpréteur de commandes destructrices, la modification de fichiers ou l’accès aux URL, nécessitent une autorisation avant que Copilot puisse les utiliser. Le fait que vous soyez invité dépend de vos autorisations existantes et du mode d’autorisation. Ces contrôles permettent d’éviter les modifications involontaires, car, par exemple, une commande shell peut effectuer tout ce que votre compte d’utilisateur peut faire : installer des packages, supprimer des fichiers, envoyer du code ou effectuer des requêtes réseau.
Vous pouvez autoriser ou refuser des autorisations pour les outils lorsque vous démarrez l’interface CLI ou pendant votre session interactive. En mode d’approbation manuelle, Copilot CLI vous demande d’approuver les demandes qui ne sont pas déjà autorisées. Vous pouvez choisir d’autoriser l’outil cette fois ou pour le reste de la session.
Autorisations persistantes
Certaines options d’invite enregistrent votre consentement afin que vous ne soyez pas invité à nouveau. L’emplacement où votre approbation est stockée dépend de ce que vous avez approuvé.
Lorsque vous approuvez un outil pour l’emplacement actuel, l’approbation est enregistrée permissions-config.json dans votre répertoire de configuration. Par défaut, ce fichier est ~/.copilot/permissions-config.json. Par exemple, vous pouvez choisir « ne pas demander à nouveau dans ce dépôt » (ou « dans ce répertoire ») pour une commande shell, une écriture de fichier, un outil MCP ou une mise à jour de la mémoire. L’approbation est limitée à l’emplacement actuel : la racine du dépôt Git ou le répertoire de travail si vous n’êtes pas dans un référentiel. Tous les répertoires auxquels vous accordez l’accès sont enregistrés dans le même fichier.
Les approbations d’URL fonctionnent différemment. Lorsque vous approuvez une URL définitivement, son domaine est ajouté à la allowedUrls liste dans votre settings.json. Par défaut, ce fichier est ~/.copilot/settings.json. Cette approbation s’applique à toutes vos sessions, au lieu d’être liée à un seul emplacement.
Les options de ligne de commande telles que --allow-tool et --deny-tool s’appliquent uniquement à la session active et ne sont pas écrites dans permissions-config.json. Les règles de refus prévalent toujours sur les approbations enregistrées.
Pour plus d’informations sur l’emplacement où les approbations enregistrées sont stockées, la façon dont les emplacements sont mis en correspondance et le schéma complet permissions-config.json , consultez GitHub Copilot le répertoire de configuration du CLI.
Couches de contrôles des outils
Il existe deux couches de contrôle que vous pouvez utiliser lors de la spécification des autorisations d’outil dans les options de ligne de commande. Vous pouvez:
- Limitez le choix des outils disponibles pour le modèle IA.
- Autoriser ou refuser l’autorisation pour des outils spécifiques.
Restriction du choix des outils disponibles pour le modèle IA
Les options --available-tools et --excluded-tools limitent l'ensemble d'outils dont le modèle IA est conscient et parmi lesquels il peut donc choisir lorsqu'il détermine comment accomplir une tâche.
--available-toolsdésactive tous les outils autres que ceux que vous spécifiez.--excluded-toolsdésactive uniquement les outils spécifiés.
Si vous utilisez les deux options ensemble, l’interface CLI applique la liste verte spécifiée par --available-tools et ignore la liste de refus spécifiée par --excluded-tools.
Si un outil n’est pas dans l’ensemble disponible, le modèle IA ne pourra pas l’utiliser du tout, même si vous le spécifiez avec l’option --allow-tool . Dans une session interactive où vous ne spécifiez pas d’ensemble d’outils disponible, le modèle IA peut essayer d’utiliser un outil uniquement pour être refusé. Les options --available-tools et --excluded-tools vous empêchent de gaspiller des interactions avec le modèle de cette façon.
Exemple de cas d’usage
Vous démarrez une session CLI pour exécuter un benchmark sur votre projet et vous souhaitez éviter que le modèle IA ne tente même d’utiliser la recherche web.
copilot --excluded-tools='web_fetch, web_search'
Remarque
Pour plus d’informations sur la syntaxe de ces options de ligne de commande et d’autres options de ligne de commande mentionnées dans cet article, consultez Référence de commande CLI pour GitHub Copilot.
Autorisation ou refus d’autorisation pour des outils spécifiques
Les options --allow-tool et --deny-tool permettent d’autoriser ou de refuser l’accès à des outils spécifiques ou à des sous‑commandes d’outils.
La valeur de chacune de ces options est une liste séparée par des virgules de types d’outils, qui peut éventuellement spécifier des outils et des modèles de sous-commande exacts.
Si vous spécifiez un outil avec --allow-tool, le modèle IA peut choisir d’utiliser cet outil sans vous demander l’autorisation. Si vous spécifiez un outil avec --deny-tool, le modèle IA ne peut pas utiliser cet outil du tout, même s’il serait le meilleur choix pour effectuer une tâche.
Les règles de refus sont toujours prioritaires sur les règles d’autorisation, même lorsqu’elles sont définies ou qu’une --allow-all approbation correspondante a été enregistrée dans permissions-config.json.
Exemples
| Option | Résultat |
|---|---|
--allow-tool=shell | Autoriser toutes les commandes du shell. |
--allow-tool='shell(git commit)' | Autorisez la git commit commande. |
--allow-tool='shell(git:*)' --deny-tool='shell(git push)' | Autoriser toutes les git commandes à l’exception de git push. |
--deny-tool=write | Refuser toutes les opérations d’écriture de fichiers. |
--allow-tool='read, write(.github/ | Autorisez toutes les opérations de lecture et autorisez les opérations d’écriture pour un fichier spécifique. |
--allow-tool='My | Autorisez les outils create_issue et delete_issue du serveur MCP. |
--available-tools='bash,edit,view,grep,glob' --allow-tool='shell(git:*)' --deny-tool='shell(git push)' | Combinez les deux couches de contrôle pour une session CLI restreinte. |
| Copilot peut explorer le code, apporter des modifications et effectuer des validations de modifications, mais ne peut pas atteindre Internet, exécuter des sous-agents arbitraires ou pousser à l’historique Git. |
Pour plus d’informations sur les types d’outils pris en charge, consultez Référence de commande CLI pour GitHub Copilot.
Options permissives
Les options de ligne de commande suivantes donnent Copilot CLI l’autorisation d’utiliser tous les outils disponibles.
Si vous avez une licence Copilot Business ou Copilot Enterprise, ces commandes peuvent être bloquées par un administrateur de l’entreprise.
Avant d’accorder Copilot des autorisations étendues avec une option allow-all, envisagez d’utiliser le bac à sable local ou d’exécuter la session dans un bac à sable cloud pour limiter ce à quoi Copilot peut accéder. Pour plus d’informations, consultez « À propos du bac à sable local pour GitHub Copilot » et « À propos des sandboxs cloud pour GitHub Copilot ».
-
--allow-all-tools— Accès complet aux outils disponibles. -
--allow-allou--yolo— Équivaut à utiliser l’ensemble des options--allow-all-tools,--allow-all-paths, et--allow-all-urlslors du démarrage de l'interface CLI.Dans une session interactive, vous pouvez utiliser les commandes
/permissions allow-allou/yolopour autoriser tous les outils sans avoir à redémarrer la session.
Attention
Il est fortement recommandé d’utiliser ces options uniquement dans un environnement isolé. Vous ne devez jamais utiliser d’alias pour appliquer l’une de ces options chaque fois que vous démarrez Copilot CLI, car cela permettrait Copilot d’utiliser n’importe quel outil sans votre autorisation explicite chaque fois que vous utilisez l’interface CLI, ce qui peut entraîner des conséquences inattendues.
Réduction des prompts avec assisted permissions
Les options d’autorisations globales autorisent les autorisations générales sans passer en revue les actions individuelles. Pour réduire les invites d’approbation sans accorder d’autorisations générales, utilisez plutôt l’option assisted permissions .
Pour activer assisted permissions, entrez la /permissions assisted commande slash dans une session interactive. Un grand modèle de langage évalue les demandes d’autorisation éligibles et les approuve automatiquement lorsqu’il les juge sûres. Les autorisations existantes et les règles d’entreprise s’appliquent toujours, et les demandes qui nécessitent toujours votre approbation vous sont soumises. Entrez /permissions manual pour revenir à l’approbation manuelle ou /permissions show pour vérifier le paramètre actuel. Vous pouvez également entrer /permissions, sans argument, pour choisir un mode dans une liste.
Pour utiliser assisted permissions par défaut dans les nouvelles sessions interactives lorsqu’aucune valeur par défaut managée n’est configurée, définissez defaultPermissionMode sur "assisted" dans votre fichier de configuration utilisateur. Pour l’utiliser pour une exécution non interactive, comme dans un flux de travail CI/CD, utilisez l’option --assisted-approval de ligne de commande. Pour plus d’informations, consultez « Autoriser l’exécution de commandes sécurisées sans approbation manuelle ».
Réinitialisation des autorisations
La /reset-allowed-tools commande slash révoque les autorisations que vous avez accordées pendant la session interactive active. Cela s’applique également aux autorisations que vous avez données en répondant aux invites et à l’utilisation des commandes slash /permissions, /allow-all ou /yolo. Elle remet également le mode d’autorisation sur Manuel, en désactivant les autorisations globales ou assisted permissions si l’une ou l’autre est activée.
L’utilisation de /reset-allowed-tools rétablit les autorisations à leur valeur par défaut, ou à la configuration de référence définie par les options de ligne de commande basées sur des règles et d’URL que vous avez utilisées lorsque vous avez démarré Copilot CLI, telles que --allow-tool, --deny-tool, --allow-url et --deny-url.
La commande efface également toutes les approbations enregistrées pour l’emplacement permissions-config.jsonactuel, y compris les approbations des outils enregistrés et toutes les autorisations de répertoire enregistrées. En outre, il réarme la boîte de dialogue d’autorisation autopilot, de sorte que Copilot vous demandera à nouveau les autorisations Autopilot si nécessaire.
Par exemple, si vous démarrez une Copilot CLI session interactive avec l’option --allow-tool='shell(git:*)', puis que vous autorisez et refusez d’autres autorisations pendant la session en répondant aux invites, lorsque vous utilisez ensuite la /reset-allowed-tools commande, les autorisations de l’interface CLI retournent à l’état d’origine --allow-tool='shell(git:*)' , sans aucune autre autorisation autorisée ou refusée. Lorsque vous continuez à travailler dans la session, vous serez à nouveau invité si Copilot a besoin d'autorisations supplémentaires.
Pour supprimer les approbations enregistrées pour un autre emplacement, modifiez ou supprimez l’entrée d’emplacement appropriée dans permissions-config.json. Pour plus d’informations, consultez « GitHub Copilot le répertoire de configuration du CLI ».