El canal con la Platform
codafort platform entrega los resultados del análisis, de la máquina del dev o del CI, a la codafort Platform. Nada sale hasta que enciendes el canal.
En la Platform quedan la cola por organización, el estado de cada finding entre ejecuciones y el marcador antes/después.
Estado (septiembre de 2026): la Platform funciona como piloto que provisionamos nosotros; el SaaS enapp.codafort.comtodavía no está en línea. Apuntado allí, elpushno entrega: en tu máquina el envelope queda en cola; en el CI, el paso falla. Para un piloto, usa la URL que recibiste (--urloCODAFORT_PLATFORM_URL).
Conectar, entregar, desconectar
codafort platform login # abre el navegador; apruebas este equipo en la Platform
codafort platform connect # vincula ESTE repositorio a tu organización
codafort engine analyze --source . --git --format json --output envelope.json
codafort platform push envelope.json # entrega (o deja en cola, si la Platform no responde)
codafort platform status # sesión, repositorio vinculado y cuántos envíos en cola
codafort platform disconnect # desvincula el repositorio y DESCARTA la cola
codafort platform logout # revoca la sesión y borra la credencial
El login usa el flujo de autorización de dispositivo (RFC 8628): la terminal muestra un código, lo confirmas con la sesión abierta en la Platform, y la sesión creada solo entrega evidencia y lee work orders.
Qué sale, y cuándo
pushde uncoda-fort/1: el nombre del repositorio, la rama, el commit y solo los artefactos que la Platform lee, que sonissues(cada finding con regla, severidad, mensaje y el fragmento de código donde está),dependenciesyfiles. El resto del envelope queda en la máquina. Con--with-graph, va también el grafo del código que dibuja la pantalla de grafo. La ruta absoluta no sale: todo se relativiza a la raíz del repositorio, y el envío se rechaza si queda alguna.pushde otra modalidad (coda-dast/1,coda-iast/1,coda-crash/1…): el envelope como lo escribió su emisor.- Después del
connect: un registro de uso por comando de codafort en este repositorio, con el verbo, el digest SHA-256 de los argumentos, cuántos findings se tocaron y la duración. Cuando el agente propone descartar un finding, va también la propuesta: el hash del finding, el tipo y el motivo que escribió, hasta 500 caracteres. Ninguna ruta de archivo y ningún código. - Sin
login(o sin token en el CI), elpushno tiene con quién hablar. Sinconnect, o después deldisconnect, no se graba ningún registro de uso. Elconnecttambién ata el repositorio a la organización: unpushcon la sesión de otra organización se rechaza antes de salir.
En el CI
export CODAFORT_PLATFORM_TOKEN=… # token de ingesta de la organización: solo escribe, no lee ni decide
export CODAFORT_PLATFORM_URL=https://…
codafort platform push envelope.json
Con el token en el entorno, el push entrega como máquina, sin login. Si la Platform no lo recibe, el comando falla. En el CI no hay cola: se perdería junto con el runner, y el paso quedaría en verde sin entrega.
Sin red (air-gapped)
El build air-gapped no tiene el canal: los verbos de codafort platform existen y responden que no hay canal.