para quem programa com IA · MCP

Seu código, protegido.

O revisor de segurança que o seu agente chama a cada mudança, dentro do Claude Code, do Codex, do Cursor, do OpenCode, do Antigravity e de qualquer cliente MCP: segue o dado da entrada até o sink, conserta e diz o que não olhou. Roda na sua máquina, de graça, e o código só sai dela se você mandar. Quando um cliente pede prova, o veredito vira evidência, e a evidência, uma declaração contra-assinada que qualquer pessoa verifica offline.

Pré-lançamento: a codafort ainda não está disponível para instalar. Entre na lista de espera →

✓ Quando a codafort fala, é medido: o gate de CI exige precisão 1.000 nas categorias do NIST Juliet que ele cobre, e o resto está publicado (Juliet Java completo: precisão 0,88 e recall 0,81, em 2026-10-02), inclusive onde ainda perdemos.

Saída ilustrativa, com a forma real dos contratos coda-vet/1, coda-evidence/1 e coda-attestation/1.

◍ No seu agente
MCP · Claude Code · Codex · Cursor · OpenCode · Antigravity
⌘ Um comando
codafort mcp install
✎ Conserta pra você
fix SF-n
⛁ análise local
o código só sai se você mandar
◆ Detectar é grátis
para sempre
✦ Prova assinada
Ed25519 · /verify

a real sobre programar com IA

O agente escreve com confiança, e ninguém revisa tudo o que ele escreve.

Quase metade do código gerado por IA vem com alguma falha de segurança, e cada rodada de "melhora isso" aumenta a chance. Achar essas falhas sempre foi trabalho de ferramenta. O que mudou é que agora você também precisa provar que olhou: para você, para quem revisa o PR e para o cliente que pede evidência. Ler cada linha que a IA escreve não escala; medir cada mudança e assinar o resultado escala.

~45%
do código gerado por IA tem alguma vulnerabilidade (Veracode 2025, 100+ modelos em 80 tarefas)
+37%
de falhas críticas depois de 5 rodadas de refinamento por LLM (IEEE-ISTAS 2025; estudo único, leia com essa ressalva)
1.000
de precisão exigida pelo gate de CI nas categorias do NIST Juliet que ele cobre; abaixo disso, reprova o build
0 B
do seu código enviados pela análise, que roda inteira na sua máquina; trechos só saem pelo platform push, quando você manda

como funciona

Três passos, dentro do loop do agente.

A codafort é um servidor MCP que o seu agente chama enquanto escreve, e uma CLI que devolve exatamente o mesmo dado. Roda no seu terminal, sem painel para abrir.

01

Instala no agente

codafort mcp install registra o servidor em cada agente instalado: Claude Code, Codex, Cursor, OpenCode e Antigravity; qualquer outro cliente MCP entra por configuração stdio. Dez tools, todas ancoradas no motor determinístico: de scan, scan_diff, explain e fix_preview a vet e à triagem.

02

O agente programa; a codafort confere

A cada diff, scan_diff segue o caminho real do dado (taint interprocedural sobre um Code Property Graph) e devolve só o que é confirmado. fix_preview entrega o patch como dado: quem grava é o agente, com você aprovando.

03

O veredito vira prova

codafort vet julga a mudança em cinco eixos e diz quais não rodaram. Com --evidence-out, o veredito entra no ledger; attest create contra-assina o conjunto. Como o vet funciona →

o motor por dentro

Como um dado não-confiável vira finding.

O grafo abaixo é uma ilustração, com dez nós de uma app Flask. Os passos são os que o motor executa de verdade: monta o grafo, marca as fontes, segue o dado e só reporta o que chega a um sink.

  1. Para o agente, seu repositório é um monte de arquivos.
  2. O motor monta o grafo: cada função, cada chamada e o valor que passa de uma para a outra.
  3. Depois marca de onde vem o dado que ninguém controla: aqui, a query string e o formulário.
  4. E segue esse dado aresta por aresta. Quando ele passa por um sanitizador, a contaminação termina ali.
  5. Se o dado chega a um sink sem sanitização, vira finding, com o caminho inteiro e o conserto.

36 arquivos · nenhum grafo ainda

grafo · 10 nós · 8 arestas

2 fontes de dado não-confiável

taint · 5 arestas percorridas · 1 sanitizador no caminho

▲ crit SF-1 · CWE-89 SQL injection · api/users.py:42 · request.args → get_user() → build_query() → db.query() · fix: consulta parametrizada
render_template(): sanitizado por escape_html(), sem finding

