# Permitir y denegar el uso de la herramienta

Controlar qué herramientas Copilot CLI pueden usar para evitar cambios no deseados.

## 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.

Aunque 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, las herramientas que pueden modificar el sistema, como ejecutar comandos de shell destructivos, editar archivos o acceder a direcciones URL, requieren su aprobación explícita antes de Copilot poder usarlas. Esto ayuda a evitar el uso de la CLI, lo que da lugar a cambios que no tenía previstos porque, por ejemplo, un comando de shell puede hacer cualquier cosa que pueda hacer su cuenta de usuario: instalar paquetes, eliminar archivos, insertar código o realizar solicitudes de red.

Puede permitir o denegar permisos para herramientas al iniciar la CLI o durante la sesión interactiva. Si no ha concedido permiso antes de iniciar una sesión, Copilot CLI le pedirá permiso cada vez que necesite realizar una acción potencialmente destructiva. 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](/es/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson).

## 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-tools` deshabilita todas las herramientas que no sean las especificadas.
* `--excluded-tools` deshabilita 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.

```bash
copilot --excluded-tools='web_fetch, web_search'
```

> \[!NOTE]
> 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](/es/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options).

## 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/copilot-instructions.md)'`                                                                                                                       | Permitir todas las operaciones de lectura y permitir operaciones de escritura para un archivo específico. |
| `--allow-tool='MyMCP(create_issue), MyMCP(delete_issue)'`                                                                                                                           | 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](/es/copilot/reference/copilot-cli-reference/cli-command-reference#tool-permission-patterns).

## 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 el Copilot acceso. Para obtener más información, vea [Acerca de los espacios aislados locales y en la nube para GitHub Copilot](/es/copilot/concepts/about-cloud-and-local-sandboxes).

* `--allow-all-tools` — Acceso total a las herramientas disponibles.

* `--allow-all`  o `--yolo` — Equivalente al uso de todas las `--allow-all-tools`opciones , `--allow-all-paths`y `--allow-all-urls` al iniciar la CLI.

  Dentro de una sesión interactiva, puede usar los comandos de barra `/allow-all` o `/yolo` para habilitar todas las herramientas sin necesidad de reiniciar la sesión.

> \[!CAUTION]
> 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.

## Restablecimiento de permisos

El `/reset-allowed-tools` comando de barra diagonal revoca todos los permisos concedidos durante la sesión interactiva actual. Esto se aplica igualmente a los permisos que ha dado al responder a las indicaciones y al uso de los comandos de barra `/allow-all` o `/yolo`.

Usar `/reset-allowed-tools` restablece los permisos al valor predeterminado o al estado definido por las opciones de la línea de comandos que usted utilizó al iniciar Copilot CLI. También borra las aprobaciones de herramientas guardadas para la ubicación actual de `permissions-config.json`. 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](/es/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson).

## Lectura adicional

* [Procedimientos recomendados para la CLI de GitHub Copilot](/es/copilot/how-tos/copilot-cli/cli-best-practices#configure-allowed-tools)
* [Referencia de comandos de la CLI de GitHub Copilot](/es/copilot/reference/copilot-cli-reference/cli-command-reference)
* [directorio de configuración de la CLI de GitHub Copilot](/es/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson)