This page is in Spanish. Read it in English →
Gratis para repos públicos · sin SDK · sin tocar el CI

La IA escribe el código. Alguien debería leerlo antes del merge.

El primer informe llega antes de tu siguiente pull request. Al instalar leemos el código que ya está en el repositorio, porque el fallo que más encontramos no se añade nunca en un PR. A partir de ahí: credenciales en el código, SQL construido concatenando cadenas, deserialización insegura, salida del modelo pintada como HTML sin filtrar, y dependencias que no existen en ningún registro. Los hallazgos llegan como comentario en el pull request, con el fichero, la línea y la corrección.

Instalar en GitHub → Primer informe en cerca de un minuto

Esta es la medición que nos hizo construirlo así. Buscamos un fallo concreto —una clave de servicio con prefijo NEXT_PUBLIC_ o VITE_, que el framework entrega al navegador de cada visitante— en 63 pull requests reales de proyectos Next.js y Vite. Apareció cero veces. En el código ya existente de 8 repositorios reales apareció en siete. Se escribe una sola vez, el día que se crea el proyecto, y una herramienta que solo lee diffs no lo va a ver nunca.

Auditamos pull requests públicos cada semana para no engañarnos. En más de 1.400 dependencias añadidas por desarrolladores reales no encontramos ningún paquete inventado: el ataque del que todo el mundo escribe es más raro de lo que sugieren los titulares, y preferimos decírtelo a venderte un susto. Lo que sí aparece, en torno a un pull request de cada quince, son credenciales e inyección. Lee la medición, o mira el recuento en vivo.

Para equipos SaaS pequeños y medianos y agencias que entregan React/Next.js y Python con Copilot, Cursor o Claude — y para el CTO o lead que aprueba el merge.

requirements.txt en vivo · consulta pypi.org
Máximo 25 paquetes · sin registro · no se guarda nada
02 — Pruébalo antes de leer nada más

Pregúntale a tu IA si estos paquetes existen.

Se subieron a PyPI hace unos minutos. Copia cualquiera y pregúntale a Copilot, Claude o ChatGPT si el paquete es real. No puede saberlo: todo modelo tiene fecha de corte de entrenamiento y estos se publicaron después de todas ellas. Nosotros no deducimos que existan. Se lo preguntamos al registro.

  • Cargando los paquetes más recientes de PyPI…

En vivo desde pypi.org, cada cinco minutos. Si la lista sale vacía es que la consulta falló, y preferimos no enseñar nada antes que inventarnos un nombre.

Este es el argumento entero. Un nombre de paquete inventado por un modelo es idéntico a uno real, y el modelo que lo inventó no puede decirte cuál es cuál. Una alucinación no se arregla con otra alucinación. Una consulta al registro es un hecho con fecha, y puedes reproducirla con curl sin fiarte de nosotros.

03 — Con qué nos estás comparando

Dos comparaciones honestas.

GitHub Advanced Security
  • Hace muchísimo más que nosotros. Análisis completo de CodeQL, cientos de patrones de credenciales, push protection, panel de seguridad. Si necesitas todo eso, cómpralo: no somos un sustituto.
  • Se factura por persona. Secret Protection cuesta 19 $ y Code Security 30 $ por committer activo y mes en repositorios privados. Un equipo de diez paga unos 490 $ al mes.
  • Sigue dando por hecho que el paquete existe. Busca vulnerabilidades conocidas en paquetes reales. Un nombre inventado hace cinco minutos no tiene CVE ni historial.
MagSolutionsAI
  • Precio plano por organización. Desde 29 € al mes para todo el equipo, con la gente que haga falta. Sin cuentas por asiento ni sustos en la factura al contratar.
  • Comprueba que exista, no solo si es conocido. Cada dependencia añadida se resuelve contra el registro en vivo, en ese momento.
  • Es una herramienta estrecha, a propósito. Cubrimos el puñado de cosas que el código escrito con IA hace mal. No pretendemos ser una plataforma de seguridad completa, y lo decimos.

«¿Y por qué no le pido a Copilot o a Claude que revise el PR?» Hazlo también, ayuda. Pero un asistente que mira un diff está adivinando sobre la existencia, y adivinar es lo que creó el problema. Tampoco ve el resto de tu repositorio, así que no sabe cuáles de tus rutas deberían llevar autenticación. Otro trabajo, otro modo de fallar.

04 — Por qué no lo ve lo que ya pagas

Todos los escáneres dan por hecho que el paquete existe.

Snyk, Dependabot y npm audit buscan vulnerabilidades conocidas en paquetes reales. Un nombre inventado hace cinco minutos no tiene CVE, ni aviso, ni historial. Es invisible para todos ellos — por diseño.

Escaneo de dependencias convencional
  • Necesita un CVE para saltar. Un paquete registrado ayer no tiene ninguno. El silencio se lee como seguridad.
  • Analiza comportamiento, no existencia. Meter un paquete en un sandbox exige descargarlo — y no hay nada que descargar cuando el nombre es pura alucinación.
  • 40-60% de falsos positivos es la norma del sector en SAST. El equipo aprende a pasar de largo del bot.
  • Señala el problema y ahí se queda. «Paquete desconocido», sin decirte qué querías escribir.
