Início/Blog/Proveniência de PRs de IA
Software Supply Chain

Proveniência da software supply chain para pull requests gerados por IA

Um artefato assinado prova qual workflow construiu um commit. Sozinho, não explica por que um agente criou aquele commit, qual autoridade iniciou a tarefa, quais tools influenciaram o diff ou qual humano aceitou o resultado.

IA adiciona uma etapa de origem antes da proveniência tradicional de build

SLSA define proveniência como informação verificável sobre onde, quando e como um artefato foi produzido. Artifact attestations do GitHub conectam artefato a repositório, commit SHA, workflow e ambiente de build. Esses controles são essenciais, mas um PR gerado por IA adiciona outra pergunta: como a mudança de source foi produzida?

A resposta não deve ser um rótulo vago “AI-assisted”. Um registro útil conecta tarefa aprovada, principal responsável, identidade do agente, modelo e tools, contexto recuperado, arquivos gerados, tentativas, testes, reviews e commit final. A proveniência de build continua a cadeia até o artefato.

Cadeia de proveniência do PR gerado por IA
01 IntençãoTarefa aprovadaSpec, owner, risco, repositórios, tools e critérios permitidos.
02 GeraçãoRegistro do agenteIdentidade, modelo, tools, fontes, permissões, prompts e sessão.
03 MudançaDiff geradoArquivos, dependências, migrações, testes, manifest e commit.
04 ReviewDecisão humanaReviewers, findings, exceções, aprovações e resultado da branch.
05 BuildBuilder confiávelWorkflow, source SHA, materiais, parâmetros, isolamento e resultado.
06 DescriçãoSBOM e attestationsComponentes, licenças, vulnerabilidades, proveniência, testes e políticas.
07 AssinaturaArtefato verificávelDigest, assinatura por identidade, certificado, transparência e registry.
08 DeployLinhagem runtimeAmbiente, aprovação, digest, política, owner e rollback.

Código gerado precisa de manifest, não estigma

Rótulos de IA devem ajudar review e incident response, não criar binário falso entre “código humano” e “código de IA”. Humanos usam autocomplete, clientes gerados, migrations, templates e agentes no mesmo PR. Registre quais arquivos ou hunks foram gerados ou transformados, qual sistema fez isso e qual humano assumiu responsabilidade.

O manifest também captura dependências e contexto externo introduzidos. Se o código copiou padrão inseguro de documentação ou adicionou pacote comprometido, investigadores precisam reconstruir a influência sem armazenar prompts sensíveis para sempre.

AtribuiçãoQuais principal, agente, reviewer, builder e deployer foram responsáveis?
IntegridadeSource revisado, artefato, SBOM, assinatura e digest implantado ficaram ligados?
ReprodutibilidadeBuild e contexto importante de geração podem ser reconstruídos ou comparados?
PolíticaAdmission verifica proveniência, assinaturas, componentes, reviews e exceções?

SBOM e proveniência respondem perguntas diferentes

SBOM descreve componentes. Proveniência descreve como artefato foi produzido. Assinatura liga identidade a digest ou attestation. Review explica por que source foi aceito. Deployment metadata diz onde roda. Nenhum substitui os demais.

GitHub gera attestations de build e SBOM. Sigstore suporta assinatura baseada em identidade com certificados curtos, e Cosign verifica attestations in-toto contra políticas. Assim, o gate pergunta não apenas “esta imagem está assinada?”, mas “este digest veio do commit aprovado, pelo workflow permitido, com SBOM e review exigidos?”

EvidênciaO que provaO que não provaGate de verificação
Registro da tarefaPor que começou, quem delegou e o que o agente podia fazer.Que o código é correto ou seguro.Exigir tarefa aprovada, permissões limitadas e owner.
Manifest de código geradoQuais superfícies e tools envolveram geração.Que toda influência é conhecida.Exigir disclosure em arquivos e dependências de alto risco.
Review do PRQuais humanos e checks aceitaram source.Que o artefato posterior corresponde ao source.Protected branches, required checks, CODEOWNERS e exceções.
Proveniência SLSAOnde, quando e como artefato foi construído.Por que source foi criado ou aprovado.Verificar builder, source SHA, parâmetros e digest.
Attestation SBOMQuais componentes declarados estão no artefato.Que componentes são seguros ou completos.Licença, vulnerabilidade, política e allowlist.
Assinatura e deploymentIdentidade ligada ao artefato e onde foi implantado.Que runtime continua seguro.Admission policy, digest pinning, aprovação e monitoramento.

Política deve verificar a cadeia na promoção

Evidência que ninguém verifica é documentação, não controle. Regras de PR exigem evidência de source. Builders confiáveis emitem proveniência e SBOM. Registries preservam digests e assinaturas. Admission rejeita artefatos sem cadeia aprovada ou com exceções expiradas.

A verificação também precisa de failure modes. Se storage de proveniência cair, produção para? Qual caminho emergencial existe? Quem aprova, por quanto tempo e qual evidência será preenchida depois? O caminho de exceção faz parte da supply chain.

O que eu construiria

Eu construiria um ledger de proveniência indexado por PR, commit e artifact digest. Ele uniria tarefa e agente, manifest, reviews, checks, SBOM, SLSA, assinaturas, storage, deployments e incidentes runtime.

A visão principal responderia nos dois sentidos: partindo do artefato em produção, voltar à tarefa e sessão do agente; partindo de um agente ou tool comprometida, encontrar todos os PRs, artefatos e deployments afetados.

O princípio de design

Geração por IA não enfraquece o valor da proveniência; estende a cadeia que deve ser provada. Preserve intenção e evidência de geração antes do commit, depois use builds confiáveis, SBOMs, attestations, assinaturas e deployments para manter essa evidência ligada à produção.