Skip to main content
Skip to content

referência programática do GitHub Copilot CLI

Encontre opções para execução Copilot CLI programática.

Além de executar Copilot CLI interativamente, você também pode passar um prompt diretamente para a CLI em um único comando, sem inserir uma sessão interativa. Isso permite que você use Copilot de forma programática em scripts, pipelines de CI/CD e workflows de automação. Para obter mais informações, consulte Executando GitHub Copilot CLI programaticamente.

Este artigo descreve as opções de linha de comando e as variáveis de ambiente que são particularmente relevantes ao executar Copilot CLI programaticamente.

Para ver uma lista completa das opções disponíveis, consulte referência de comando da CLI GitHub Copilot ou insira o seguinte comando em seu terminal:

Shell
copilot help

Opções de linha de comando

Há várias opções de linha de comando que são particularmente úteis ao executar Copilot CLI programaticamente.

OpçãoDescrição
-p PROMPTExecute um comando no modo não interativo. A CLI executa o prompt e sai quando terminar a execução.
-sSuprimir estatísticas e decoração, exibindo apenas a resposta do agente. Ideal para direcionar a saída em scripts.
--add-dir=DIRECTORYAdicione um diretório à lista de caminhos permitidos. Isso pode ser usado várias vezes para adicionar vários diretórios. Útil quando o agente precisa ler/gravar fora do diretório de trabalho atual.
--agent=AGENTEspecifique um custom agent a ser usado.
--allow-all(ou --yolo)Permitir todas as permissões da CLI. Equivalente a --allow-all-tools --allow-all-paths --allow-all-urls.
--allow-all-pathsDesabilite totalmente a verificação do caminho do arquivo. Alternativa mais simples para --add-dir quando as restrições de caminho não são necessárias.
--allow-all-toolsPermitir que cada ferramenta seja executada sem permissão explícita para cada ferramenta.
--allow-all-urlsPermitir o acesso a todas as URLs sem permissão explícita para cada URL.
--allow-tool=TOOL ...Conceda permissão seletivamente para uma ferramenta específica. Para várias ferramentas, use uma lista entre aspas e separada por vírgulas.
--allow-url=URL ...Permitir que o agente busque uma URL ou domínio específico. Útil quando um fluxo de trabalho precisa de acesso à Web para pontos de extremidade conhecidos. Para várias URLs, use uma lista entre aspas e separada por vírgulas.
--assisted-approvalAtive assisted permissions para a execução, para que uma revisão de segurança possa aprovar solicitações de permissão elegíveis. Válido apenas para execuções não interativas. Veja Uso assisted permissions abaixo.
--attachment=PATH ...Anexe um arquivo (imagem ou documento nativo) ao prompt inicial. Válido somente no modo não interativo. Pode ser usado várias vezes para anexar vários arquivos.
--available-tools=TOOL ...Restrinja o modelo apenas às ferramentas listadas; todas as outras ferramentas não estão disponíveis. Útil para fazer um escopo rígido do que o agente pode fazer em um fluxo de trabalho automatizado. Para várias ferramentas, use uma lista entre aspas e separada por vírgulas.
--deny-tool=TOOL ...Negar uma ferramenta específica. Útil para restringir o que o agente pode fazer em um fluxo de trabalho bloqueado. Para várias ferramentas, use uma lista entre aspas e separada por vírgulas.
--deny-url=URL ...Negar acesso a uma URL ou domínio específico. Tem precedência sobre --allow-url. Para várias URLs, use uma lista entre aspas e separada por vírgulas.
--excluded-tools=TOOL ...Remova ferramentas específicas daquelas disponíveis para o modelo. Para várias ferramentas, use uma lista entre aspas e separada por vírgulas.
--fleetExecute o prompt no modo de frota, portanto Copilot , usa subagentes paralelos para trabalhar em partes separadas da tarefa. Combine com -p para automação não interativa, -i para uma sessão interativa ou um prompt pipe. Não há suporte no modo de servidor ACP. Consulte Acelerando a conclusão da tarefa com o /fleet comando.
--model=MODELEscolha o modelo de IA (por exemplo, gpt-6-astra ou claude-haiku-4.5). Útil para fixar um modelo em fluxos de trabalho reproduzíveis. Veja como escolher um modelo abaixo.
--no-ask-userEvitar que o agente pause para solicitar informações adicionais do usuário.
--output-format=FORMATDefina o formato de saída: text (o padrão) ou json. Com json, a CLI emite JSONL (um objeto JSON por linha), o que é conveniente para analisar a saída do agente em scripts.
--secret-env-vars=VAR ...Uma variável de ambiente cujo valor você deseja redigir na saída. Para várias variáveis, use uma lista entre aspas e separada por vírgulas. Essencial para evitar que segredos sejam expostos em logs. Os valores nas variáveis de ambiente GITHUB_TOKEN e COPILOT_GITHUB_TOKEN são redigidos por padrão.
--trust-folderConfie nos ganchos do diretório de trabalho, nos servidores MCP do workspace e nas configurações de plug-in do repositório para uma única nova sessão não interativa (-p ou entrada padrão canalizada). A relação de confiança não é salva em trustedFolders, não se estende a diretórios pai ou irmão e não concede permissões de ferramenta, caminho ou URL. A política gerenciada ainda se aplica. Não é possível combinar com --resume, --continueou --session-id. Use isso apenas para configurações que você analisou.
--share=PATHExportar a transcrição da sessão para um arquivo Markdown após a conclusão não interativa (o padrão é ./copilot-session-<ID>.md). Útil para auditar ou arquivar o que o agente fez. Observe que as transcrições de sessão podem conter informações confidenciais.
--share-gistPublique a transcrição da sessão como um GitHub gist secreto após a conclusão. Conveniente para compartilhamento de resultados da CI. Observe que as transcrições de sessão podem conter informações confidenciais.