Clique num nó para ver de onde o dado vem e até onde ele chega.

Fonte: parâmetro da query string. Chega a db.query() em três arestas, sem passar por sanitização.

Fonte: campo do formulário. Chega a render_template(), mas passa antes por escape_html().

Recebe request.args e repassa a build_query(): o taint atravessa a função.

Concatena o valor na string SQL. Daqui o dado segue contaminado até db.query().

Sink de SQL. É alcançado por request.args sem sanitização: vira o finding SF-1, CWE-89.

Recebe request.form e passa o valor por escape_html() antes de renderizar.

Sanitizador de HTML. Depois dele o dado deixa de contar como contaminado para XSS.

Sink de XSS. Recebe dado de request.form só depois de escape_html(), então não há finding.

Lê a configuração local. Não é fonte de dado não-confiável, e o motor não o segue.

Abre a conexão que db.query() usa. O valor não vem de uma fonte, então não entra no finding.

onde ele entra

Do primeiro prompt à declaração contra-assinada, sem trocar de ferramenta.

Você não precisa saber o que é SQL injection para não publicar uma. O mesmo motor responde no editor, no commit, no PR e no dia em que alguém pede evidência, sempre com o mesmo Finding e o mesmo vocabulário.

mcp

Enquanto a IA escreve

O agente chama scan_diff a cada mudança e recebe só o que o motor confirma, com o caminho do dado da entrada até o sink. Quem escreve continua sendo o agente; ele passa a escrever com um revisor do lado.

lsp · watch

No editor

codafort lsp fala LSP 3.17 e marca o achado na linha, no VS Code, no Neovim ou no Helix. codafort watch refaz a análise a cada salvamento, em menos de 500 ms, sem consumir CPU parado.

vet

Antes de commitar

codafort vet julga aquela mudança em cinco eixos, separa o que bloqueia do que é aviso e nomeia os eixos que não rodaram. O delta é medido contra a base do PR, e não contra o seu HEAD.

gate · sarif

No PR e no CI

codafort gate roda no pipeline com os limiares do seu arquivo de política e decide o exit code. A Action oficial do GitHub publica o SARIF no code scanning e arquiva o coda-gate/1 como evidência. Na Action, o gate só reporta, e com vet-enforce: true um veredito bloqueante do vet reprova o job; para reprovar pelo gate, chame o codafort gate direto no pipeline. Tudo isso em qualquer plano.

iast · dast · crash

Quando o app roda

O codatrace confirma, em execução, quais achados estáticos foram alcançados por dado não-confiável; o que ele não viu fica marcado como unreached, que quer dizer não medido. O codaprobe testa a app viva por fora, num alvo autorizado. Se um processo quebra, o codacrash lê o dump e aponta a causa.

attest · verify

Quando alguém pede prova

attest create, num plano pago, leva o conjunto de evidências para a codafort contra-assinar. Quem recebe confere o token offline, de graça, em /verify ou pela CLI, sem instalar nada: vê que a declaração não mudou depois de emitida e quem a emitiu. O conteúdo continua sendo o que você declarou.

Achar e consertar vulnerabilidade vai ser grátis. Os planos pagos e os preços estão em definição e saem no lançamento; quem está na lista de espera fica sabendo primeiro.

a cadeia de prova

Do finding à declaração contra-assinada: um ledger que qualquer pessoa recomputa.

Contratos públicos e versionados, cada um com $id resolvível. Cada camada da plataforma contribui evidência no mesmo formato, inclusive sobre o que não mediu. O veredito é uma função recomputável do ledger, e a assinatura cobre o ledger inteiro.

  • codafort · src
  • codatrace · iast
  • codaprobe · dast
  • codacrash · run
  1. findingcoda-finding/1 o que o motor achou, com o caminho do dado
  2. vetcoda-vet/1 eixo pulado nunca é eixo limpo
  3. evidencecoda-evidence/1 ← codafort · codatrace · codaprobe · codacrash cada camada contribui no mesmo formato (modality, granularity) confirmed · sanitized · unreached (= não medido)
  4. ledgerevidence[] ordem total · veredito recomputável · supersedes
  5. declarationcoda-attestation/1 Ed25519 · token ou DSSE/in-toto · verify offline
