Copilot Autofix para alertas de segurança de código (versão prévia)

Copilot Autofix fornece remediação autônoma para alertas de verificação de código e vulnerabilidades de segurança da verificação de dependências no GitHub Advanced Security para Azure DevOps. Abra um alerta compatível e selecione Gerar correção. O agente de codificação Copilot pode explorar o contexto relevante do repositório, examinar e refinar suas alterações propostas e abrir um pull request com uma correção sugerida.

Você analisa, testa e mescla a alteração por meio do fluxo de trabalho normal de pull request. As etapas são as mesmas para ambos os tipos de alerta. Escolha a lista de alertas relevante para iniciar e, em seguida, use o scanner relevante para verificar a correção mesclada.

Note

Esse recurso está em versão prévia pública limitada. Microsoft não está aceitando usuários adicionais para a versão prévia.

A funcionalidade pode ser alterada ou removida sem aviso prévio. Os recursos de visualização não têm SLA (Contrato de Nível de Serviço) e suporte limitado.

GitHub Advanced Security for Azure DevOps funciona com Azure Repos. Para usar a Segurança Avançada do GitHub com repositórios do GitHub, consulte a Segurança Avançada do GitHub.

Prerequisites

Category Requirements
Permissões – Para exibir um resumo de todos os alertas de um repositório: permissões de colaborador para o repositório.
– Para ignorar alertas na Segurança Avançada: permissões de administrador do projeto.
– Para gerenciar permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerenciar a permissão de configurações definida como Permitir.

Para obter mais informações sobre permissões de Segurança Avançada, consulte Gerenciar permissões de Segurança Avançada.

  • Verificação de código ou verificação de dependência configurada e produzindo alertas para seu repositório.
  • Pelo menos um alerta compatível.
  • A permissão de repositório Segurança Avançada: exibir alertas para o usuário que seleciona Gerar correção.
  • Acesso ao pool de agentes Azure Pipelines. O Copilot Autofix enfileira um trabalho de pipeline hospedado pela Microsoft para gerar e publicar a correção. A execução requer uma tarefa paralela disponível. Se todas as tarefas paralelas estiverem em uso, a correção permanece na fila até que haja capacidade disponível.

O Copilot Autofix executa operações de repositório por meio de uma identidade dedicada chamada GitHub Copilot ({organization}), não uma conta do Serviço de Build do projeto ou da coleção. O serviço concede automaticamente à identidade as seguintes permissões:

Operation Permissão
Acessar o projeto Exibir informações no nível de projeto
Clonar o repositório Leitura
Criar e efetuar push do branch de correção Contribuir e criar ramificação
Criar e atualizar a solicitação de pull Colaborar para solicitações de pull
Leia o alerta Segurança Avançada: exibir alertas
Adicionar discussões de pull request Ler e contribuir para discussões em pull requests
Atualizar a execução do pipeline Atualizar informações de compilação
Rotular a solicitação de pull Criar o rótulo Copilot Autofix

Você não precisa conceder essas permissões a uma conta do Serviço de Build. Se sua organização usar permissões de negação explícitas, verifique se elas não bloqueiam a GitHub Copilot ({organization}) identidade.

Como funciona o Autofix agêntico

O Autofixo Agentic usa as descobertas do alerta e o contexto do repositório, em vez de depender apenas do local de código relatado. O agente de codificação Copilot pode usar instruções personalizadas versionadas no repositório e habilidades relevantes para entender seus padrões de codificação, arquitetura e padrões de correção. Ele pode examinar e refinar a alteração proposta antes de abrir uma solicitação de pull que contenha:

  • Uma alteração de código sugerida que aborda a vulnerabilidade subjacente.
  • Uma descrição do alerta que está sendo corrigido, incluindo a ID do alerta, a gravidade e um resumo da alteração.

Como a correção sugerida considera o contexto mais amplo da base de código, a alteração pode abranger mais do que a única linha em que o alerta foi gerado e pode incluir alterações em outros arquivos quando necessário.

Note