Execução de fluxos de trabalho dinâmicos

Use copilot workflow run WORKFLOW-NAME para executar um fluxo de trabalho dinâmico a partir de um script. Para saber mais sobre fluxos de trabalho dinâmicos, consulte Fluxos de trabalho dinâmicos.

Use --args para JSON embutido ou um @caminho de arquivo JSON prefixado. Os argumentos não são lidos da entrada padrão.

Shell
copilot workflow run WORKFLOW-NAME \
  --args @workflow-input.json \
  --silent --output-format json

Configure a autenticação e conceda as permissões necessárias para a ferramenta antes de executar o comando. Opções compartilhadas, como --model, --allow-tool, --allow-urle --add-dir aplicar. O comando não exibe prompts de aprovação de permissão. Opções de prompt e modo de sessão, como -p, -i, --agent, --fleet, --autopilot, --resumee --continue não têm suporte com workflow run.

As extensões de projeto são carregadas somente de pastas confiáveis ou com consentimento explícito. Na automação, GITHUB_COPILOT_PROMPT_MODE_EXTENSIONS=true permite o carregamento de extensões de projeto para essa invocação. Habilite-o apenas para o código do repositório em que você confia. Ele não concede permissões de ferramenta.

Para todas as opções específicas do fluxo de trabalho, consulte referência de comando da CLI GitHub Copilot.

Saída do fluxo de trabalho

Com --output-format jsona saída padrão usa JSONL. Quando a execução é concluída ou interrompida, o registro final tem os campos a seguir. Adicione --silent para suprimir o progresso e outros registros de eventos.

CampoDescrição
typeSempre workflow.result.
data.nameO nome do fluxo de trabalho.
data.run.runIdO identificador da execução.
data.run.statusO status final da execução: completed, halted, paused, cancelled ou error.
data.run.resultO valor retornado, se houver. Omitido quando --result-file for fornecido.
data.run.pauseInfo, data.run.reason, , data.run.error``data.run.failureDetalhes adicionais sobre por que uma execução foi pausada ou interrompida, quando disponível.
data.resultFileO caminho do arquivo de resultado solicitado, incluído somente após o arquivo de resultado ter sido gravado com êxito.

Com --result-file PATH, o arquivo contém apenas o valor retornado, como JSON. Uma execução pausada, com falha ou interrompida, não substitui um arquivo de resultado existente. Uma execução concluída que não retorna nenhum valor não grava um arquivo de resultado.

Erros e diagnósticos para execuções que não são concluídas são gravados em erro padrão, inclusive no modo silencioso. Um erro antes do início do fluxo de trabalho ou uma interrupção pode encerrar o comando sem um registro JSON final.

Códigos de saída do fluxo de trabalho

Código de saídaMeaning
0O fluxo de trabalho foi concluído com êxito e qualquer arquivo de resultado solicitado foi gravado com êxito. Um fluxo de trabalho que não retorna nenhum valor também pode ser concluído com êxito sem criar um arquivo de resultado.
1A execução não foi concluída, incluindo uma pausa, um limite que interrompeu a execução, o cancelamento ou a falha. Também é usado para erros gerais de comando, como sintaxe de linha de comando inválida ou uma falha ao salvar o resultado.
2O fluxo de trabalho não foi encontrado ou seus argumentos não puderam ser lidos, interpretados como JSON ou validados com base nas entradas aceitas pelo fluxo de trabalho.
130O comando foi interrompido por SIGINT ou SIGTERM, por exemplo, pressionando Ctrl+C.

