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:
| # | Origem | Quando |
|---|---|---|
| 1 | builtin, as regras que vêm com o codafort | sempre |
| 2 | .codafort-rules.yaml na raiz do projeto | se existir |
| 3 | .codafort-rules/*.yaml | se 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: osSF-ndo últimoscan(permiteexplain/fixsem analisar de novo)..codafort/cache.redb: cache incremental;engine analyze --incrementalreanalisa só o que mudou.codafort engine cacheinspeciona 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ável | Efeito |
|---|---|
CODAFORT_TELEMETRY=off | desliga a telemetria na sessão |
CODAFORT_ATTEST_KEY · CODAFORT_ATTEST_DELEGATION | declaração air-gapped (sub-chave e delegação); ver Declaração contra-assinada |
CODAFORT_VERSION · CODAFORT_INSTALL · CODAFORT_NO_MODIFY_PATH | só para o instalador install.sh |
CODATRACE_MAX_EVENTS | máximo de eventos que o agente do codatrace emite (padrão 10 000) |
SG_DENY_MODULES | deny-list do codaguard (codacrash) |