Objetivo del tema
Comprender los riesgos asociados a permitir que GitHub Copilot CLI opere en tu entorno local y aprender a controlar sus permisos.
Al finalizar sabrás evaluar solicitudes de ejecución, configurar directorios seguros, administrar herramientas permitidas y diseñar estrategias de mitigación.
Copilot CLI puede leer, modificar y ejecutar archivos en tu nombre. Cada vez que acepta una instrucción:
rm
, git push
o node
).Revisa cada plan antes de aprobarlo. Copilot solo debe tener el mismo nivel de acceso que concederías a una automatización de confianza o a otra persona integrante del equipo.
Al iniciar una sesión interactiva, la CLI solicita confirmar si confías en el directorio actual:
El ámbito es heurístico: evita ejecutar Copilot desde $HOME
o carpetas con datos sensibles. Limítalo a repositorios controlados y, si quieres revocar el permiso recordado, edita la lista trusted_folders
en ~/.config/github-copilot-cli/config.json
.
Cuando Copilot necesita utilizar una herramienta potencialmente peligrosa, muestra un cuadro con tres opciones:
La segunda opción es cómoda, pero también arriesgada. Si concedes rm
para la sesión, Copilot puede ejecutar cualquier variante del comando (por ejemplo rm -rf ./*
) sin consulta adicional.
Prefiere aprobaciones puntuales para comandos críticos (borrados masivos, despliegues, git push
) y limita las aprobaciones globales solo a herramientas de baja criticidad (por ejemplo chmod
o sed
).
La CLI expone banderas que definen qué herramientas puede utilizar sin pedir confirmación:
--allow-all-tools
: autoriza cualquier comando sin preguntar. Úsalo solo en entornos desechables.--allow-tool '<herramienta>'
: aprueba automáticamente una herramienta concreta (por ejemplo --allow-tool 'write'
o --allow-tool 'shell(git status)'
).--deny-tool '<herramienta>'
: bloquea una herramienta específica incluso si --allow-all-tools
está activo.Ejemplos:
# Permite cualquier comando excepto eliminar archivos o hacer push
copilot --allow-all-tools --deny-tool 'shell(rm)' --deny-tool 'shell(git push)'
# Autoriza solo comandos de shell de lectura
copilot --allow-tool 'shell(cat)' --allow-tool 'shell(ls)'
Estas banderas pueden combinarse con --prompt
para automatizaciones o añadirse a scripts que integren Copilot en pipelines.
Además de limitar permisos, implementa medidas defensivas adicionales:
Si necesitas habilitar --allow-all-tools
en automatizaciones, hazlo dentro de entornos desechables sin acceso a recursos críticos y regenera las credenciales luego de cada ejecución.