Verifique o código de saída antes de consumir um arquivo de resultado. Um arquivo de resultado anterior ainda pode existir após uma execução malsucedida. Um registro final com data.run.status definido como completed não garante que o arquivo de resultados tenha sido salvo com êxito.

Ferramentas para a opção --allow-tool

Você pode especificar vários tipos de ferramentas com a opção --allow-tool .

Tipo de ferramentaO que controla
shellExecutando comandos de shell.
gravaçãoCriando ou modificando arquivos.
leituraLendo arquivos ou diretórios.
urlBuscando conteúdo de uma URL.
memóriaArmazenando novos fatos na memória persistente do agente. Isso não afeta o uso de memórias existentes. Consulte Sobre a Memória do GitHub Copilot.
MCP-SERVERInvocando ferramentas de um servidor MCP específico. Use o nome configurado do servidor como o identificador, por exemplo, github. Consulte Adicionando servidores MCP para GitHub Copilot CLI.

Filtros de ferramenta

Os tipos de ferramentas de servidor shell, write, url e MCP permitem que você especifique um filtro, entre parênteses, para controlar quais ferramentas específicas são permitidas.

Tipo de ferramentaExemploExplicação do exemplo
Shellshell(git:*)Permitir todos os subcomandos git (git push, git statusetc.).
shell(npm test)Permitir o comando exato npm test.
escreverwrite(.github/copilot-instructions.md)Permitir que a CLI escreva nesse caminho específico.
write(README.md)Permitir que a CLI escreva em qualquer arquivo cujo caminho termina com /README.md.
urlurl(github.com)Permitir que a CLI acesse URLs HTTPS no github.com.
url(http://localhost:3000)Permitir que a CLI acesse o servidor de desenvolvimento local com o protocolo e a porta explícitos.
url(https://*.github.com)Permitir que a CLI acesse qualquer GitHub subdomínio (por exemplo, api.github.com).
url(https://docs.github.com/copilot/*)Permitir acesso à documentação Copilot, neste site.
MCP-SERVERgithub(create_issue)Permitir somente a ferramenta create_issue do servidor github MCP.

Observação

Os curingas são permitidos apenas para shell para corresponder a todos os subcomandos de uma ferramenta específica e para url no início do nome do host para corresponder a qualquer subdomínio ou no final de um caminho para corresponder a qualquer sufixo de caminho — conforme mostrado na tabela anterior.

Variáveis de ambiente

Você pode usar variáveis de ambiente para configurar vários aspectos do comportamento da CLI ao executar programaticamente. Isso é particularmente útil para definir a configuração em fluxos de trabalho de CI/CD ou em outros ambientes automatizados em que talvez você não queira especificar determinadas opções diretamente na linha de comando.

VariableDescrição
COPILOT_ALLOW_ALLDefinir true para permissões completas
COPILOT_ASSISTED_APPROVALDefinido para true ativar assisted permissions para uma execução não interativa
COPILOT_MODELDefinir o modelo (por exemplo, gpt-6-astra, claude-haiku-4.5)
COPILOT_HOMEDefina o diretório para o arquivo de configuração da CLI (~/.copilot por padrão)
COPILOT_AUTO_UPDATEDefina como false para desabilitar atualizações automáticas. Útil em CI e em outros ambientes automatizados em que você deseja fixar a versão da CLI.
COPILOT_GITHUB_TOKENToken de autenticação (precedência mais alta)
GH_TOKENToken de autenticação (segunda precedência)
GITHUB_TOKENToken de autenticação (terceira precedência)
GITHUB_COPILOT_PROMPT_MODE_EXTENSIONSDefina como true para permitir que as extensões de projeto carreguem para uma execução de prompt ou fluxo de trabalho direto. Use isto apenas com código de repositório em que você confia. Isso não concede permissões de ferramenta.

Para obter detalhes completos das variáveis de ambiente para Copilot CLI, use o comando copilot help environment em seu terminal.

Usando assisted permissions

Em uma execução não interativa, não há ninguém disponível para responder aos prompts de aprovação. Sem nenhuma opção de permissão, as solicitações que precisam de aprovação são negadas e Copilot , muitas vezes, não podem concluir a tarefa. Com --allow-all-tools, você concede permissões amplas para ferramentas sem uma revisão de segurança do modelo.

A --assisted-approval opção é o meio termo. Uma revisão de segurança pode avaliar solicitações elegíveis que ainda não foram resolvidas pelas permissões existentes:

  • Se a revisão julgar a solicitação segura, ela será aprovada automaticamente e Copilot continuará.
  • Se a revisão exigir sua aprovação, a solicitação será negada e o motivo será passado de volta para Copilot, para que possa tentar uma abordagem diferente para concluir a tarefa.

As regras de negação existentes, os requisitos de aprovação obrigatória e as proteções de sandbox ainda se aplicam. Solicitações que ainda exigem sua aprovação são negadas em execuções não interativas.

Para obter mais informações sobre como a revisão de segurança funciona e qual modelo é usado, consulte Permitindo a execução de comandos seguros sem aprovação manual.

Shell
copilot -p "Fix the failing tests" --assisted-approval

Você pode definir a COPILOT_ASSISTED_APPROVAL variável de ambiente para true , em vez de usar a opção. Isso é útil em ambientes automatizados em que você não pode alterar facilmente o comando executado.

Coisas que devem ser observadas

  • A opção só é válida para execuções não interativas. São execuções que usam -p ou --prompt, e execuções em um ambiente sem terminal anexado, como um fluxo de trabalho de CI/CD. Se você usar --assisted-approval ao iniciar uma sessão interativa, a CLI sairá com um erro.

  • Substitui --allow-all-tools quando habilitado com êxito. As solicitações de ferramenta usam assisted permissions em vez de aprovação geral da ferramenta. No entanto, --allow-all-paths e --allow-all-urls— incluindo quando eles são definidos por --allow-all ou --yolo— não são afetados, portanto, o acesso de arquivo e URL ainda pode ser irrestrito.

  • Verifique se há um aviso indicando que a execução não deve continuar sem uma revisão de segurança. Se assisted permissions não puder ser ativado, porque as configurações da empresa o bloqueiam, por exemplo, a CLI grava um aviso para erro padrão e continua. Ele não cancela uma opção separada --allow-all-tools fornecida, portanto, as solicitações de ferramenta ainda podem ser aprovadas sem uma revisão de segurança.

Escolhendo um modelo

Quando você envia um prompt no Copilot CLI modo não interativo, o modelo que a CLI usa para gerar uma resposta é mostrado na saída da resposta (se a opção -s, ou --silent, não for usada).

Você pode usar a opção --model para especificar qual modelo de IA a CLI deve usar. Isso permite que você escolha um modelo mais adequado para seu prompt, equilibrando fatores como velocidade, custo e funcionalidade.

Por exemplo, para tarefas simples, como explicar algum código ou gerar um resumo, você pode escolher um modelo rápido e de menor custo, como um modelo Claude Haiku:

Bash
copilot -p "What does this project do?" -s --model claude-haiku-4.5

Para tarefas mais complexas que exigem um raciocínio mais profundo, como depuração ou refatoração de código, você pode escolher um modelo mais poderoso, como um modelo GPT Codex.

Bash
copilot -p "Fix the race condition in the worker pool" \
  --model gpt-5.3-codex \
  --allow-tool='write, shell'

Observação

Para ver as cadeias de caracteres de modelo para todos os modelos disponíveis, execute o /model comando em uma sessão interativa Copilot CLI . Para obter a lista completa de modelos e clientes que dão suporte a eles, consulte Modelos de IA com suporte no GitHub Copilot.

Como alternativa, você pode definir a COPILOT_MODEL variável de ambiente para especificar um modelo durante a sessão do shell.

Para persistir uma seleção de modelo entre sessões de shell, você pode definir a model chave no arquivo de configuração da CLI. Esse arquivo está localizado em ~/.copilot/settings.json (ou $COPILOT_HOME/settings.json se você definiu a variável de COPILOT_HOME ambiente). Alguns modelos também permitem que você defina um nível de esforço de raciocínio, que controla quanto tempo o modelo passa pensando antes de responder.

JSON
{
  "model": "gpt-5.3-codex",
  "effortLevel": "low"
}

Dica

A maneira mais fácil de definir um modelo persistente no arquivo de configuração é com o /model comando barra em uma sessão interativa. A escolha que você faz com esse comando é gravada no arquivo de configuração.

Precedência do modelo

Ao determinar qual modelo usar para um determinado prompt, a CLI verifica se há especificações de modelo na seguinte ordem de precedência (da mais alta para a mais baixa):

  • Onde um agente personalizado é usado: o modelo especificado na definição do agente personalizado (se houver).
  • A opção de linha de comando --model.
  • A variável de ambiente COPILOT_MODEL.
  • A chave model no arquivo de configuração (~/.copilot/settings.json ou $COPILOT_HOME/settings.json).
  • O modelo padrão da CLI.

Usando agentes personalizados

Você pode delegar o trabalho a um agente especializado usando a opção --agent . Para obter mais informações, consulte Criando e usando agentes personalizados para GitHub Copilot CLI.

Neste exemplo, o code-review agente é usado. Isso requer que um agente personalizado tenha sido criado com esse nome.

copilot -p "Review the latest commit" \
  --allow-tool='shell' \
  --agent code-review

Leitura adicional