05 Copilot CLI
Valider les commandes générées
5.9 Risques liés à l’exécution de commandes générées
Point le plus important du chapitre
Copilot CLI peut générer des commandes puissantes.
Mais une commande terminal peut :
- supprimer des fichiers ;
- modifier des permissions ;
- pousser du code ;
- déployer en production ;
- supprimer des ressources cloud ;
- exposer des secrets ;
- changer une configuration ;
- modifier un cluster Kubernetes ;
- détruire une infrastructure Terraform.
Donc la règle est simple :
Ne jamais exécuter une commande générée sans la comprendre.Commandes dangereuses à surveiller
Suppression :
rm -rf
find . -deletePermissions :
chmod -R 777
chown -RExécution distante :
curl ... | bash
wget ... | shCloud :
aws s3 rm --recursive
gcloud compute instances delete
az group deleteKubernetes :
kubectl delete
kubectl apply -f
kubectl replace --forceTerraform :
terraform destroy
terraform apply -auto-approveGit :
git reset --hard
git clean -fd
git push --forceExemple dangereux
Copilot propose :
git reset --hard HEAD~1Ce que ça fait :
Revient au commit précédent et supprime les changements du commit courant dans la branche locale.
Possible perte de travail.
Alternative plus prudente :
git revert HEADPourquoi ?
git revert crée un nouveau commit qui annule le précédent sans réécrire l’historique.
Exemple cloud dangereux
Copilot propose :
aws s3 rm s3://my-prod-bucket --recursiveCe que ça fait :
Supprime récursivement le contenu du bucket S3.
Très dangereux.
Avant toute action :
aws s3 ls s3://my-prod-bucket --recursiveou utiliser un dry-run si disponible.
Exemple Terraform dangereux
Copilot propose :
terraform apply -auto-approveProblème :
Applique les changements sans confirmation interactive.
Plus prudent :
terraform planPuis seulement après review :
terraform applyAutorisations demandées par Copilot CLI
Quand Copilot CLI veut utiliser un outil dangereux (supprimer un fichier, lancer une commande), il demande une autorisation. Trois réponses sont typiques : autoriser cette fois, autoriser pour la session, ou refuser en donnant une autre instruction.
Autoriser pour la session a une portée large : autoriser la commande rm pour la session permettrait à Copilot de supprimer n’importe quel fichier du dossier courant et de ses sous-dossiers sans redemander. Les options --allow-all-tools, --allow-all et /yolo accordent les permissions d’un coup ; on ne les utilise que dans un dossier de confiance, avec une tâche cadrée et, de préférence, un dépôt propre. L’autopilot demande ce niveau de permissions.
À l’inverse, --deny-tool interdit un outil et les autorisations préalables (--allow-tool) permettent de ne rien accorder de plus que nécessaire. En mode programmatique (-p), il faut autoriser les outils à l’avance, ce qui renforce l’intérêt d’un périmètre étroit.
Stratégie de sécurité
Pour toute commande générée :
- Demander une explication.
- Identifier les effets destructifs.
- Vérifier le contexte courant.
- Chercher une option dry-run.
- Exécuter d’abord en environnement non-prod.
- Lire la documentation officielle si impact élevé.
- Faire valider si production/sécurité.
- Sauvegarder si nécessaire.
Prompt de sécurité recommandé
Explain this command before I run it.
Identify:
- what it changes
- whether it deletes data
- whether it affects production
- required permissions
- safer alternatives
- dry-run optionsRègle pour l’examen
Si une question propose :
Run the generated command immediately.C’est presque toujours faux.
La bonne logique est :
Review and understand the command before running it.À retenir pour le GH-300
- Une commande générée n’est jamais automatiquement sûre : on la comprend, on identifie son effet, on cherche une simulation.
- Autoriser une commande pour toute la session lui donne une portée large : on autorise une fois quand on ne mesure pas l’effet.
- Aucun secret dans un prompt ; un script distant d’origine inconnue se télécharge, se lit et se vérifie avant d’être exécuté.
- Plus une commande peut modifier, supprimer, déployer ou exposer quelque chose, plus on la vérifie.
Pratique : Que faire d’une commande proposée ?
Copilot CLI propose une commande. Choisis la bonne réaction : l’exécuter après l’avoir comprise, demander une explication ou une simulation d’abord, refuser et reformuler, ou vérifier la source. Rien n’est exécuté : tu raisonnes sur le risque, pas sur la syntaxe.
Chargement de la question…
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Une commande générée n’est jamais automatiquement sûre : on la comprend, on identifie son effet, on cherche une simulation.
- Autoriser une commande pour toute la session lui donne une portée large : on autorise une fois quand on ne mesure pas l’effet.
- Aucun secret dans un prompt ; un script distant d’origine inconnue se télécharge, se lit et se vérifie avant d’être exécuté.
- Plus une commande peut modifier, supprimer, déployer ou exposer quelque chose, plus on la vérifie.
Objectif GH-300
- Scripts et fichiers CLI (Use GitHub Copilot CLI with scripts and files)
Achèvement
Il reste à faire : , .