Auditar la seguridad de un proyecto Laravel con un agente de IA
Hola, bienvenido. En esta lección vamos a pedirle a un agente de IA que audite la seguridad de invoices entero con la checklist de la lección 10. Vamos a escribir un prompt de auditoría que sirve para cualquier agente, sea Claude Code, Cursor, Copilot o Codex, y vamos a hacer el ejemplo resuelto con Claude Code, como un subagente que solo puede leer. Después vamos a corregir lo que encuentra, con el método de la lección 4.
¿Para qué una auditoría, si la checklist ya está en AGENTS.md? Porque la checklist se aplica a cada cambio, cuando el agente termina una tarea o cuando revisas su diff, y cada revisión mira solo ese cambio. Un fallo que está en la relación entre varios archivos, o en código que se aceptó hace semanas, no aparece en ningún diff. En la sección 4 hemos escrito el asistente entero en 5 lecciones, con 3 tools, un controlador con 3 acciones y una vista, y es un buen momento para que alguien lo mire todo de una vez.
Qué le pedimos al agente
En una auditoría, el agente revisa el proyecto completo. Lee la checklist, recorre las rutas, los controladores, las policies, las tools y las vistas, y devuelve un informe con cada hallazgo: el archivo y la línea, la regla de la lista que no se cumple, el riesgo y la solución que propone. Y no toca el código.
¿Por qué no dejamos que corrija lo que encuentra? Por 3 motivos. El primero es el método del curso: cada fallo se corrige con un test que falla antes de la solución y pasa después. Si el agente corrige directamente, te llega un diff en lugar de un hallazgo. Y el test, si lo escribe, llega con la solución ya puesta, así que nunca lo has visto fallar. El segundo es que un informe se revisa mejor que un diff. Cada hallazgo es una afirmación concreta sobre un archivo y una línea, que compruebas leyendo el código, y la decisión de qué se corrige y cómo la tomas tú.
El tercero tiene que ver con lo que lee el agente. Para auditar, recorre todo el proyecto, y entre lo que lee hay texto que no ha escrito nadie de tu equipo, como la documentación de un paquete en vendor/. En la lección 17 vimos que un modelo no distingue las instrucciones de los datos. Un agente que solo puede leer y escribir un informe no puede cambiar nada, aunque algo de lo que lee le pida otra cosa.
- 02El prompt de auditoría
- 03El ejemplo resuelto con Claude Code
- 04Qué encuentra la auditoría en invoices
- 05El test: la conversación de otro usuario devuelve 403
- 06La solución: conversationBelongsTo()