Os dados tratados pelo Copilot Autofix não são usados para treinar grandes modelos de linguagem (LLMs).

Important

As sugestões de correção automática do Copilot são geradas por um modelo de IA, e não há garantia de que estejam corretas, completas ou seguras. Sempre examine a solicitação de pull com cuidado, valide se ela resolve o alerta sem introduzir novos problemas e teste suas alterações antes de mesclá-las.

Alertas suportados

Tipo de alerta Suporte na visualização pública limitada
Análise de código Alertas do CodeQL e ferramentas de verificação de código de terceiros.
Verificação de dependências Alertas de vulnerabilidade de segurança. As descobertas de malware não estão incluídas.
Escaneamento de segredos Sem suporte.

Para qualquer tipo de alerta com suporte, Copilot Autofix propõe uma alteração para que você examine. Ele não garante uma correção para cada resultado. Para obter mais informações, consulte Correção não está disponível.

Fornecer instruções e competências de repositório

Dê ao Autofix autônomo o contexto que você deseja que ele considere ao gerar uma correção. Faça check-in das instruções personalizadas e das habilidades no repositório em locais com suporte .agents ou .github. Esses arquivos podem ajudar o agente de codificação Copilot a seguir os padrões de codificação da sua equipe e os fluxos de trabalho de correção estabelecidos.

Adicionar padrões de codificação às instruções personalizadas

Use instruções personalizadas em todo o repositório, como .github/copilot-instructions.md, para descrever como as alterações devem se ajustar ao seu projeto. Inclua diretrizes sobre convenções de nomenclatura, bibliotecas aprovadas, limites arquitetônicos e como criar e testar alterações.

Por exemplo, se sua equipe exigir um auxiliar de validação de entrada compartilhado, descreva esse requisito nas instruções. Não suponha que o agente o infera do alerta.

# Coding standards

- Use the existing input-validation helpers instead of adding new validation logic.
- Follow the naming conventions in the surrounding code.
- Keep dependency changes scoped to the vulnerability being fixed.
- Update the relevant tests when a fix changes behavior.
- Run the documented build and test commands before proposing a change.

Use os nomes e locais de arquivo com suporte do Copilot. Um arquivo nomeado custom-instructions.md não estabelece, apenas pelo nome, um arquivo de instrução do Copilot válido para todo o repositório. Para o formato de arquivo em todo o repositório, consulte Adicionando instruções personalizadas do repositório para GitHub Copilot.

Adicionar competências para tarefas de correção repetíveis

Repository skills podem fornecer instruções, scripts e recursos de suporte específicos à tarefa. Armazene uma habilidade em um diretório como .github/skills/<skill-name>/ ou .agents/skills/<skill-name>/, com suas instruções em SKILL.md.

Por exemplo, uma habilidade de atualização de dependência pode descrever o procedimento de atualização de pacote e as verificações de compatibilidade. Uma skill de remediação de código pode descrever como usar suas bibliotecas de segurança aprovadas. O Agentic Autofix pode referenciar habilidades relevantes como parte da geração de uma correção; nem todas as habilidades se aplicam a cada alerta. Para o formato de habilidade, consulte Sobre as habilidades do agente.

Important

As instruções e as habilidades do repositório fornecem contexto adicional, não uma garantia de que uma correção gerada atenda a todos os requisitos. Examine a alteração proposta em relação aos seus padrões, execute suas verificações de validação e verifique se a vulnerabilidade foi resolvida antes de mesclar.

Billing

O Copilot Autofix está incluído na sua licença do GitHub Advanced Security for Azure DevOps. A geração de uma correção consome créditos de IA do medidor de cobrança Azure da sua organização.

Cada geração de correção consome tokens, que incluem tokens de entrada para o contexto de código enviado ao modelo, tokens de saída para a alteração sugerida e tokens armazenados em cache que reutilizam o contexto existente.

Para manter a cobrança simples, esses tokens são convertidos em uma unidade padrão chamada GitHub crédito de IA, em que 1 crédito é igual a US$ 0,01. Os encargos são cobrados na assinatura Azure vinculada à sua organização Azure DevOps e aparecem como um medidor separado em Gerenciamento de Custos do Azure.

