transparência radical

Cada byte que sai da sua máquina: listado aqui. Seu código não sai sem você mandar.

A análise é 100% local. Por conta própria, a codafort envia só duas coisas: uma métrica de uso pseudônima (sem código, sem caminho de arquivo, sem a localização de nenhum finding) e, com licença ativa, a revalidação dela uma vez por dia (o id da licença e o próprio token, que traz o tier, a validade e o e-mail do titular). Código e findings só saem quando você os entrega à Platform da sua organização, ou conecta um repositório a ela. Está tudo nesta página, e a telemetria você desliga numa linha.

◔ Estado atual (honesto): o mecanismo existe no binário, mas o coletor ainda não está no ar: hoje o binário tenta o envio a cada scan interativo e ninguém recebe. Publicaremos aqui a data em que a coleta começar. Não alegamos coletar antes de coletar.

A linha vermelha

Se um dado pode identificar você, seu código ou seu alvo, ele não é telemetria; é seu. Telemetria nenhuma o carrega, em nenhum plano: ele só sai quando você mesmo o entrega à Platform da sua organização (abaixo).

✕ O que a telemetria NUNCA leva

✕ Seu código, trechos ou qualquer conteúdo de arquivo

✕ Caminhos, nomes de arquivo, de repositório ou de branch

✕ Nomes e versões das suas dependências

✕ Segredos, variáveis de ambiente, config

✕ A localização de um finding (arquivo:linha)

✕ Seu IP, hostname, usuário ou e-mail

✓ O que enviamos (pseudônimo)

✓ Que um scan aconteceu, e quanto tempo levou (em faixas, não o valor exato)

✓ Quantos findings, por severidade

✓ Por classe de CWE (ex.: "SQL injection", nunca onde)

✓ Quais linguagens você escaneia

✓ Versão da codafort, sistema e arquitetura

✓ Um ID aleatório da instalação, fixo, sem nome nem e-mail

O pacote inteiro, exatamente como sai

Um envio real, gerado por um scan que encontrou um SQL injection. Rode codafort scan . --telemetry-dry-run e veja o seu, byte a byte, sem enviar nada.

{
  "schema": "coda-telemetry/1",
  "install_id": "a3f…",            // aleatório, fixo / random, fixed
  "version": "0.1.0",
  "os": "macos", "arch": "aarch64",
  "event": "scan",
  "files_bucket": "1-9",            // faixa, nunca o nº exato / bucket, never exact
  "duration_bucket": "100ms-1s",
  "findings": {
    "by_severity":  { "critical": 1 },
    "by_cwe_class": { "89": 1 },    // classe, jamais arquivo:linha / class, never file:line
    "by_lang":      { "python": 1 }
  }
}

Níveis; do silêncio total ao seu próprio painel

NívelO que saiPadrão
0 · Silenciosonada: CI, air-gap, banco/órgão públicoauto (CI / não-TTY)
1 · Heartbeatas contagens agregadas acimaLIGADO
2 · Produtoquais regras disparam, aceite do fix, falsos-positivos que você marcaopt-in (ainda não existe)
3 · Sua Platformnão é telemetria: o que você entrega à Platform da sua organização com platform push ou o que a conexão sincroniza, findings com trecho de código inclusive (ver abaixo)opt-in, plano Platform

Desligar é grátis e leva uma linha

codafort config telemetry off        # permanente / permanent
export CODAFORT_TELEMETRY=off         # sessão · CI / session · CI
codafort scan . --no-telemetry        # só desta vez / just this once
export CODAFORT_LICENSE_OFFLINE=1     # sem revalidar a licença / no licence check

Quando você liga a Platform, sai o seu dado, e só porque você mandou

O canal codafort platform não é telemetria: ele entrega à Platform da sua organização o resultado da análise, para a fila, o histórico de cada finding e o placar antes/depois. Nada passa por ele até você autorizar este computador.

O que sai, e quando

platform push: os findings (regra, severidade, mensagem e o trecho de código onde estão), as dependências e a lista de arquivos, com o nome do repositório, a branch e o commit. O resto do grafo fica na máquina, a não ser com --with-graph. Com --git, vai também o nome e o e-mail do autor do commit de cada finding.

Caminho absoluto não sai: tudo vai relativo à raiz do repositório, e o envio é recusado se sobrar algum.

Depois de platform connect: um registro por comando naquele repositório, sem novo envio seu: o verbo, o hash dos argumentos, quantos findings, a duração, o repositório, a branch e o commit, o agente de IA usado e as propostas de correção com a justificativa dele. Sem caminho e sem código. No platform login, o nome desta máquina vira o rótulo do dispositivo.

Como não mandar

Não faça platform login: sem sessão (ou sem token no CI), o canal não tem com quem falar.

platform disconnect desliga o repositório e descarta o que esperava envio; platform logout revoga a sessão.

A versão para ambiente isolado não tem o canal. O guia completo está na documentação.

Nós mesmos ameaça-modelamos a nossa telemetria

Coletar métrica de segurança cria um alvo. Uma empresa de segurança tem que provar que cuidou disso, e não só prometer.

Sem mapa de vulnerabilidades

Findings saem só como contagem por classe, nunca com arquivo, linha ou repositório. Um vazamento da nossa base não reconstrói "qual bug, onde".

Sem IP guardado

O coletor vai descartar o IP na chegada. Nada de geolocalização, nada de identificar máquina.

ID aleatório, sem nome

O install-id é um número aleatório gerado na instalação. Fica o mesmo naquela máquina, e por isso o tratamos como dado pessoal pseudônimo; mas não carrega nome, e-mail nem nada da máquina.

Publicamos só agregado

Nenhum número que publicarmos isola um cliente (k-anonimato).

Para ambiente isolado, uma versão sem rede

No contrato Platform há uma versão para ambiente sem internet, entregue sem telemetria, sem revalidação online da licença e sem o canal da Platform. O código de rede não vem nela, e um auditor consegue conferir isso. A versão pública tem os três, e a telemetria se desliga numa linha.

E a LGPD / GDPR

O Nível 1 é dado pessoal pseudonimizado: um ID fixo, sem nome nem e-mail. A base legal é o legítimo interesse em entender e corrigir o produto, e você se opõe desligando. Na Platform, a sua organização é a controladora e a Orchestro trata os dados como operadora, sob contrato e acordo de tratamento de dados, com isolamento por cliente. A página de privacidade detalha cada tratamento.