Menu da documentação
Primeiros passos
Painel e análises
- Painel em resumo
- Análise de custo
- Desempenho de pipeline
- Insights de otimização
- Knowledge Base
- Conecte seu agente de IA
Runners gerenciados
- Visão geral dos runners
- Execute seu primeiro job
- A página de Runners
- Runners personalizados (AI Scan)
- Autorreparo
- Imagem e software do runner
- Limites e concorrência
Cache
Equipe e notificações
Faturamento e planos
Ajuda
Autorreparo: o que ele faz
Como os runners do Latchkey detectam e corrigem falhas transitórias de CI durante a execução, o que eles nunca vão tocar e como as propostas de reparo viram pull requests revisáveis.

Todo runner do Latchkey vem com autorreparo integrado, habilitado por padrão. Quando um passo de workflow falha, o runner diagnostica a falha localmente e, quando é uma classe transitória conhecida, a corrige e repete o passo no lugar. Seu build fica verde sem uma reexecução humana, e toda intervenção é registrada para você inspecionar.
A cascata de diagnóstico em três estágios#
O diagnóstico roda do mais rápido primeiro, então os casos comuns custam quase nada:
Consulta de código de saída (instantânea)
Algumas falhas se identificam sozinhas. A saída 137 é o kernel matando um processo que ficou sem memória; 127 significa que o comando não foi encontrado. Uma tabela de códigos de saída conhecidos os mapeia para sua correção imediatamente.
Biblioteca de padrões (determinística)
A saída do passo é comparada com uma biblioteca curada de assinaturas de falha conhecidas: timeouts de registry e respostas 5xx em npm, yarn, pnpm, pip, uv, módulos Go, cargo, NuGet, registries Docker e GitHub, Composer, Bundler, Maven, apt e git; contratempos de DNS e TLS; rate limits; exaustão de heap; erros de disco cheio; drift de lockfile. Uma correspondência de padrão é determinística: mesma falha, mesma correção, toda vez.
Diagnóstico de IA limitado (falhas novas)
Qualquer coisa que os dois primeiros estágios não reconheçam vai para um agente de IA em sandbox com um orçamento de tempo estrito (cerca de três minutos). Ele lê a saída capturada, raciocina sobre a causa raiz e, ou aplica uma correção segura no runner, ou propõe uma correção duradoura como um pull request, ou conclui que a falha é real e a deixa acontecer.
O que ele detecta, por categoria#
A maior fonte de CI instável: registries de pacotes e serviços externos tendo um mau momento. Timeouts, respostas 5xx, falhas de resolução de DNS, erros de handshake TLS e rate limits em todos os principais ecossistemas.
npm ERR! code ETIMEDOUT
npm ERR! network request to https://registry.npmjs.org/react failed
npm ERR! network This is a problem related to network connectivity.
# self-heal: network/registry timeout -> retry with backoff -> passed on retry 2Kills por falta de memória (exit 137) e exaustão de heap do runtime da linguagem. A correção eleva o limite para a repetição via variáveis de ambiente como NODE_OPTIONS=--max-old-space-size=4096 ou _JAVA_OPTIONS=-Xmx4g.
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
# self-heal: memory/node heap -> set NODE_OPTIONS=--max-old-space-size=4096 -> retriedFalhas ENOSPC e de disco cheio. A correção libera espaço podando camadas Docker e caches de npm, pip, yarn, Gradle e cargo, mais /tmp, e depois repete o passo.
Error: ENOSPC: no space left on device, write
# self-heal: disk/full -> pruned docker + package caches (14.2 GB freed) -> retriedUm passo assume uma ferramenta que o job nunca instalou (exit 127, "command not found"). A correção instala o pacote de sistema ausente a partir de uma allowlist verificada (o mesmo conjunto de pacotes encontrado nas imagens de runner hospedadas pelo GitHub) e repete; ferramentas fora da allowlist são deliberadamente deixadas em paz.
/usr/bin/bash: line 1: ffmpeg: command not found
# self-heal: tool_missing -> apt-get install ffmpeg (allowlisted) -> retriedIncompatibilidades de config conhecidas com reescritas seguras conhecidas, como um lockfile fora de sincronia com o manifesto, onde npm ci falha mas npm install é a remediação documentada.
npm ERR! `npm ci` can only install packages when your package.json and
package-lock.json are in sync.
# self-heal: config/lockfile drift -> command rewrite: npm ci -> npm install -> retriedA caixa de ferramentas de correção#
Toda correção é aplicada apenas dentro do runner efêmero, e o runner é destruído após o job:
Como um reparo aparece nos seus logs#
A saída do seu passo transmite inalterada, em tempo real. Quando um reparo acontece, as linhas de diagnóstico do runner aparecem ao lado dela, então a intervenção nunca é invisível:
$ npm ci
npm ERR! code ETIMEDOUT
npm ERR! network request to https://registry.npmjs.org/lodash failed
# [latchkey-bash-wrapper] step failed (exit 1), diagnosing...
# [latchkey-bash-wrapper] verdict: network/registry-timeout (stage 2 pattern match)
# [latchkey-bash-wrapper] action: retry with backoff (attempt 1 of 3, waiting 5s)
$ npm ci
added 1291 packages in 42s
# [latchkey-bash-wrapper] heal successful, continuing jobPull requests de reparo#
Algumas causas raiz merecem uma correção duradoura no seu repositório, não apenas um resgate na execução: um passo de setup ausente do workflow, um pin engines ausente em package.json, um timeout de job baixo demais. Quando um reparo bem-sucedido remonta a uma causa estrutural como essas, o autorreparo produz uma proposta estruturada e abre um PR de reparo com uma edição tipada e determinística.
- Cada PR é intitulado "Latchkey heal: <error summary>"; o corpo explica o Error, a Root cause e o Fix, e liga de volta à execução do workflow, então a revisão leva minutos.
- PRs de reparo nunca sofrem auto-merge, e pull requests de forks nunca são tocados.
- A criação de PR usa as permissões do GitHub App; se você nunca fizer merge de um PR de reparo, nada no seu repositório muda.
O que ele fará e nunca fará#
O autorreparo faz
- Repetir passos que falharam com backoff, no mesmo runner
- Elevar limites de memória e liberar espaço em disco para a execução
- Instalar pacotes de sistema ausentes da allowlist
- Propor correções duradouras como pull requests revisáveis
O autorreparo nunca
- Modifica seu código ou repositório durante uma execução
- Faz merge de qualquer coisa: mudanças no repo só chegam como PRs que você revisa
- Esconde falhas reais: passos não reparáveis falham com os logs originais
- Toca pull requests de forks
Passe a bola para seu agente de código#
O autorreparo conserta o ambiente, nunca seu código-fonte. Quando o problema real é um bug no seu próprio código, o build falha de forma verdadeira, e a falha chega como um pacote completo e estruturado servido pelo servidor MCP do Latchkey, pronto para o seu próprio agente de código consertar a partir dele. O pacote entrega ao seu agente o que ele, de outra forma, reconstruiria à mão:
- A causa raiz, em linguagem simples.
- O código de saída do passo que falhou e o arquivo-fonte exato onde o erro surgiu.
- Os logs completos e não truncados do passo que falhou, incluindo saída que o GitHub esconde no seu visualizador de logs, com segredos removidos antes de saírem do Latchkey.
- O que o autorreparo já investigou e por que recuou, mais a definição do workflow.
No Claude Code, o comando embutido /mcp__latchkey__fix faz toda a ida e volta em um passo: ele pega a falha não corrigida mais recente e mãos à obra. Qualquer agente com capacidade MCP (Cursor, Codex e outros) pode ler os mesmos pacotes através das ferramentas do servidor. Setup, chaves de API e o comando de conexão pronto estão em Conecte seu agente de IA.
Observabilidade: todo reparo fica registrado#
- Recent Heals (na página de Runners) lista toda intervenção com sua categoria, veredito e uma descrição em linguagem simples da ação tomada; reparos diagnosticados por IA incluem as iterações de raciocínio do agente.
- Execuções reparadas são sinalizadas na tabela de execuções do Desempenho de pipeline e têm link direto para seu relatório de reparo.
- KPIs e tendências de reparo na página de Runners mostram com que frequência o reparo salva uma execução e quais categorias dominam, o que é em si um sinal sobre sua infraestrutura.
| Sinal | O que ele te diz |
|---|---|
| Selo de resultado | Healed (a correção teve sucesso), No Action (o sistema intencionalmente não agiu, como numa falha no seu próprio código), Failed (uma correção foi tentada mas não recuperou o passo), ou Pending (resultado ainda não registrado). |
| Pílula de tipo de correção | Como o reparo foi decidido: Auto-fix (uma regra determinística de código de saída), Pattern match (uma assinatura de falha conhecida com uma correção conhecida), ou Agent fix (o agente investigou). |
| Transcrição do agente | O registro passo a passo de um reparo por agente: o plano, a hipótese e o raciocínio por turno, cada ação e seu resultado, e as durações. |
Controles#
- Modo em nível de workspace em Settings, Self-Healing (owners e admins); as mudanças entram em vigor em cerca de um minuto.
- Alternador por configuração na página de Runners, para excluir um tipo de runner específico.
- Não há alternador por repositório hoje; o modo do workspace se aplica a todos os repositórios monitorados.
Perguntas comuns#
O autorreparo deixa meus builds mais lentos?
Não. Ele só ativa quando um passo falha; passos que passam rodam com zero latência adicional. Uma falha reparada custa o diagnóstico mais a repetição, o que é quase sempre muito mais barato do que um humano notar um build vermelho e clicar em reexecutar.
Ele pode ver meus segredos?
O diagnóstico roda localmente no seu runner contra a saída do passo que seu job já imprime. Nada de novo é exposto: segredos mascarados pelo GitHub Actions permanecem mascarados, e o runner é destruído após o job.
Ele pode repetir para sempre e inflar minha conta?
Não. As repetições são limitadas por passo, o estágio de IA tem um orçamento de tempo rígido, e o próprio runner tem um teto de vida de 4 horas. Também não há taxa separada para autorreparo: tempo de execução extra durante um reparo é cobrado pela tarifa padrão por minuto do runner.
O que acontece quando ele não consegue corrigir uma falha?
O passo falha exatamente como falharia em qualquer outro runner, com os logs originais intactos, mais um diagnóstico que você pode ler em Recent Heals. Não reparável é um veredito de primeira classe, não um erro.
Para ver quais falhas do mundo real o reparo cobre, navegue pela biblioteca de padrões de autorreparo no Learn - cada entrada mostra a correção manual ao lado do que o runner faz automaticamente. Para qualquer coisa que esteja falhando seus builds atualmente, comece pela biblioteca completa de erros de CI/CD.