O custo de cada correção varia com o tamanho do contexto de código ao redor e a complexidade da alteração.

Note

As configurações de orçamento e os limites de usuário configurados no GitHub não se aplicam aos gastos do medidor do Copilot Autofix no Azure DevOps. Esse uso é cobrado por meio da assinatura Azure vinculada à sua organização Azure DevOps, não por meio da cobrança do GitHub Copilot.

Exibir custos de autofixo por projeto

Copilot Autofix dá suporte a tags de organização e projeto para que você possa filtrar seus encargos de uso e comparar os custos entre projetos do Azure DevOps.

  1. No portal Azure, abra a assinatura vinculada à sua organização Azure DevOps. Vá para Gerenciamento de custos>.
  2. Selecione o intervalo de datas que você deseja examinar.
  3. Adicione um filtro Meter e selecione Crédito de IA para AzDO GAC. Esse filtro isola os encargos de uso do Autofix de outros custos de assinatura.
  4. Adicione um filtro de tag para _organizationname_ e selecione as organizações do Azure DevOps cujos custos você deseja exibir.
  5. Defina Agrupar por para a tag _projectname_ para ver a divisão de custo do Autofix por projeto.

Captura de tela da Análise de Custos do Azure filtrada para o medidor de AI Credit for AzDO GAC e uma organização, com custos agrupados por projeto.

Para examinar datas individuais, defina Granularidade como Diária e alterne a visualização para Tabela. Mantenha os filtros do medidor e da organização e o agrupamento de projetos. Você também pode filtrar a tag _projectname_ para limitar a tabela a projetos específicos.

Captura de tela da Análise de custo do Azure no modo de exibição de tabela diária mostrando os custos de autofixo por data e projeto, filtrados para o crédito de IA para o medidor GAC do AzDO, uma organização e projetos selecionados.

Habilitar o autofixo de Copilot

Você pode habilitar o Copilot Autofix no nível da organização, do projeto ou do repositório. Quando você habilita o Autofixo em um escopo mais amplo, a configuração se aplica a todos os repositórios dentro desse escopo. Escolha onde configurar o Autofixo com base nos repositórios aos quais você deseja que a configuração se aplique:

Scope Onde configurar o Autofixo
Organization Selecione Configurações da organização> para habilitar o Autofix em todos os repositórios da organização.
Projeto Selecione Configurações do projeto>Repositórios>Todos os repositórios para habilitar o Autofix em todos os repositórios do projeto.
Repositório Selecione Configurações do projeto> e, em seguida, selecione um repositório para habilitar o Autofix somente para esse repositório.

