Seguridad
Aferiz recibe credenciales de git y de gestión, y ejecuta un agente sobre un repositorio ajeno. El modelo de amenazas es explícito — esta página resume lo que está diseñado y lo que todavía falta probar.
Ningún sello, ninguna certificación — todavía. Lo que hay es un diseño verificable, y la lista de lo que tiene que estar en verde antes del primer cliente externo, publicada al final de la página.
Aislamiento por organización
La organización es la frontera del dato. Toda entidad lleva el identificador de la organización, y toda consulta se filtra por él dos veces: en el filtro global de la base y de nuevo en el servicio que la ejecuta. Un usuario de la organización A no lee nada de la B — ni siquiera por el id directo de una fila hija.
La credencial solo entra
Cada credencial se cifra valor por valor (AES-256-GCM), con la clave maestra fuera de la base. Ninguna respuesta de la API devuelve una credencial — ni siquiera a quien la registró. El runner la recibe del control plane en el momento de la ejecución, por un canal autenticado, y la descarta al final; nunca como argumento de línea de comandos, visible en ps.
Un filtro central reescribe los secretos conocidos como *** en logs, eventos, artefactos y respuestas. Y una prueba automatizada planta un secreto canario en cada superficie de salida: si aparece, el build falla.
El sandbox no ve la credencial
Cada ejecución corre en un contenedor efímero: usuario no root, capabilities removidas, red con allowlist — el endpoint del LLM, el host del git, el host de la fuente; todo lo demás negado — con límites de CPU, memoria, tiempo y disco. Los comandos de build del propio repositorio — dotnet test, npm run build — son el vector más probable de código hostil, y corren en ese sandbox sin las credenciales de conexión en el ambiente.
Evidencia leída del commit, no del disco
Todo veredicto exige evidencia en archivo:línea — y el runner la verifica contra el objeto git del commit examinado, nunca contra el disco del sandbox. Un agente que escribiera en el worktree no podría fabricar su propia prueba. Sin evidencia confirmada, el veredicto baja a no concluyente; una salvedad sin ancla en el texto del requisito se descarta antes de llegar a alguien.
La inyección de prompt se trata como el riesgo central
El agente lee contenido que un atacante puede controlar: un README, un comentario de código, la descripción de la propia tarjeta. La defensa no es esperar que el modelo lo ignore — es quitarle el poder: las instrucciones y el contenido de terceros viajan por canales separados; los agentes de atestado y de validación no tienen escritura externa alguna; comando y red pasan por allowlist; y el veredicto solo entra a la base después de la verificación mecánica de la evidencia. Un «marca todo como cumple» inyectado produce un veredicto sin evidencia — que se vuelve no concluyente.
Los patrones clásicos de inyección en el contenido de entrada generan un aviso en la ejecución: el humano ve que hubo un intento.
Roles
Seis roles por organización, del lector al admin:
- Lector
- Ve proyectos, ejecuciones, atestados, salvedades y specs.
- Autor del requisito
- Crea y edita requisitos; acepta, responde y cierra salvedades.
- Operador
- Dispara ejecuciones, da feedback en veredictos, pide ajustes en la spec.
- Desarrollador
- Todo lo del operador, y acepta la spec.
- Aprobador
- Aprueba propuestas de escritura externa y reglas de patrón.
- Admin
- Conexiones, agentes, pipelines, miembros, claves y políticas — todo auditado.
Dos reglas no son configurables, porque son invariantes del producto: quien escribió una versión del requisito no puede aceptar su spec; y aprobar una regla de patrón es siempre un humano identificado — ninguna clave de API, tool o política lo dispensa.
Auditoría
Registro inmutable de logins, conexiones, ejecuciones, aprobaciones, aceptaciones, reglas de patrón y cambios de configuración — con autor, hora, valor anterior y nuevo. Nada se borra; una corrección es un registro nuevo. Retención mínima de doce meses, exportable en JSON. Salvedades, aceptaciones y laudos sobreviven a la retención de la ejecución que los generó: son el registro de lo que se acordó.
Qué falta antes del primer cliente externo
La lista de salida es obligatoria. Mientras un punto esté abierto, está abierto aquí también:
- Secreto canario
- Prueba en verde en log, evento, artefacto, API y notificación.
- Sandbox por defecto
- Ejecución en proceso solo con opt-in explícito.
- Allowlist de red probada
- Una prueba que intenta salir y falla.
- Firma de webhook
- Validada en todos los webhooks de entrada.
- Rate limit
- Activo en API y webhook.
- Dependencias e imagen base
- Revisadas, sin CVE crítico.
- Aislamiento entre tenants
- Una prueba de que la organización A no lee nada de la B.
- Política de retención
- Implementada y documentada en la página de privacidad.
Certificación formal (SOC 2, ISO 27001) hoy no existe y no está prometida para una fecha. Cuando entre al camino, aparece aquí.