MagSolutionsAI
  • Pregunta al registro directamente. Un HTTP 404 no es una heurística: es un hecho, con hora, que puedes reproducir con curl.
  • También pilla los ya reclamados. Existir no basta: un paquete publicado hace 6 días con 40 descargas también salta.
  • Un hecho, no una opinión. Un 404 del registro no es una heurística. El criterio está en qué preguntamos, y ahí es donde nos medimos: auditamos pull requests públicos cada semana y publicamos en qué nos equivocamos.
  • Te da el nombre correcto. Cada corrección se verifica contra el registro antes de proponerla. Nunca una conjetura.
05 — Una vez al instalar, y luego en cada pull request

Cinco puertas. Una instalación. Cero configuración.

Las mismas cinco puertas se ejecutan dos veces: sobre el código que ya está en el repositorio en el momento de instalar, y después sobre cada pull request antes del merge. Los hallazgos llegan como comentario en el PR, con el fichero exacto, la línea, por qué importa y cómo se arregla. Nadie de tu equipo instala nada.

La pasada de instalación es a propósito más estrecha: un diff te dice quién escribió una línea y cuándo, un fichero entero no. Informa de credenciales y de la frontera del navegador, y se calla las heurísticas que necesitan ese contexto. La ajustamos después de ejecutarla contra nuestro propio repositorio y obtener 15 hallazgos, 13 de ellos ruido.

404

Dependencias fantasma

Cada dependencia añadida se resuelve contra PyPI y npm en vivo. Si no aparece, o es una alucinación de la IA o es un nombre libre que un atacante todavía puede registrar. Se marca como crítico, con la respuesta del registro y la hora, para que puedas reproducirlo.

<90d

Recién reclamados

El caso peligroso: existe. Publicado hace días, casi sin descargas — el perfil exacto de un slopsquat ya reclamado. Comprobar que existe no lo pilla. Nosotros sí.

8

Credenciales en el código

Ocho formatos de clave, con entropía de Shannon y supresión de falsos positivos. Los emails, las llamadas a os.getenv() y las anotaciones de tipo no lo disparan.

LLM01/05

Fallos propios de la IA

Los bugs que solo salen en código escrito con IA: salida del modelo metida en dangerouslySetInnerHTML, claves de servidor publicadas en variables NEXT_PUBLIC_, sumideros de inyección de prompt.

A03

Inyección clásica y valores peligrosos por defecto

Lo que la IA escribe sin pensar: SQL construido interpolando, shell=True con variables, pickle.load sobre datos ajenos, verify=False desactivando TLS. Una consulta correctamente parametrizada no se marca: nos equivocamos una vez, lo corregimos, y la prueba que lo demuestra está en el repositorio.

06 — Verifícanos como te verificamos

Todo lo que dice esta página se puede comprobar.

Somos un proveedor de seguridad pidiéndote acceso a tus repositorios. No deberías creernos nada — por eso hemos hecho que no haga falta.

Reproducible

Cada hallazgo de dependencia lleva la consulta exacta al registro, el código HTTP y la hora. Lanza tú el curl — o el hallazgo se reproduce, o no.

Cero retención de código

El diff se analiza en memoria y se descarta. Guardamos ID de instalación, nombre del repo, número de PR y nivel de riesgo. Nunca tu código ni el valor de un secreto.

Sin terceros

De nuestro servidor solo sale un nombre de paquete, hacia PyPI o npm. Sin analítica, sin rastreadores, sin CDN de fuentes — esta página no carga ni un recurso externo.

Infraestructura en la UE

Alojado en Finlandia. Webhooks verificados con HMAC-SHA256 sobre TLS 1.2+. Notificación de brechas en 72 horas según el RGPD. Política completa →

Lo que no vamos a fingir

No tenemos logos de clientes que enseñarte, porque todavía no tenemos clientes. Este producto salió en julio de 2026. Todo lo de arriba es una propiedad del código, no un testimonio — y todo se puede verificar en el informe que la App genera sobre tus propios pull requests. Cuando haya referencias, aparecerán aquí con nombre y apellidos. Hasta entonces, el plan gratuito y el escáner del principio de la página son el argumento entero.

Datos públicos

Publicamos lo que las máquinas inventan.

Un registro vivo de nombres de paquete que no existen — y cuáles ha registrado alguien después de que los viéramos. Gratis, sin registro. Los conjuntos publicados miden lo que inventa un modelo ante tareas de prueba; este registro mide lo que llega a pull requests reales.

Abrir el Índice de Alucinaciones →

Una instalación. Todos los pull requests de la organización.

Gratis para repositorios públicos, siempre. Sin SDK, sin cambios en el pipeline de CI, sin instalar nada en cada máquina. Desinstalar es un clic y retira todos los accesos.

Lo que esto no es. Una herramienta de análisis estático automatizado y una ayuda a la revisión — no una garantía de seguridad. Analiza únicamente las líneas añadidas en un pull request: ni tu código existente, ni tu infraestructura, ni el comportamiento en ejecución. Las comprobaciones contra el registro reflejan un momento concreto — un paquete que hoy no existe puede registrarlo un atacante minutos después. La ausencia de hallazgos no significa que tu código sea seguro. Cada hallazgo lleva su ubicación exacta precisamente para que una persona pueda verificarlo.