Introducción
Copilot CLI usa diversas herramientas para realizar tareas. Puede ejecutar comandos de shell, leer y escribir archivos, buscar en el código base, capturar contenido web y delegar tareas en subagentes especializados.
Las operaciones de solo lectura, como la búsqueda, la lectura de archivos y la ejecución de comandos de shell de solo lectura, se permiten automáticamente, sujetas a la directiva aplicable. Otras operaciones, como ejecutar comandos de shell destructivos, editar archivos o acceder a direcciones URL, necesitan permiso antes de que Copilot pueda usarlas. Que se le solicite o no depende de los permisos existentes y del modo de permiso. Estos controles ayudan a evitar cambios no deseados porque, por ejemplo, un comando de shell puede hacer cualquier cosa que pueda hacer su cuenta de usuario: instalar paquetes, eliminar archivos, hacer push de código o realizar solicitudes de red.
Puede permitir o denegar permisos para herramientas al iniciar la CLI o durante la sesión interactiva. En el modo de aprobación manual, Copilot CLI le solicita confirmación para las solicitudes que aún no están permitidas. Puede optar por permitir la herramienta una vez o durante el resto de la sesión.
Permisos persistentes
Algunas opciones de aviso guardan su consentimiento para que no se le pida de nuevo. El lugar en el que se almacena la aprobación depende de lo que haya aprobado.
Al aprobar una herramienta para la ubicación actual, la aprobación se guarda en permissions-config.json en el directorio de configuración. De forma predeterminada, este archivo es ~/.copilot/permissions-config.json. Por ejemplo, puede elegir "no preguntar de nuevo en este repositorio" (o "en este directorio") para un comando de shell, escritura de archivos, herramienta MCP o actualización de memoria. La aprobación tiene como ámbito la ubicación actual: la raíz del repositorio de Git o el directorio de trabajo si no está en un repositorio. Los directorios a los que concede acceso se guardan en el mismo archivo.
Las aprobaciones de direcciones URL funcionan de forma diferente. Al aprobar una dirección URL de forma permanente, su dominio se agrega a la allowedUrls lista de settings.json. De forma predeterminada, este archivo es ~/.copilot/settings.json. Esta aprobación se aplica en todas las sesiones, en lugar de estar vinculadas a una sola ubicación.
Las opciones de línea de comandos como --allow-tool y --deny-tool solo se aplican a la sesión actual y no se escriben en permissions-config.json. Las reglas de denegación siguen teniendo prioridad sobre las aprobaciones guardadas.
Para obtener más información sobre dónde se almacenan las aprobaciones guardadas, cómo coinciden las ubicaciones y el esquema completo permissions-config.json , consulte directorio de configuración de la CLI de GitHub Copilot.
Controles de herramientas por capas
Hay dos capas de control que puede usar al especificar permisos de herramienta en las opciones de la línea de comandos. Ustedes pueden:
- Restrinja la elección de herramientas disponibles para el modelo de IA.
- Permitir o denegar el permiso para herramientas específicas.
Restricción de la elección de herramientas disponibles para el modelo de IA
Las opciones --available-tools y --excluded-tools restringen el conjunto de herramientas de las que el modelo de IA tiene conocimiento y, por lo tanto, puede elegir cuando determina cómo llevar a cabo una tarea.
--available-toolsdeshabilita todas las herramientas que no sean las especificadas.--excluded-toolsdeshabilita solo las herramientas especificadas.
Si usa ambas opciones juntas, la CLI aplicará la lista de permitidos especificada por --available-tools y omitirá la lista de denegación especificada por --excluded-tools.
Si una herramienta no está en el conjunto disponible, el modelo de IA no podrá usarlo en absoluto, aunque lo especifique con la --allow-tool opción . En una sesión interactiva en la que no se especifica un conjunto de herramientas disponible, el modelo de IA puede intentar usar una herramienta, solo para denegarla. Las opciones --available-tools y --excluded-tools te evitan desperdiciar interacciones con el modelo de esta manera.
Ejemplo de caso de uso
Está iniciando una sesión de la CLI para ejecutar pruebas comparativas en el proyecto y quiere evitar que el modelo de IA intente incluso usar la búsqueda web.
copilot --excluded-tools='web_fetch, web_search'
Nota:
Para obtener detalles completos de la sintaxis de estas y otras opciones de línea de comandos mencionadas en este artículo, consulte Referencia de comandos de la CLI de GitHub Copilot.
Permitir o denegar el permiso para herramientas específicas
Las --allow-tool opciones y --deny-tool permiten o deniegan el permiso para herramientas específicas o subcomandos de herramientas.
El valor de cada una de estas opciones es una lista separada por comas de tipos de herramientas, que opcionalmente puede especificar herramientas exactas y patrones de subcomando.
Si especifica una herramienta con --allow-tool, el modelo de IA puede optar por usar esa herramienta sin pedir permiso. Si especifica una herramienta con --deny-tool, el modelo de IA no puede usar esa herramienta en absoluto, aunque sea la mejor opción para completar una tarea.
Las reglas de denegación siempre tienen prioridad sobre las reglas de autorización, incluso cuando --allow-all está configurado o se ha guardado una aprobación correspondiente en permissions-config.json.
Ejemplos
| Opción | Efecto |
|---|---|
--allow-tool=shell | Permitir todos los comandos de shell. |
--allow-tool='shell(git commit)' | Permitir el comando git commit. |
--allow-tool='shell(git:*)' --deny-tool='shell(git push)' | Permitir todos los git comandos excepto git push. |
--deny-tool=write | Denegar todas las operaciones de escritura de archivos. |
--allow-tool='read, write(.github/ | Permitir todas las operaciones de lectura y permitir operaciones de escritura para un archivo específico. |
--allow-tool='My | Permita las herramientas create_issue y delete_issue desde el servidor MCP MyMCP. |
--available-tools='bash,edit,view,grep,glob' --allow-tool='shell(git:*)' --deny-tool='shell(git push)' | Combine ambas capas de control para una sesión restringida de la CLI. |
| Copilot puede explorar el código, realizar modificaciones y confirmar cambios, pero no puede acceder a Internet, ejecutar subagentes arbitrarios o insertar en el historial de Git. |
Para obtener más información sobre los tipos de herramientas admitidos, consulte Referencia de comandos de la CLI de GitHub Copilot.
Opciones permisivas
Las siguientes opciones de línea de comandos conceden Copilot CLI permiso para usar todas las herramientas disponibles.
Si tiene una Copilot Business licencia o Copilot Enterprise , un administrador de empresa puede bloquear estos comandos.
Antes de conceder Copilot permisos de amplio alcance con una opción allow-all, considere la posibilidad de usar el espacio aislado local o la ejecución de la sesión en un espacio aislado en la nube para limitar a qué puede acceder Copilot. Para obtener más información, vea Acerca del aislamiento local para GitHub Copilot y Información sobre sandboxes en la nube para GitHub Copilot.
-
--allow-all-tools— Acceso total a las herramientas disponibles. -
--allow-allo--yolo— Equivalente al uso de todas las--allow-all-toolsopciones ,--allow-all-pathsy--allow-all-urlsal iniciar la CLI.Dentro de una sesión interactiva, puede usar los comandos de barra
/permissions allow-allo/yolopara habilitar todas las herramientas sin necesidad de reiniciar la sesión.
Precaución
Se recomienda encarecidamente que solo use estas opciones en un entorno aislado. Nunca debe usar un alias para aplicar una de estas opciones cada vez que inicie Copilot CLI, ya que hacerlo permitiría Copilot usar cualquier herramienta sin su permiso explícito cada vez que use la CLI, lo que podría provocar consecuencias imprevistas.
Reducción de indicaciones con assisted permissions
Las opciones de permisos que lo permiten todo conceden permisos amplios sin revisar acciones individuales. Para reducir las solicitudes de aprobación sin conceder permisos generales, use la opción assisted permissions en su lugar.
Para activar assisted permissions, escriba el comando con barra /permissions assisted en una sesión interactiva. Un modelo de lenguaje grande evalúa las solicitudes de permisos aptas y aprueba automáticamente las que considere seguras. Los permisos existentes y las reglas de empresa se siguen aplicando y las solicitudes que aún necesitan su aprobación se le presentan. Escriba /permissions manual para volver a la aprobación manual o /permissions show para comprobar la configuración actual. También puede escribir /permissions, sin argumento, para elegir un modo de una lista.
Para usar assisted permissions de forma predeterminada en nuevas sesiones interactivas cuando no se configura ningún valor predeterminado administrado, establezca defaultPermissionMode en "assisted" en el archivo de configuración de usuario. Para usarlo para una ejecución no interactiva, como en un flujo de trabajo de CI/CD, use la opción de línea de comandos --assisted-approval. Para obtener más información, vea Permitir que los comandos seguros se ejecuten sin aprobación manual.
Restablecimiento de permisos
El /reset-allowed-tools comando de barra diagonal revoca los permisos concedidos durante la sesión interactiva actual. Esto se aplica igualmente a los permisos que ha dado al responder a las solicitudes y al uso de los comandos /allow-all, /yolo o /permissions de barra diagonal. También devuelve el modo de permiso a manual, desactivando los permisos allow-all o assisted permissions si cualquiera de los dos está activado.
Usar /reset-allowed-tools devuelve los permisos al valor predeterminado o a la línea de base definida por las opciones de línea de comandos basadas en reglas y URL que usó al iniciar Copilot CLI, como --allow-tool, --deny-tool, --allow-url y --deny-url.
El comando también borra todas las aprobaciones guardadas para la ubicación actual de permissions-config.json, incluidas las aprobaciones de herramientas guardadas y los permisos de directorio guardados. Además, reactiva el cuadro de diálogo de permisos de Autopilot, por lo que Copilot le pedirá permisos de Autopilot de nuevo si es necesario.
Por ejemplo, si inicia una Copilot CLI sesión interactiva con la opción --allow-tool='shell(git:*)'y, a continuación, permite y deniega permisos adicionales durante la sesión respondiendo a las solicitudes, cuando, a continuación, usa el /reset-allowed-tools comando , los permisos de la CLI vuelven al estado original --allow-tool='shell(git:*)' , sin otros permisos permitidos o denegados. A medida que continúe trabajando en la sesión, se le pedirá de nuevo si Copilot necesita permisos adicionales.
Para quitar aprobaciones guardadas para una ubicación diferente, edite o elimine la entrada de ubicación correspondiente en permissions-config.json. Para obtener más información, vea directorio de configuración de la CLI de GitHub Copilot.