# Configurando GitHub Copilot CLI

Configurar diretórios confiáveis, acesso à ferramenta e permissões de caminho e URL para Copilot CLI

## Introdução

Copilot CLI tem várias opções de configuração que controlam o que ele pode acessar e fazer em seu nome.

Este artigo mostra como definir diretórios confiáveis, configurar o acesso para ferramentas e conceder permissões para caminhos de arquivo e URLs.

### Pré-requisitos

* Instale os Copilot CLI. Confira [Instalando a CLI do GitHub Copilot](/pt/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli).

## Definindo diretórios confiáveis

Os diretórios confiáveis controlam onde Copilot CLI podem ler, modificar e executar arquivos. Confiar em um diretório tem implicações de segurança, confira [as considerações de segurança](/pt/copilot/concepts/agents/copilot-cli/about-copilot-cli#security-considerations).

### Optando por confiar em um diretório

Quando você inicia uma sessão do GitHub Copilot CLI, será solicitado que você confirme que confia nos arquivos dentro e abaixo do diretório a partir do qual você iniciou a CLI.

Você pode optar por confiar no diretório atual para:

* Somente a sessão atual em execução
* Esta e sessões futuras

Se você optar por confiar no diretório para sessões futuras, o prompt de diretório confiável não será exibido novamente. Você só deverá escolher essa segunda opção se tiver certeza de que esse local sempre será um local seguro para Copilot operar.

### Editando diretórios confiáveis

Você pode editar a lista de diretórios permanentemente confiáveis. Os diretórios confiáveis são armazenados no arquivo gerenciado `config.json` automaticamente.

1. Abra o arquivo `config.json` do CLI. Por padrão, ele é armazenado em uma `.copilot` pasta no diretório base:

   * **macOS/Linux**: `~/.copilot/config.json`
   * **Windows**:`$HOME\.copilot\config.json`

Você pode alterar o local da configuração definindo a variável de `COPILOT_HOME` ambiente. Isso alteraria `~/.copilot/` e `$HOME\.copilot\` nos caminhos acima.

1. Edite o conteúdo da `trustedFolders` matriz.

## Configurando ferramentas permitidas

Você pode controlar quais ferramentas Copilot CLI podem usar, respondendo a prompts de aprovação quando Copilot tenta usar uma ferramenta ou especificando permissões por meio de sinalizadores de linha de comando.

Lembre-se de que permitir o acesso à ferramenta tem implicações de segurança, consulte [as considerações de segurança](/pt/copilot/concepts/agents/copilot-cli/about-copilot-cli#security-considerations).

Nesta seção, você pode aprender a:

* [Autorizar uma ferramenta pela primeira vez](#allowing-a-tool-for-the-first-time)
* [Permitir que as ferramentas sejam usadas sem aprovação manual](#allowing-tools-to-be-used-without-manual-approval)
* [Especificar qual ferramenta você deseja permitir ou negar](#specifying-which-tool-you-want-to-allow-or-deny)
* [Permitir algumas ferramentas ao negar outras](#allowing-some-tools-while-denying-others)
* [Limitar as ferramentas disponíveis](#limiting-available-tools)

### Autorizando o uso de uma ferramenta pela primeira vez

Na primeira vez que Copilot precisar usar uma ferramenta que possa exigir aprovação,por exemplo, `touch`, `chmod`, `node` ou `sed` ele perguntará se você deseja permitir que ela seja executada. Se você for solicitado pode depender da ferramenta e de como ela está sendo usada (como os argumentos fornecidos ou se a ferramenta foi aprovada anteriormente).

1. Acione Copilot para executar uma tarefa que requer uma ferramenta. Por exemplo:

   ```shell
   copilot -p "Create a new file called README.md with a project description"
   ```

2. Escolha uma das três opções:

   * `1. Yes`

     Escolha esta opção para permitir Copilot a execução deste comando específico, somente desta vez. Na próxima vez que precisar usar essa ferramenta, ele perguntará novamente.

   * `2. Yes, and approve TOOL for the rest of the running session`

     Escolha essa opção para permitir Copilot o uso dessa ferramenta durante a sessão em execução no momento. Ele solicitará sua aprovação novamente em novas sessões ou se você retomar a sessão atual no futuro. Se você escolher essa opção, permitirá Copilot usar essa ferramenta de qualquer maneira que ela achar apropriada.

     Por exemplo, se Copilot pedir que você permita que ele execute o comando `rm ./this-file.txt` e você escolher a opção 2, então Copilot pode executar qualquer comando `rm` (por exemplo, `rm -rf ./*`) durante a execução atual desta sessão, sem solicitar sua aprovação.

   * `3. No, and tell Copilot what to do differently (Esc)`

     Escolha essa opção para cancelar o comando proposto e instrua Copilot a tentar uma abordagem diferente.

### Permitir que as ferramentas sejam usadas sem aprovação manual

Você pode usar sinalizadores de linha de comando para designar ferramentas que Copilot podem usar sem solicitar sua aprovação.

#### Permitir todas as ferramentas

Use `--allow-all-tools` para permitir que Copilot use qualquer ferramenta sem solicitar sua aprovação.

* Por exemplo:

  ```shell
  copilot -p "Revert the last commit" --allow-all-tools
  ```

#### Negando uma ferramenta

Use `--deny-tool` para impedir o Copilot uso de uma ferramenta específica.

* Por exemplo:

  ```shell
  copilot --deny-tool='shell(git push)'
  ```

Essa opção tem precedência sobre as opções `--allow-all-tools` e `--allow-tool`.

#### Permitir uma ferramenta

Use `--allow-tool` para permitir o Copilot uso de uma ferramenta específica sem solicitar sua aprovação.

* Por exemplo:

  ```shell
  copilot --allow-tool='shell'
  ```

### Especificando qual ferramenta você deseja permitir ou negar

Para usar as opções `--deny-tool` e `--allow-tool` você deve especificar que tipo de ferramenta deseja permitir ou negar.

* [Comandos do Shell](#allowing-or-denying-shell-commands)
* [Ferramentas de 'escrita'](#allowing-or-denying-write-tools)
* [Ferramentas do servidor MCP](#allowing-or-denying-mcp-server-tools)

#### Permitir ou negar comandos de shell

Use `shell(COMMAND)` para permitir ou negar um comando de shell específico.

* Por exemplo, para impedir que Copilot use qualquer comando `rm`, use:

  ```shell
  copilot --deny-tool='shell(rm)'
  ```

Para comandos `git` e `gh`, especifique um subcomando de primeiro nível específico para permitir ou negar.

* Por exemplo, para impedir que Copilot use `git push`, use:

  ```shell
  copilot --deny-tool='shell(git push)'
  ```

A especificação da ferramenta é opcional. Por exemplo, `copilot --allow-tool='shell'` permite Copilot usar qualquer comando de shell sem aprovação individual.

#### Permitir ou negar ferramentas `'write'`

Use `'write'` para permitir ou negar a ferramentas — além dos comandos de shell — a permissão para modificar arquivos.

* Por exemplo, para permitir Copilot a edição de arquivos sem sua aprovação individual, use:

  ```shell
  copilot --allow-tool='write'
  ```

#### Permitindo ou negando ferramentas de servidor MCP

Use `'MCP_SERVER_NAME'` para permitir ou negar uma ferramenta específica do servidor MCP especificado.

* Por exemplo, para impedir que Copilot use a ferramenta chamada `tool_name` do servidor MCP chamado `My-MCP-Server`, use:

  ```shell
  copilot --deny-tool='My-MCP-Server(tool_name)'
  ```

`MCP_SERVER_NAME` é o nome de um servidor MCP que você configurou.

As ferramentas do servidor são especificadas entre parênteses, usando o nome da ferramenta que está registrado com o servidor de MCP.

Usar o nome do servidor sem especificar uma ferramenta permite ou nega todas as ferramentas desse servidor.

Você pode encontrar o nome de um servidor MCP inserindo `/mcp` no modo Copilot CLI interativo e selecionando o servidor na lista exibida.

### Permitindo algumas ferramentas ao negar outras

Para determinar exatamente quais ferramentas podem ser usadas Copilot sem solicitar sua aprovação, você pode usar uma combinação de opções de aprovação. Por exemplo:

* Para impedir Copilot de usar os comandos `rm` e `git push`, mas permitir automaticamente todas as outras ferramentas, use:

  ```shell
  copilot --allow-all-tools --deny-tool='shell(rm)' --deny-tool='shell(git push)'
  ```

* Para impedir Copilot o uso da ferramenta `tool_name` do servidor MCP nomeado `My-MCP-Server`, mas permitir que todas as outras ferramentas desse servidor sejam usadas sem aprovação individual, use:

  ```shell
  copilot --allow-tool='My-MCP-Server' --deny-tool='My-MCP-Server(tool_name)'
  ```

### Limitando as ferramentas disponíveis

Para restringir Copilot a um conjunto específico de ferramentas, use `--available-tools`.

As ferramentas não incluídas nesta lista não estarão disponíveis para Copilot.

## Definindo permissões de caminho

As permissões de caminho controlam quais diretórios e arquivos Copilot podem acessar.

Por padrão, Copilot CLI pode acessar o diretório de trabalho atual, seus subdiretórios e o diretório temporário do sistema.

As permissões de caminho aplicam-se a comandos do shell, operações de arquivo (criar, editar, visualizar) e ferramentas de pesquisa (como `grep` e padrões glob). Para comandos de shell, os caminhos são extraídos heuristicamente por meio da geração de tokens de texto de comando e da identificação de tokens que se parecem com caminhos.

> \[!WARNING]
> A detecção de caminho para comandos de shell tem limitações:
>
> * Caminhos inseridos em construções de shell complexas podem não ser detectados.
> * Somente um conjunto específico de variáveis de ambiente é expandido (`HOME`, `TMPDIR`e `PWD`semelhante). Variáveis personalizadas como `$MY_PROJECT_DIR` não são expandidas e podem não ser validadas corretamente.
> * Symlinks são resolvidos para arquivos existentes, mas não para arquivos que estão sendo criados.

### Permitindo o acesso a todos os caminhos

Para desabilitar a verificação de caminho e permitir o acesso a qualquer caminho, use o `--allow-all-paths` sinalizador ao iniciar Copilot CLI.

### Não permitir o acesso ao diretório temporário

Para não permitir o acesso ao diretório temporário, use `--disallow-temp-dir`.

## Definindo permissões de URL

As permissões de URL controlam quais URLs externas Copilot podem acessar. Por padrão, todas as URLs exigem aprovação antes que o acesso seja concedido.

As permissões de URL se aplicam à ferramenta `web_fetch` e a uma lista de comandos de shell que acessam a rede (como `curl`, `wget`, e `fetch`). Para comandos de shell, as URLs são extraídas usando padrões regex.

> \[!WARNING]
> A detecção de URL para comandos de shell tem limitações:
>
> * URLs no conteúdo do arquivo, arquivos de configuração ou variáveis de ambiente lidas por comandos não são detectadas.
> * URLs ofuscadas (como cadeias de caracteres divididas ou sequências de escape) podem não ser detectadas.
> * HTTP e HTTPS são tratados como protocolos diferentes e exigem aprovação separada.

As permissões de URL podem ser mantidas para a sessão ou permanentemente.

### Desabilitando a verificação de URL

Para desabilitar a verificação de URL, use o `--allow-all-urls` sinalizador.

### Pré-aprovação de domínios específicos

Para aprovar previamente domínios específicos, use `--allow-url=DOMAIN`.

* Por exemplo, `--allow-url=github.com`.

### Negando domínios específicos

Para negar domínios específicos, use `--deny-url=DOMAIN`.

* Por exemplo, `--deny-url=github.com`.

## Permitindo o acesso a todas as ferramentas, caminhos e URLs

Para permitir todas as ferramentas, caminhos e URLs, use `--allow-all`, ou seu equivalente, `--yolo`.

Esse sinalizador combina:

* `--allow-all-tools` (ignorar aprovação da ferramenta).
* `--allow-all-paths` (desabilitar a verificação de caminho).
* `--allow-all-urls` (desabilita a verificação de URL).

Durante uma sessão interativa, você também pode habilitar todas as permissões com os comandos de barra `/allow-all` ou `/yolo`.

> \[!NOTE] Se você tiver uma licença Copilot Business ou Copilot Enterprise, esses comandos poderão ser bloqueados por um administrador da empresa.

## Restringir o acesso a arquivos

As várias `--allow-all...` opções salvam você de ter que decidir se deseja permitir o Copilot acesso a ferramentas, arquivos e URLs individuais. No entanto, usá-los amplia o escopo para Copilot executar ações que talvez você não queira que elas façam, por exemplo, alterar arquivos fora do repositório em que você está trabalhando.

Para atenuar esse risco, você pode instruir a CLI a proteger seus comandos (área restrita local) ou executar toda Copilot CLI a sessão em um ambiente remoto e em área restrita (área restrita de nuvem). Para obter mais informações, consulte [Sobre a nuvem e as áreas restritas locais para GitHub Copilot](/pt/copilot/concepts/about-cloud-and-local-sandboxes).

## Leitura adicional

* [Personalizar GitHub Copilot CLI](/pt/copilot/how-tos/copilot-cli/customize-copilot)
* [Diretório de configuração do GitHub Copilot CLI](/pt/copilot/reference/copilot-cli-reference/cli-config-dir-reference)