Para ativar o Copilot Autofix:

  1. Entre na sua organização do Azure DevOps (https://dev.azure.com/{yourorganization}).
  2. Vá para a página de configurações do escopo da organização, do projeto ou do repositório que você deseja configurar.
  3. Na seção Segurança Avançada, localize Correção automática para alertas de segurança. Se você usar a Segurança de Código autônoma, selecione Opções para abrir o painel de recursos de Segurança de Código .
  4. Selecione Autofix para alertas de segurança. A mesma configuração permite o Copilot Autofix para alertas compatíveis de verificação de código e de verificação de dependências.
  5. Se você usar o painel de recursos de Segurança de Código , selecione Aplicar para salvar suas alterações.

Para obter capturas de tela das configurações do Advanced Security incluído no pacote e do Code Security independente, consulte Configurar Copilot Autofix.

Habilitar o Autofixo não configura a verificação nem gera correções automaticamente. Primeiro, configure a verificação de código ou a verificação de dependência. Em seguida, solicite uma correção de um alerta compatível.

Gerar uma solução para um alerta

Depois de habilitar o Copilot Autofix, use as mesmas etapas para um alerta de verificação de código com suporte ou um alerta de vulnerabilidade de dependência.

  1. Selecione Repos>Advanced Security.
  2. Abra a lista de alertas de verificação de código ou de verificação de dependência e selecione um alerta para abrir sua exibição de detalhes.
  3. Examine o resultado, o código ou a dependência afetados e as diretrizes de correção.
  4. Selecione Gerar correção.

Os exemplos de verificação de código a seguir ilustram o fluxo de trabalho compartilhado. Um exemplo de verificação de dependência mostra um pull request gerado mais adiante nesta seção.

Captura de tela de uma exibição de detalhes de alerta de verificação de código com o botão Gerar correção no canto superior direito.

Enquanto o Copilot Autofix trabalha na correção, a visão detalhada do alerta mostra que a correção está em andamento. O Copilot Autofix abre um pull request assim que a correção estiver pronta.

Captura de tela da visualização de detalhes do alerta de análise de código mostrando o Copilot Autofix criando uma correção antes de abrir um pull request.

Copilot Autofix gera a correção e abre um pull request a partir de uma ramificação chamada copilot-autofix/.... A pull request recebe a tag Copilot Autofix, que você pode usar para identificar pull requests do Autofix na lista de pull requests.

Apenas uma correção pode estar ativa para o mesmo alerta e ramificação. Enquanto uma solicitação estiver pendente ou seu pipeline estiver em execução, Gerar correção não estará disponível. Se outra solicitação for enviada ao mesmo tempo, o alerta mostrará que uma correção já está sendo gerada. Você pode gerar outra correção depois que a solicitação ativa tiver sido bem-sucedida ou tiver falhado.

Para alertas do CodeQL, a solicitação de pull é exibida automaticamente em solicitações de pull relacionadas no modo de exibição de detalhes do alerta e continua a ser atualizada conforme a geração e o progresso da conclusão, portanto, você não precisa atualizar a página.

Captura de tela da visão detalhada do alerta de varredura de código mostrando uma solicitação de pull ativa do Autofix em solicitações de pull relacionadas.

O exemplo de verificação de dependência a seguir mostra um pull request ativo do Autofix para um pacote vulnerável em solicitações de pull relacionadas.

Captura de tela de um alerta de verificação de dependência mostrando uma pull request ativa do Autofix para uma vulnerabilidade no urllib3 na seção Related pull requests.

Se o Copilot Autofix não produzir nenhuma alteração de código para o alerta, ele não criará uma branch nem um pull request, e não vinculará um pull request na exibição de detalhes do alerta. Nesse caso, corrija o alerta manualmente. Para obter mais informações, consulte Correção não está disponível.

Revisar e mesclar a correção

A pull request que o Copilot Autofix abre se comporta como qualquer outra pull request do Azure Repos. Sua descrição resume o alerta que a correção aborda.

Captura de tela de um pull request criado pelo Copilot Autofix, mostrando o ID do alerta, a gravidade e os detalhes da correção na descrição.

O rótulo Copilot Autofix identifica solicitações de pull de correção automática.

  1. Abra a pull request na seção Pull requests relacionadas do alerta ou em Repos>Pull requests.
  2. Examine a alteração proposta na guia Arquivos em todos os arquivos afetados.
  3. Edite a alteração se precisar corresponder ao seu estilo de código, convenções de nomenclatura ou requisitos de projeto.
  4. Aprove e conclua a solicitação de pull por meio do fluxo de trabalho de revisão normal.

Depois de mesclar o pull request, execute o verificador relevante no branch de destino mesclado. O Copilot Autofix não executa essa verificação após a mesclagem.

Você corrigiu o alerta O que executar após a mesclagem
Análise de código Execute o CodeQL ou o scanner de terceiros que relatou o alerta e publique os resultados de análise atualizados na Segurança Avançada.
Vulnerabilidade de dependência Execute a verificação de dependência para que a Segurança Avançada possa processar as dependências atualizadas.

A mesclagem de uma solicitação pull sozinha não fecha o alerta. A Segurança Avançada atualiza o estado de alerta depois de processar os novos resultados de verificação. Verifique se esses resultados não relatam mais a vulnerabilidade.

Tip

Uma correção gerada é um ponto de partida, não uma resposta final. Trate a solicitação de pull como qualquer outra alteração: examine-a, teste-a e solicite revisores adicionais conforme necessário antes de mesclar.

Solucionar problemas do Copilot Autofix

Correção em andamento

A maioria das execuções de Copilot Autofix é concluída em cerca de 2 a 5 minutos. O tempo de execução pode variar com base na capacidade do pipeline disponível e na complexidade da alteração. Se todos os trabalhos paralelos estiverem em uso, o pipeline permanecerá na fila e o alerta continuará exibindo Correção em andamento até que haja capacidade disponível.

Uma solicitação que permanece pendente antes que um pipeline seja enfileirado falhará após 30 minutos. Um pipeline em fila ou em execução tem um tempo limite de duas horas. O alerta pode parar de atualizar automaticamente antes que o tempo limite de back-end seja atingido. Se o alerta permanecer em andamento:

  1. Atualize a página de detalhes do alerta.
  2. Se Ver execução estiver disponível, abra a execução do pipeline e verifique se ela está na fila ou em execução.
  3. Aguarde até que a solicitação chegue a um estado de êxito ou falha. Não envie outra solicitação enquanto a solicitação existente estiver ativa.
  4. Se a solicitação falhar, examine a mensagem de falha e selecione Repetir correção depois de resolver a causa.

Solicitação pull criada, mas não vinculada ao alerta

A solicitação de pull pode ser criada com êxito antes de aparecer em solicitações de pull relacionadas. Atualize a página de detalhes do alerta. Se a pull request ainda não estiver vinculada, selecione Repos>Pull requests e procure:

  • O rótulo Copilot Autofix.
  • Uma ramificação de origem que começa com copilot-autofix/.
  • Um título ou descrição de pull request que faz referência ao alerta.

Examine e mescle a solicitação de pull por meio do fluxo de trabalho normal de solicitação de pull, mesmo que o link não apareça no alerta.

As operações de repositório ou de pull request falham

Copilot Autofix executa um clone superficial da ramificação associada ao alerta. Ele não inicializa submódulos git. Ele cria um branch nomeado copilot-autofix/... exclusivamente, envia por push a alteração gerada e abre uma solicitação de pull direcionada ao branch de alerta.

Use Ver execução no estado de falha do alerta para inspecionar os logs do pipeline. A tabela a seguir lista causas e ações comuns:

Failure O que verificar
O repositório ou a ramificação não pode ser clonado Verifique se o repositório e o branch de alerta ainda existem. Para um alerta encontrado em uma solicitação de pull, o branch de origem e a solicitação de pull ainda devem estar ativos. Se o branch tiver sido excluído, execute o verificador relevante no branch atual e gere uma correção do alerta resultante.
A correção depende do código em um submódulo git Copilot Autofixo não inicializa submódulos. Corrija o alerta manualmente se o contexto de código necessário for armazenado em um submódulo.
O branch padrão foi alterado ou o branch de alerta foi excluído Copilot Autofix tem como alvo a branch associada ao alerta, que não é necessariamente a branch padrão atual. Execute o scanner relevante no branch desejado e gere uma correção com base no alerta desse branch.
Não é possível criar um branch de correção Verifique as restrições de nome do branch do repositório e as permissões de negação explícitas para a GitHub Copilot ({organization}) identidade. Permitir ramificações com o prefixo copilot-autofix/. Uma nova tentativa cria uma nova ramificação com um nome exclusivo.
Uma política de ramificação bloqueia a mudança As políticas de conclusão de pull request se aplicam ao pull request do Autofix, como a qualquer outro pull request. Satisfaça os revisores necessários e as políticas de validação antes de concluí-lo. Se uma política de repositório bloquear o push inicial, atualize a política para permitir a identidade do Autofix e o prefixo da ramificação.
A confirmação gerada não pode ser enviada por push Verifique as permissões Contribute e Criar ramificação para a identidade GitHub Copilot ({organization}), incluindo negações explícitas. Verifique também a validação do e-mail do autor do commit, conforme descrita em Uma correção foi gerada, mas não foi possível fazer commit nem push.
A solicitação de pull não pode ser criada Verifique a permissão Contribute to pull requests e a permissão para criar o rótulo Copilot Autofix para a identidade GitHub Copilot ({organization}).

Uma correção foi gerada, mas não pôde ser confirmada ou enviada por push

Copilot Autofix usa noreply@dev.azure.com como o e-mail do autor do commit. Se uma política de validação do e-mail do autor do commit não permitir esse endereço, o Copilot Autofix poderá gerar a alteração no código, mas não poderá fazer o commit nem fazer push para criar o pull request.

A visualização de detalhes do alerta mostra um erro que identifica o e-mail bloqueado do autor do commit.

Captura de tela de um alerta de verificação de código mostrando que Copilot Autofixo não pôde confirmar uma correção gerada porque o email do autor de confirmação não é permitido.

Adicione noreply@dev.azure.com aos padrões de e-mail permitidos na política de validação do e-mail do autor do commit:

  1. Selecione Configurações do projeto>Repositórios.
  2. Selecione Todos os Repositórios para atualizar a política no nível do projeto ou selecione o repositório que tem a política.
  3. Selecione Políticas.
  4. Em Políticas de Repositório, localize a Validação de email do autor do commit.
  5. Adicione noreply@dev.azure.com aos padrões de email permitidos.
  6. Retorne ao alerta e selecione Tentar corrigir novamente.

Captura de tela das configurações de política do repositório em que você adiciona o endereço de email do Copilot Autofix aos padrões permitidos de email do autor do commit.

Uma execução falha

Se uma execução do Copilot Autofix não puder ser concluída, o alerta mostrará uma falha em destaque para que você veja rapidamente que a execução não foi concluída. No estado de falha, você pode repetir a execução para gerar uma nova correção.

Captura de tela de um alerta de análise de código mostrando uma execução do Copilot Autofix em estado de falha, com a opção de tentar novamente a execução.

Uma execução pode falhar por motivos transitórios ou quando a execução não produz uma alteração de código utilizável. Repita a execução para gerar a correção novamente.

Um alerta permanece aberto depois que você mescla a correção

A mesclagem de um pull request de Autofix não fecha o alerta sozinha. A Segurança Avançada precisa de novos resultados do scanner que relatou a descoberta. Se o alerta permanecer aberto:

  1. Verifique se a solicitação de pull foi mesclada no mesmo branch em que o alerta foi detectado.
  2. Confirme se a verificação de código ou a verificação de dependência, conforme apropriado, foi executada após a mesclagem e analisou o commit mesclado.
  3. Confirme se a Segurança Avançada processou os resultados atualizados para o repositório e o branch corretos.
  4. Examine os novos resultados para verificar se a vulnerabilidade não foi mais detectada.
  5. Se a vulnerabilidade ainda estiver presente, atualize a correção e execute o verificador relevante novamente.

Correção não está disponível

O Copilot Autofix não consegue gerar uma correção para todos os alertas. Uma correção pode não estar disponível quando:

  • O tipo de alerta não é compatível com o Copilot Autofix no momento.
  • Copilot determina que o alerta pode ser um falso positivo.
  • O Copilot Autofix é executado, mas não produz alterações no código. Nesse caso, nenhuma solicitação de branch ou pull é criada.

Se o Copilot Autofix determinar que o alerta pode ser um falso positivo e não gerar nenhuma alteração, a exibição de detalhes do alerta mostra o resultado. Você pode revisar a execução ou tentar aplicar a correção novamente.

Captura de tela da exibição de detalhes do alerta de verificação de código mostrando que Copilot determinou que o alerta poderia ser um falso positivo e não produziu nenhuma correção, com opções para exibir a execução ou repetir a correção.

Quando uma correção não estiver disponível, use as diretrizes de correção do alerta para corrigi-la manualmente. Descarte um alerta somente depois de examinar o resultado e determinar o motivo apropriado para descartar. Para obter mais informações, consulte detalhes do alerta de verificação de código e detalhes do alerta de verificação de dependência.