> ## Documentation Index
> Fetch the complete documentation index at: https://zeropath.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Auto-Fix e Patches

> Gere automaticamente patches de correção e pull requests para vulnerabilidades detectadas

<h2 id="how-it-works">
  Como Funciona
</h2>

O ZeroPath pode gerar automaticamente correções de código para vulnerabilidades detectadas e abrir pull requests com a remediação. O sistema analisa o contexto da vulnerabilidade, escreve uma correção direcionada e a apresenta para sua revisão antes que qualquer mudança chegue ao seu código.

* **Patches gerados por IA** — as correções são geradas por um agente de IA que entende a vulnerabilidade, o código ao redor e o padrão de remediação apropriado.
* **Humano no circuito** — por padrão, os patches exigem aprovação explícita antes que um PR seja criado. Você revisa o diff, aprova, e o ZeroPath abre o PR.
* **Tanto SAST quanto SCA** — vulnerabilidades em nível de código recebem correções de código; vulnerabilidades de dependências recebem atualizações de versão com as devidas atualizações de lockfile. PRs de correção automática são suportados para descobertas tanto de SAST quanto de SCA, de modo que patches de vulnerabilidades de dependências seguem o mesmo fluxo de revisão e merge das correções de código.

<h2 id="requesting-a-patch">
  Solicitando um Patch
</h2>

<Tabs>
  <Tab title="Sob Demanda (Dashboard)">
    <Steps>
      <Step title="Navegue até uma Descoberta">
        Abra qualquer descoberta no dashboard do ZeroPath.
      </Step>

      <Step title="Gere o Patch">
        Clique em **"Generate Patch"** na visão de detalhes da issue. O ZeroPath gera um diff git direcionado à vulnerabilidade.
      </Step>

      <Step title="Revise as Mudanças">
        Revise as mudanças propostas no dashboard.
      </Step>

      <Step title="Aprove ou Regenere">
        Clique em **"Approve Patch"** para criar um PR, ou em **"Regenerate"** para tentar novamente.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Automático (durante Escaneamentos)">
    Quando habilitado nas configurações do scanner, os patches são gerados automaticamente para descobertas qualificadas:

    * **Auto-patching em full scan** — após a conclusão de um full scan, patches são enfileirados para descobertas acima do limiar de pontuação configurado.
    * **Auto-patching em PR scan** — durante o escaneamento de PRs, sugestões de correção são geradas e publicadas como sugestões de código inline diretamente no seu pull request. Aplique-as com um clique na interface de revisão do seu VCS.
  </Tab>
</Tabs>

<h2 id="automatic-pull-requests">
  Pull Requests Automáticos
</h2>

Quando você aprova um patch (ou quando a geração automática de PRs está habilitada), o ZeroPath:

1. Cria um novo branch a partir do branch padrão do seu repositório.
2. Aplica a correção como um commit com uma mensagem descritiva.
3. Abre um pull request com:
   * Um título claro descrevendo a correção (ex.: *"Fix SQL injection in user authentication handler"*)
   * Uma descrição cobrindo a vulnerabilidade, a correção, a causa raiz e a abordagem de implementação.
4. Vincula o PR de volta à descoberta no ZeroPath para rastreamento.

<h3 id="requesting-follow-up-changes-on-github">
  Solicitando Mudanças Adicionais no GitHub
</h3>

Depois que o ZeroPath abre um PR de patch no GitHub, os revisores podem solicitar mudanças
comentando no PR com `@ZeroPath` ou `@zeropath-ai` e uma descrição concreta
da edição. Se o ZeroPath conseguir verificar que o branch atual do PR é
o branch de patch que ele criou, ele faz o commit da mudança solicitada nesse mesmo branch
e responde com um resumo e a referência do commit.

```text PR comment theme={null}
@zeropath-ai Please add a regression test for empty usernames
```

