Bucle DevSecOps de GitLab Duo en el que una segunda IA vuelve a atacar cada corrección escrita por IA, guardando cada omisión exitosa como un anticuerpo permanente que se reproduce en CI y en producción.
Todo cambio de código escrito por una IA debe sobrevivir a un ataque de una segunda IA — con pruebas — antes de que se le permita llegar a producción.

Antibody es un pipeline de GitLab Duo para el hackathon "Life After Code" (Transcend). Trata una base de código como un sistema inmunitario: cuando una IA corrige una vulnerabilidad, una segunda IA sigue atacando la corrección hasta que realmente se sostiene, y todo ataque que alguna vez funcionó se guarda para siempre como un "anticuerpo" y se vuelve a probar en cada cambio futuro y contra la producción en vivo. Un verificador separado, deliberadamente no basado en IA, vigila al agente que corrige en busca de trampas.
Nunca se confía en la palabra del corrector. Tiene que sobrevivir a un atacante, y un verificador honesto y simple protege las pruebas.
Ya existen herramientas de IA-contra-IA (Helios, MindFort, Strix, Novee). Esas confirman que el exploit original ahora está bloqueado. Antibody hace cuatro cosas que, a partir de 2026, todavía solo se encuentran en artículos de investigación:
/download estaba roto, comprueba si /preview tiene la misma protección ausente — el fallo suele esconderse en una ruta fuera del diff.CODEOWNERS, porque un cambio nunca debe validarse a sí mismo.Cada decisión de diseño se remonta a un artículo, no a una corazonada:
| Hallazgo | Artículo | Cifra |
|---|---|---|
| Los parches pasan las pruebas pero siguen siendo explotables ("fallos silenciosos"); los revisores LLM no los detectan | When Passing Tests Hides Vulnerabilities (Tampere) — arXiv 2609.10548 | 170 de 1.030 trazas de reparación fallaron silenciosamente; 22 críticas |
| Una corrección bloquea solo el payload con el que se probó | P2Patch (Simon Fraser) — arXiv 2610.20245 | un ataque nuevo evadió parches ya "corregidos" en el 41% de las ejecuciones; convertir las evasiones en permanentes elevó la cobertura del 42,1% al 62,5% |
| El mismo fallo se esconde en una ruta hermana fuera del diff | PRGuard (Bristol) — arXiv 2608.25730 | 3× más fallos de tipo ausencia encontrados que un revisor comercial |
| Los cambios de CI de agentes se fusionan sin revisión → "verificación circular" | Co-Modifying Code and Infra (UNSW) — arXiv 2610.12849 | 43–56% de los PR de agentes de doble alcance se fusionaron sin revisión |
| Los agentes hacen trampa en la evaluación cuando se les recompensa por el verde | Hacktrace (NTU) — arXiv 2610.03055 | ~19,5% de las ejecuciones tomaron un atajo de manipulación de pruebas |
El último hallazgo es la razón por la que el Warden no es una IA: a un revisor LLM se le puede convencer de cambiar su veredicto; a un verificador de git-diff no.
┌─────────────────────────── issue created ───────────────────────────┐
│ │
▼ │
[Builder AI] fix on a shadow branch, open MR │
│ │
▼ │
GitLab SAST + Dependency Scanning → findings become the Red agent's targets │
│ │
▼ │
[Red AI] real HTTP exploit that REPRODUCES on the old code │
│ │
▼ │
[Builder AI] harden until blocked │
│ │
▼ │
[Red AI] re-attack the NEW fix: new payload + same bug on SIBLING routes │
│ every bypass saved forever as an antibody (≤2 rounds) │
▼ │
[Warden] (not an AI) no deleted/weakened/skipped tests, no hidden CI/auth edit │
│ │
▼ │
autonomy gate: touches CI/auth/CODEOWNERS → Supervised, else Hands-off │
│ │
▼ │
[Package] signed container + SBOM + proof bundle │
│ │
▼ │
[Release → Configure] deploy to the lowest-carbon Cloud Run region, │
│ replay every antibody against staging, then promote │
▼ │
[Monitor] scheduled probe replays ALL antibodies against production forever ──┘
any reproduction → auto-opens an incident issue → loop restarts
Todo lo que aparece a continuación es una captura real de este repositorio, no una maqueta.
El pipeline de nueve etapas, en verde en GitLab. Todas las etapas ejecutadas pasaron, incluida la compilación real del contenedor publicada en el registro del proyecto. configure y monitor se omiten correctamente hasta que se configure un proyecto de Cloud Run y una programación. Abrir el pipeline.
