Configuração

Onde mudar o comportamento do codafort: arquivos do repositório, flags e variáveis de ambiente. Nada disso fica em servidor.

Regras

As regras carregam em quatro camadas. Quando duas camadas definem o mesmo rule.id, vale a de número maior:

#OrigemQuando
1builtin, as regras que vêm com o codafortsempre
2.codafort-rules.yaml na raiz do projetose existir
3.codafort-rules/*.yamlse existir
4--rules-dir <dir>quando passado

Uma regra custom, em YAML, pode ser regex, ts-query, taint-path (de uma fonte até um sink, com sanitizadores) ou uma composição (all_of/any_of/not/path_glob). codafort rules lista o que está carregado.

O attest não carrega --rules-dir: o hash das regras na declaração contra-assinada corresponde exatamente ao que rodou.

Gate

.codafort-gate.yaml declara as condições do codafort gate e do engine analyze --fail-on-quality-gate. Sem o arquivo, vale o padrão: reprova se vulnerabilities, blocker, taint_findings ou risk_findings_high passar de zero. Ordem de resolução: --config, depois o arquivo no diretório, depois o padrão. Ver CI e gate.

Supressões que persistem

codafort false-positive SF-3 --reason "entrada vem de constante"   # marca como FP
codafort risk-accept SF-5 --reason "mitigado no WAF até Q4"        # aceita o risco (WontFix)

As duas persistem entre execuções e ficam registradas no resultado: um risk-accept não reprova o gate, mas continua no laudo, e a declaração contra-assinada carrega o resultado junto com o que foi suprimido.

Sessão e cache

  • .codafort/session.json: os SF-n do último scan (permite explain/fix sem analisar de novo).
  • .codafort/cache.redb: cache incremental; engine analyze --incremental reanalisa só o que mudou. codafort engine cache inspeciona e limpa.

Os dois são regeneráveis e não devem ir para o controle de versão.

--taint-k <0|1> ajusta a precisão com que o fluxo de dados é seguido entre funções (o attest usa 0).

Saídas

engine analyze --format <json|sarif|sonarqube|html|graphml|csv|cyclonedx|spdx|finding>. O sarif traz codeFlows, o caminho do dado que o code scanning mostra; finding emite o Finding canônico coda-finding/1; cyclonedx e spdx são o SBOM. report --tui e report --web leem o envelope local (o --web, dashboard servido, é do plano Platform). O dashboard HTML não busca nada na rede.

Telemetria

codafort config telemetry status
codafort config telemetry off        # permanente
export CODAFORT_TELEMETRY=off         # sessão / CI
codafort scan . --no-telemetry        # só desta vez
codafort scan . --telemetry-dry-run   # mostra o payload, não envia

Em CI ou sem TTY, o nível cai sozinho para 0. Hoje o coletor não está provisionado: o binário tenta o envio a cada scan interativo e ninguém recebe. A telemetria é pseudônima: um id aleatório e fixo da instalação, sem nome nem e-mail. O texto público está em codafort.com/telemetry.

Licença

codafort license activate <token>   # verifica a licença offline
codafort license status             # tier e validade
codafort license deactivate         # volta ao Free

A Segurança nunca é trancada: sem licença, scan/explain/fix/vet/gate/MCP funcionam inteiros. Cada plano acrescenta ao anterior. Vibe destrava review e os eixos de qualidade e risco; Pro, os momentos de runtime (codaprobe, codatrace e a triagem de frota do codacrash); Verified, a declaração contra-assinada (attest create/bundle); Platform, a governança multi-repo (engine merge, o portfólio do bulk-scan) e o dashboard servido (report --web). Verificar uma declaração (attest verify) é grátis. Ver codafort.com/pro.

Variáveis de ambiente

VariávelEfeito
CODAFORT_TELEMETRY=offdesliga a telemetria na sessão
CODAFORT_ATTEST_KEY · CODAFORT_ATTEST_DELEGATIONdeclaração air-gapped (sub-chave e delegação); ver Declaração contra-assinada
CODAFORT_VERSION · CODAFORT_INSTALL · CODAFORT_NO_MODIFY_PATHsó para o instalador install.sh
CODATRACE_MAX_EVENTSmáximo de eventos que o agente do codatrace emite (padrão 10 000)
SG_DENY_MODULESdeny-list do codaguard (codacrash)