Caiu ou Não?Pesquisar serviço
PT
Segurança e repositórios

GitHub Actions lockfile: como fixar actions por commit

O lockfile mantém referências legíveis por tag ou branch, mas faz o runner executar os commits revisados. Veja como adotar sem quebrar a CI.

Computador exibindo um workflow do GitHub Actions e o arquivo actions.lock com commits fixados

Resposta rápida

O lockfile do GitHub Actions permite manter referências fáceis de ler, como actions/checkout@v4, mas faz o workflow executar exatamente os commits registrados em .github/workflows/actions.lock. O recurso ficou disponível de forma geral em 28 de outubro de 2026 para GitHub Free, Team e Enterprise Cloud.

Instale a extensão oficial com gh extension install github/gh-actions-lock, execute gh actions-lock na raiz do repositório, revise o arquivo gerado e as mudanças nos workflows e envie tudo no mesmo pull request. Na CI, use gh actions-lock --verify para detectar lockfile ausente, desatualizado ou incompatível com as referências usadas.

O que o lockfile protege

Sem um lockfile, uma referência por tag ou branch é resolvida novamente no momento da execução. Se v4 ou main passar a apontar para outro commit, o workflow pode executar código diferente sem uma alteração visível no YAML. Fixar o SHA diretamente reduz esse risco, mas dificulta a leitura e a atualização em muitos arquivos.

O actions.lock separa essas duas necessidades. O YAML continua mostrando a versão humana, enquanto o runner usa o commit travado. A ferramenta oficial inclui actions diretas, dependências transitivas e referências de workflows reutilizáveis que consegue resolver. Isso reduz mudanças inesperadas, mas não prova que o commit escolhido é seguro.

Como preparar a primeira adoção

Comece em uma branch limpa e escolha um workflow de baixo risco. Antes de gerar o arquivo, inventarie todas as linhas uses:, incluindo actions de terceiros, actions compostas, workflows reutilizáveis, caminhos locais e imagens de contêiner. Essa lista ajuda a reconhecer o que foi coberto e o que continua fora do lockfile.

  • Atualize o GitHub CLI e autentique-se no host correto com gh auth status.
  • Instale a extensão oficial: gh extension install github/gh-actions-lock.
  • Execute gh actions-lock na raiz do repositório.
  • Abra .github/workflows/actions.lock e compare cada dependência resolvida com o YAML.
  • Revise commits, origem, mantenedor e permissões antes de aceitar o primeiro lock.
  • Envie o lockfile e os ajustes de workflow no mesmo pull request.

Como revisar o diff sem aceitar uma troca silenciosa

O lockfile é gerado pela ferramenta e não deve ser editado manualmente. No primeiro pull request, confirme o repositório de origem, a referência legível e o SHA resolvido para cada action. Em atualizações futuras, trate a mudança de commit como uma atualização de dependência: leia o release, o diff relevante, as permissões e o histórico do mantenedor.

Se uma tag ou branch se moveu de forma inesperada, não automatize --accept-moved. A própria extensão orienta investigar o motivo antes de aceitar. Use --relock apenas quando a intenção for avançar as referências para os commits atuais e houver revisão do código que passará a executar.

Como verificar o lockfile na CI

Adicione gh actions-lock --verify a um job que rode quando workflows ou o lockfile mudarem. A verificação consulta a origem e valida cobertura e proveniência. Um erro após editar uses: normalmente indica que o lockfile precisa ser regenerado e enviado junto da mudança.

O modo --verify-local funciona sem rede e confere a cobertura local, o que pode ser útil em pre-commit. Ele não confirma a proveniência dos commits e não substitui --verify na proteção principal. O modo --no-fix apenas relata diferenças, sem reescrever arquivos.

  • Faça o job disparar para mudanças em .github/workflows/** e no actions.lock.
  • Conceda somente as permissões de leitura necessárias ao job de verificação.
  • Execute gh actions-lock --verify e falhe o check quando houver divergência.
  • Mantenha a revisão humana para qualquer SHA novo ou alterado.
  • Use o modo local apenas como retorno rápido antes do push.

Dependabot e política obrigatória

Quando o Dependabot atualiza uma dependência coberta, o GitHub informa que o pull request correspondente também regenera a entrada do lockfile sem configuração adicional. Ainda assim, revise o novo commit antes do merge; a atualização automática não é uma aprovação de segurança.

Administradores podem exigir lockfile por política. Ative a regra Require lockfile somente depois de cobrir os workflows escolhidos e testar a verificação. A adoção pode ser gradual por workflow, mas todas as dependências de um workflow já incluído precisam constar no arquivo. Habilitar a exigência cedo demais pode bloquear execuções legítimas.

O que o actions.lock não cobre

A documentação atual da extensão registra limitações. Actions locais referenciadas por caminho relativo não são seguidas automaticamente, imagens de contêiner não são travadas pelo arquivo e alguns formatos de chamada de workflow reutilizável podem exigir verificação adicional. Para contêineres, use digest @sha256 quando o fornecedor publicar uma imagem verificável.

Expressões dinâmicas, código baixado por scripts e dependências instaladas dentro de uma action continuam fora do alcance do lockfile. O arquivo também não substitui secret scanning, CodeQL, permissions explícitas, revisão de pull request, proteção de ambiente ou isolamento de runner. Ele fixa o código resolvido; não atesta confiança, ausência de vulnerabilidade ou comportamento seguro.

Como diagnosticar uma falha depois de ativar

Se o workflow parar com mensagem de lockfile ausente ou desatualizado, compare a primeira referência uses: citada no log, regenere o arquivo e revise o diff. Se a resolução falhar, confirme autenticação do gh, host, permissões e acesso de rede antes de ampliar o token. Em runners próprios, valide também a versão do runner e a disponibilidade do GitHub.

Uma indisponibilidade geral aparece no GitHub Status; um erro restrito a um repositório costuma apontar para referência, política, permissão ou lockfile. Não remova a proteção para fazer o job passar sem entender qual dependência deixou de ser resolvida.

Limites e próxima ação útil

Este guia foi verificado em 29 de outubro de 2026 no anúncio de disponibilidade geral, na documentação e no repositório oficial da extensão. O recurso está disponível nos planos informados pelo GitHub, mas políticas administrativas e alguns controles podem variar por plano e organização. Consulte a documentação do seu ambiente antes de exigir a regra em todos os repositórios.

Escolha hoje um workflow de teste, gere o actions.lock e abra um pull request sem ativar a exigência global. Confirme que o arquivo cobre dependências diretas e transitivas, rode --verify e execute o workflow. Depois de revisar o resultado, repita por grupo de repositórios e só então torne o lockfile obrigatório.

Faça o próximo teste

Fontes consultadas

Os links abaixo servem para conferir conceitos, orientações oficiais e o critério editorial usado neste conteúdo.

Outros guias ligados ao mesmo tipo de problema.