coda-finding/1O Finding canônico que atravessa código e runtime: regra, severidade, explorabilidade, localização, caminho source→sink, fix, proveniência.
coda-vet/1Veredito sobre UMA mudança: blocking (provado) × advisory, e axes.skipped: o eixo que não rodou aparece no próprio veredito.
coda-evidence/1A contribuição de cada modalidade: quantos findings estáticos o runtime confirmed, sanitized ou deixou unreached ("não medido", nunca "seguro"), com a cobertura de instrumentação em números absolutos.
evidence[]Ordem total (modalidade, digest): dois emissores produzem o mesmo ledger. O veredito é função de (standard, reduction_version) e só aperta: confirmed-at-runtime vira pass → fail, e nada afrouxa. Mais evidência sobre o mesmo scan não edita: sucede (supersedes).
coda-attestation/1Contra-assinado com Ed25519 (online) ou por sub-chave delegada (air-gapped). Duas faces do mesmo payload: token para o data room, envelope DSSE/in-toto para policy engine. Verificação grátis, offline, em /verify ou na CLI.
Invariante positivo-só. Evidência só soma confiança; ausência de observação nunca vira "seguro". O campo unreached é de primeira classe, o axes_skipped viaja no veredito, e a cobertura é publicada em contagem absoluta. Um laudo neste formato não consegue esconder o que não olhou: é a forma do contrato que impede, sem depender de política interna.

as camadas

Quatro jeitos de conferir o que o seu agente escreveu.

Comece pelo código: achar e consertar falha nele vai ser grátis, e a análise roda na sua máquina. Com a app rodando, as outras três camadas mostram o que acontece com ela de verdade, e cada uma diz o que não conseguiu verificar.

codafort grátis

No seu código

Lê o que você e o seu agente escreveram, em 16 linguagens (Delphi inclusive), e acha onde um dado que vem de fora chega a um ponto perigoso, como uma consulta ao banco. Também confere dependências com falha conhecida, segredos esquecidos no código, infraestrutura como código e o pipeline de CI. O caminho que ele mostra existe no código; se a produção passa por ele, o código sozinho não diz.

codatrace plano pago

Com a app rodando, por dentro

Roda dentro da sua app (Python, Node ou JVM) enquanto você usa ou testa, e mostra quais daqueles achados o dado de fora alcançou de verdade. Só observa e não muda nada na app. O que ninguém exercitou aparece como "não medido", e não como seguro. Na JVM, SQL e XSS ainda ficam de fora.

codaprobe plano pago

Com a app rodando, por fora

Testa a sua API pela rede, como alguém de fora faria, e só no endereço que você autorizou. Uma falha só é apontada quando a resposta ao teste difere da resposta normal, e cada requisição fica num registro que dá para conferir depois. Rota que o teste não percorreu continua sem verificação.

codacrash grátis

Quando a app cai

Lê o dump de um crash direto, sem depurador, e diz o que causou a queda, se a falha parece explorável e um ID que junta os crashes iguais. Serve só para defesa e nunca gera exploit. Analisar um dump vai ser grátis; juntar crashes de muitas máquinas vai entrar num plano pago.

A suíte em detalhe →

para o time de segurança

Análise de fluxo de dados de verdade, com o número publicado inteiro.

No OWASP Benchmark 1.2, re-medido em 2026-09-28 contra a CodeQL e o Semgrep na mesma rodada: zero falso-positivo em 2.740 casos, onde a CodeQL levanta 531 e o Semgrep 552, com o mesmo recall da CodeQL (0.972). A ressalva vai junto: afinamos contra esse corpus e eles não, então trate como teto; no holdout que nenhum ajuste pode usar, a precisão segue 1.000. E publicamos onde perdemos: uma régua em que a CodeQL é mais precisa.

PrecisãoFPRecallFalsos-positivos
codafort1.0000.0000.9720
CodeQL 2.270.7210.4010.972531
Semgrep OSS 1.177 (p/default)0.6930.4170.882552

OWASP Benchmark 1.2, Java, os três lados na mesma rodada e no mesmo scorer (2026-09-28; CodeQL security-extended, Semgrep na sua melhor configuração). O gate de CI reprova o build se a precisão cair abaixo de 1.000 nas categorias do NIST Juliet que ele cobre. Metodologia, as outras linguagens e as ressalvas em /benchmark.

planos

Planos e preços: em definição.

O que já está decidido: achar e consertar vulnerabilidade vai ser grátis, na sua máquina. Os planos pagos saem no lançamento.

pré-lançamento

Seja dos primeiros a usar.

Deixe o seu e-mail: avisamos quando a codafort abrir e chamamos os primeiros para testar.