Detecta la inyección SQL antes de que llegue a main.
El SQL concatenado es la brecha más antigua del oficio — y la IA lo escribe más rápido de lo que nadie puede revisarlo. SlopGrade lee cada PR en tu propio runner y bloquea la consulta que construye SQL a partir de entrada de usuario, antes del merge.
Entrada de usuario, concatenada directo en una consulta.
El id de la petición se pega en la cadena SQL. Un id forjado como 1 OR 1=1 vuelca la tabla; una subconsulta exfiltra otra tabla. Las consultas parametrizadas lo arreglan — el gate garantiza que la versión sin parametrizar nunca se mergee.
Lo que la IA envió
Lo que sale de tu runner
Ruta, línea, clase. En un repo privado, el contenido del archivo se queda en el runner por defecto; el deep scan (heisen-slop) es una opción de pago. Audítalo con --print-payload.
Detecta → adapta → verifica. Por defecto, nada más sale.
En tu runner, sobre el diff
El cliente open source recorre la pull request y marca el patrón en local — dataflow intra-función. Por defecto, ningún código sale de la máquina.
Veredicto del servidor + gate
La huella estructural se clasifica en el servidor. Un hit duro bloquea el check en un repo privado de pago; los repos públicos se gatean gratis; el paywall falla en abierto.
Publicado inline, re-verificado en el push
El hallazgo se publica en su línea exacta. Para las pocas clases con una reescritura segura y determinista (verificación TLS desactivada, debug activo, yaml.load…), se genera Y se verifica una corrección en tu runner; si no, corriges tú y el siguiente push re-verifica.
¿Qué cuenta como inyección SQL aquí?
Cualquier consulta construida concatenando o interpolando entrada no confiable en la cadena SQL, en JS/TS, Python, Go o .NET — a través de los drivers comunes y las vías raw-query de los ORM. Las consultas parametrizadas/preparadas pasan.
¿Marcará consultas parametrizadas seguras?
Los placeholders ($1, ?, :name) y los query builders que parametrizan se reconocen como seguros. La puerta solo bloquea lo que introduce el pull request; sobre 52 089 pull requests open source ordinarios, bloqueó 59 (0,11 %). Empieza en advisory para comprobarlo, luego pasa a bloqueante.