Configuración

Dónde cambiar el comportamiento de codafort: archivos del repositorio, flags y variables de entorno. Nada de eso queda en un servidor.

Reglas

Las reglas cargan en cuatro capas. Cuando dos capas definen el mismo rule.id, gana la de número mayor:

#OrigenCuándo
1builtin, las reglas que vienen con codafortsiempre
2.codafort-rules.yaml en la raíz del proyectosi existe
3.codafort-rules/*.yamlsi existe
4--rules-dir <dir>cuando se pasa

Una regla custom, en YAML, puede ser regex, ts-query, taint-path (de una fuente hasta un sink, con sanitizadores) o una composición (all_of/any_of/not/path_glob). codafort rules lista lo cargado.

attest no carga --rules-dir: el hash de las reglas en la declaración contrafirmada corresponde exactamente a lo que corrió.

Gate

.codafort-gate.yaml declara las condiciones de codafort gate y de engine analyze --fail-on-quality-gate. Sin el archivo, vale el predeterminado: reprueba si vulnerabilities, blocker, taint_findings o risk_findings_high supera cero. Orden de resolución: --config, luego el archivo en el directorio, luego el predeterminado. Ver CI y el gate.

Supresiones que persisten

codafort false-positive SF-3 --reason "la entrada viene de una constante"   # marca como FP
codafort risk-accept SF-5 --reason "mitigado en el WAF hasta Q4"           # acepta el riesgo (WontFix)

Ambas persisten entre ejecuciones y quedan registradas en el resultado: un risk-accept no reprueba el gate, pero sigue en el informe, y la declaración contrafirmada lleva el resultado junto con lo suprimido.

Sesión y caché

  • .codafort/session.json: los SF-n del último scan (habilita explain/fix sin volver a analizar).
  • .codafort/cache.redb: caché incremental; engine analyze --incremental reanaliza solo lo que cambió. codafort engine cache la inspecciona y la limpia.

Ambos son regenerables y no deben ir al control de versiones.

--taint-k <0|1> ajusta la precisión con que se sigue el flujo de datos entre funciones (attest usa 0).

Salidas

engine analyze --format <json|sarif|sonarqube|html|graphml|csv|cyclonedx|spdx|finding>. sarif lleva codeFlows, el camino del dato que muestra el code scanning; finding emite el Finding canónico coda-finding/1; cyclonedx y spdx son el SBOM. report --tui y report --web leen el envelope local (el --web, dashboard servido, es del plan Platform). El dashboard HTML no busca nada en la red.

Telemetría

codafort config telemetry status
codafort config telemetry off        # permanente
export CODAFORT_TELEMETRY=off         # sesión / CI
codafort scan . --no-telemetry        # solo esta vez
codafort scan . --telemetry-dry-run   # muestra el payload, no envía

En CI o sin TTY, el nivel baja solo a 0. Hoy el colector no está provisionado: el binario intenta el envío en cada scan interactivo y nadie lo recibe. La telemetría es seudónima: un id aleatorio y fijo de la instalación, sin nombre ni correo. El texto público está en codafort.com/telemetry.

Licencia

codafort license activate <token>   # verifica la licencia offline
codafort license status             # tier y validez
codafort license deactivate         # vuelve a Free

La Seguridad nunca se bloquea: sin licencia, scan/explain/fix/vet/gate/MCP funcionan enteros. Cada plan suma al anterior. Vibe desbloquea review y los ejes de calidad y riesgo; Pro, los momentos de runtime (codaprobe, codatrace y el triaje de flota de codacrash); Verified, la declaración contrafirmada (attest create/bundle); Platform, la gobernanza multi-repo (engine merge, el portafolio de bulk-scan) y el dashboard servido (report --web). Verificar una declaración (attest verify) es gratis. Ver codafort.com/pro.

Variables de entorno

VariableEfecto
CODAFORT_TELEMETRY=offapaga la telemetría en la sesión
CODAFORT_ATTEST_KEY · CODAFORT_ATTEST_DELEGATIONdeclaración air-gapped (subclave y delegación); ver Declaración contrafirmada
CODAFORT_VERSION · CODAFORT_INSTALL · CODAFORT_NO_MODIFY_PATHsolo para el instalador install.sh
CODATRACE_MAX_EVENTSmáximo de eventos que emite el agente de codatrace (predeterminado 10 000)
SG_DENY_MODULESdeny-list de codaguard (codacrash)