Use .github/github-app.yml em seu repositório para definir como o GitHub Copilot app deve se comportar para esse projeto.
Você também pode editar essas configurações de projeto na interface do usuário do aplicativo. Se .github/github-app.yml já existir, as alterações de interface do usuário serão gravadas de volta nesse arquivo. Se ele ainda não existir, você poderá criá-lo a partir das configurações atuais do projeto no aplicativo.
Sobre o local do arquivo de configuração
Crie o arquivo em:
.github/github-app.yml
.github/github-app.yml
O aplicativo também dá suporte ao nome de arquivo herdado .github/copilot-desktop.yml para compatibilidade com versões anteriores.
Para ver as etapas de personalização baseadas na interface do usuário, consulte Personalizando a aplicativo Copilot do GitHub.
Examinar e confiar na configuração
Quando o aplicativo detecta uma configuração do repositório, ele não aplica instruções de repositório, scripts ou outras configurações do arquivo até que você examine e aceite a configuração. Isso protege você contra a execução de comandos ou a aplicação de configurações que foram adicionadas por outro colaborador. As configurações que você cria ou atualiza por meio da interface do usuário do aplicativo são confiáveis automaticamente.
Aviso
Antes de aceitar uma configuração de repositório, examine cada comando configurado e as dependências que ele executa. Os scripts e seus processos filho recebem as GitHub credenciais descritas posteriormente neste artigo, portanto, nunca configure-os para registrar ou persistir essas variáveis de ambiente.
Se o arquivo for alterado fora do aplicativo, incluindo alterações no espaço em branco ou comentários, você deverá examinar e aceitar a configuração atualizada antes que o aplicativo a aplique. Até que você aceite a versão atual, o aplicativo continua a usar as configurações de projeto que foram configuradas anteriormente no aplicativo.
Configuração de exemplo
instructions: |
Use bun instead of npm.
scripts:
- name: Setup
command: bun install
triggers:
- session.create
- name: Run
command: bun run dev
- name: Archive cleanup
command: rm -rf node_modules
triggers:
- session.archive
server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true
automation:
auto_issue_session: true
remote_control: false
instructions: |
Use bun instead of npm.
scripts:
- name: Setup
command: bun install
triggers:
- session.create
- name: Run
command: bun run dev
- name: Archive cleanup
command: rm -rf node_modules
triggers:
- session.archive
server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true
automation:
auto_issue_session: true
remote_control: false
Configurar instruções e scripts
instructions
Use o instructions para adicionar diretrizes específicas do repositório ao prompt do sistema para sessões no projeto. Se você também configurar instruções globais no aplicativo, as instruções globais serão aplicadas primeiro, seguidas pelas instruções do projeto.
scripts
Use scripts para definir comandos que aparecem no aplicativo e podem ser executados manualmente ou em gatilhos específicos.
Cada item de script dá suporte a:
name(string): Nome de exibição na interface do usuário.command(string): Comando a ser executado.triggers(string[]opcional): eventos que executam automaticamente o script.
Scripts sem triggers são manuais.
Valores de gatilho
Use os valores de gatilho canônicos em seu arquivo:
session.createsession.archive
O aplicativo também aceita esses aliases herdados ao analisar arquivos existentes:
workspace.create(alias desession.create)workspace.archive(alias desession.archive)
Quando um script disparado é executado, COPILOT_SCRIPT_TRIGGER é definido como o valor canônico:
session.createsession.archive
Configurar a detecção de servidor e o comportamento do navegador
server_ready_pattern
server_ready_pattern é uma expressão regular usada para detectar quando um script de execução iniciou um servidor.
Os padrões usam a sintaxe suportada pelo crate regex do Rust. Para obter detalhes de sintaxe, consulte Syntax na documentação do crate. Se o padrão for inválido, o aplicativo usará seu padrão de detecção de servidor padrão.
Use um primeiro grupo de captura para a URL ou porta detectada. O aplicativo lê o grupo de captura 1:
- Se a captura for uma URL (
http://...ouhttps://...), a URL será usada. - Se a captura for apenas um número de porta (por exemplo
3000), o aplicativo a converte emhttp://localhost:3000.
auto_open_in_browser
Se auto_open_in_browser estiver true, o aplicativo abrirá a URL de execução detectada no navegador integrado. Se esse campo for omitido, o padrão efetivo será true.
Configurar o comportamento da automação
Defina as opções de automação abaixo de automation:
automation.auto_issue_session(boolean) controla se o aplicativo inicia automaticamente uma sessão com contexto de problema. Se omitido, o padrão efetivo étrue.automation.remote_control(boolean) controla se as sessões podem ser acessadas na interface da GitHub Web ou GitHub Mobile. Se omitido, o padrão efetivo éfalse.
Se a sua Copilot licença for proveniente de uma organização, a política aplicável "Armazenar sessões locais na nuvem" deverá ser definida como "Exibir e controlar" para que o controle remoto esteja disponível. As configurações gerenciadas pela organização remoteControl podem restringir ainda mais o controle remoto mesmo quando automation.remote_control for true. Para obter mais informações, consulte Controle remoto das GitHub Copilot CLI sessões e Configurações gerenciadas pela empresa.
Variáveis de ambiente de runtime para scripts
Os scripts são executados com essas variáveis de ambiente fornecidas pelo aplicativo:
| Variable | Descrição |
|---|---|
COPILOT_WORKSPACE_ | Nome do workspace atual. |
COPILOT_WORKSPACE_ | Caminho absoluto para o workspace. |
COPILOT_ROOT_PATH | Caminho absoluto para o checkout da raiz do projeto. |
COPILOT_DEFAULT_ | Ramificação padrão do projeto. |
COPILOT_PORT | Porta WebSocket do aplicativo para o contexto atual do workspace. |
COPILOT_SCRIPT_ | Gatilho que iniciou o script (definido apenas para scripts disparados). |
GH_TOKEN | Token para a GitHub conta selecionada. |
GH_HOST | Host da conta selecionada GitHub. |
COPILOT_GH_ACCOUNT_ | Tokens específicos de host e conta para cada conta com sessão iniciada, incluindo a conta selecionada. |
Para cada variável COPILOT_GH_ACCOUNT_*, o aplicativo converte o host e o login para minúsculas, deixa as letras e dígitos ASCII inalterados e substitui todos os outros bytes UTF-8 por seu valor hexadecimal maiúsculo cercado por sublinhados. O nome da variável usa o formato COPILOT_GH_ACCOUNT_<HOST>_<LOGIN>. Por exemplo, o token para alice em github.com é COPILOT_GH_ACCOUNT_github_2E_com_alice, e o token para user em ghe-example.com é COPILOT_GH_ACCOUNT_ghe_2D_example_2E_com_user.
Compatibilidade legada
Para compatibilidade com versões anteriores, o aplicativo ainda pode analisar o formato mais antigo baseado em objeto scripts:
scripts: setup: bun install run: bun run dev archive: rm -rf node_modules
scripts:
setup: bun install
run: bun run dev
archive: rm -rf node_modules
Nesta shape legada:
setupmapeia para um script com o gatilho create.archivemapeia para um script com o gatilho de arquivamento.runmapeia para entradas de script manuais e pode ser uma única cadeia de caracteres de comando ou uma lista de{ name, command }objetos.