Se o branch não puder ser verificado, se o branch mudou enquanto a solicitação estava sendo
preparada, ou se a solicitação for insegura, ambígua, impossível ou não relacionada ao
patch, o ZeroPath responde sem enviar um commit. Veja [Comandos do
Bot](/pt/scanning/bot-commands#github-patch-pr-changes) para detalhes.

**Plataformas de VCS com suporte a auto-PR:**

| Plataforma                      | Suporte a Auto-PR |
| ------------------------------- | ----------------- |
| GitHub (Cloud e Enterprise)     | Sim               |
| GitLab (Cloud e Self-hosted)    | Sim               |
| Bitbucket (Cloud e Data Center) | Sim               |

<h3 id="pr-lifecycle-tracking">
  Rastreamento do Ciclo de Vida do PR
</h3>

O ZeroPath rastreia o status dos PRs gerados:

* **Open** — o PR foi criado e aguarda revisão.
* **Accepted** — o PR foi mesclado. A descoberta associada é automaticamente movida para **Resolved**.
* **Rejected** — o PR foi fechado sem merge.

<h2 id="what-can-be-auto-fixed">
  O Que Pode Ser Corrigido Automaticamente
</h2>

<h3 id="code-vulnerabilities-sast">
  Vulnerabilidades de Código (SAST)
</h3>

O agente de IA pode gerar correções para a maioria dos problemas de segurança em nível de código, incluindo:

* Injeção de SQL
* XSS
* Path traversal
* Injeção de comando
* SSRF
* Criptografia insegura
* Verificações de autenticação/autorização ausentes
* e mais...

<Warning>
  Alguns tipos de vulnerabilidade **não podem ser corrigidos automaticamente** e serão marcados como tal:

  * Segredos hardcoded (exigem rotação manual e migração para um gerenciador de segredos)
  * Problemas complexos de lógica de negócio (condições de corrida, autorização entre múltiplos sistemas)
  * Problemas arquiteturais em que a causa raiz está fora do arquivo afetado

  Quando uma descoberta não pode ser corrigida automaticamente, o ZeroPath agora fornece **instruções de remediação** explicando por que a correção não pôde ser gerada e quais passos manuais você deve seguir para resolver o problema.
</Warning>

<h3 id="dependency-vulnerabilities-sca">
  Vulnerabilidades de Dependências (SCA)
</h3>

Para dependências vulneráveis, o ZeroPath:

* Consulta os registros de pacotes em busca da versão mais recente não vulnerável.
* Para **dependências diretas**: atualiza a versão no seu arquivo de manifesto e regenera o lockfile usando o gerenciador de pacotes apropriado.
* Para **dependências transitivas**: atualiza a dependência direta pai que traz o pacote vulnerável.

Ecossistemas suportados para patches de dependências:

* npm / Node.js
* Módulos Go
* Rust / Cargo
* Ruby / Bundler
* Python / Poetry
* Python / pip
* Maven / Gradle
* e mais...

<h2 id="configuration">
  Configuração
</h2>

As configurações de geração de patches seguem a herança em níveis de organização/tag/repositório:

| Configuração                   | Padrão | O Que Controla                                                           |
| ------------------------------ | ------ | ------------------------------------------------------------------------ |
| **PR scan auto-patching**      | On     | Gerar sugestões de correção para descobertas de PR scan                  |
| **Full scan auto-patching**    | Off    | Gerar patches automaticamente para descobertas qualificadas de full scan |
| **Full scan auto-PR creation** | Off    | Abrir PRs automaticamente sem aprovação humana                           |
| **Full scan patch threshold**  | 80     | Pontuação mínima de prioridade (0–100) para auto-patching                |
| **Full scan PR threshold**     | 80     | Pontuação mínima de prioridade para criação automática de PRs            |
| **PR title template**          | —      | Template personalizado para títulos de PRs gerados                       |
| **PR description template**    | —      | Template personalizado para descrições de PRs gerados                    |
| **Branch name format**         | —      | Template personalizado para nomes de branches de correção                |
| **Commit message format**      | —      | Template personalizado para mensagens de commit de correção              |

<h3 id="jira-ticket-references-in-templates">
  Referências a Tickets do Jira em Templates
</h3>

Quando uma descoberta tem um ticket do Jira vinculado, você pode referenciá-lo nos templates de título de PR, descrição de PR, nome de branch e mensagem de commit usando os seguintes placeholders:

| Placeholder    | Substituído Por                            |
| -------------- | ------------------------------------------ |
| `{jira_id}`    | A chave da issue do Jira (ex.: `PROJ-123`) |
| `{jira_title}` | O título da issue do Jira                  |
| `{jira_url}`   | A URL completa da issue do Jira            |

Por exemplo, um template de nome de branch `fix/{jira_id}/{vuln_class}` produziria um branch como `fix/PROJ-123/sql-injection` quando a descoberta estiver vinculada a um ticket do Jira. Se nenhum ticket do Jira estiver vinculado, os placeholders são omitidos e o template é preenchido apenas com o contexto de vulnerabilidade disponível.

<h3 id="sca-specific-settings">
  Configurações Específicas de SCA
</h3>

| Configuração                              | Padrão | O Que Controla                                                              |
| ----------------------------------------- | ------ | --------------------------------------------------------------------------- |
| **Auto-create direct dependency PRs**     | Off    | Abrir PRs automaticamente para correções de CVE em dependências diretas     |
| **Direct dependency patch threshold**     | 0      | Limiar de pontuação para auto-PR de dependência direta                      |
| **Auto-create transitive dependency PRs** | Off    | Abrir PRs automaticamente para correções de CVE em dependências transitivas |
| **Transitive dependency patch threshold** | 0      | Limiar de pontuação para auto-PR de dependência transitiva                  |

<h2 id="troubleshooting">
  Solução de Problemas
</h2>

<h3 id="github-actions-workflow-permission-error">
  Erro de Permissão em Workflow do GitHub Actions
</h3>

Se um patch modificar um arquivo de workflow do GitHub Actions (em `.github/workflows/`), a criação do PR pode falhar com um erro de permissão. O GitHub exige a permissão **workflows** para criar ou atualizar arquivos de workflow via API.

Para resolver isso:

* **Aplique o patch manualmente** — copie as mudanças sugeridas e faça o commit você mesmo.
* **Peça a um administrador do repositório para criar o PR** — administradores com permissões suficientes podem enviar a mudança de workflow.
* **Conceda a permissão de workflows** — se a política da sua organização permitir, adicione a permissão `workflows` à instalação do GitHub App do ZeroPath.

<h3 id="repository-rule-violations">
  Violações de Regras do Repositório
</h3>

Se o seu repositório tiver regras de proteção de branch que impõem formatos de mensagem de commit ou padrões de nomenclatura de branch, a criação do PR pode falhar. Atualize as regras do seu repositório ou ajuste os formatos de nome de branch e de mensagem de commit dos PRs do ZeroPath nas [configurações do scanner](/pt/platform/scanner-settings) e tente novamente.

<h2 id="adoption-guide">
  Guia de Adoção
</h2>

1. **Comece com patches sob demanda** — clique em "Generate Patch" em descobertas individuais para avaliar a qualidade das correções geradas para o seu código.
2. **Habilite sugestões em PR scans** — ative `prScanAutoPatching` para receber sugestões de correção como comentários inline nos seus pull requests.
3. **Ajuste os limiares** — configure os limiares de patch e de PR para focar o auto-patching primeiro nas descobertas de alta severidade.
4. **Habilite o auto-patching em full scans** — quando estiver confortável com a qualidade dos patches, habilite a geração automática de patches para full scans.
5. **Considere a criação automática de PRs** — para equipes com ciclos de revisão rápidos, habilite o auto-PR para que os branches de correção sejam criados automaticamente.
