Bloquea el SQL destructivo
DELETE y UPDATE sin WHERE, DROP, TRUNCATE y DDL riesgoso, también dentro de CTEs y en cada sentencia de un string multi-sentencia. Cada bloqueo trae la regla, el nodo AST y una corrección sugerida.
Conéctalo como proxy TCP, API, CLI o MCP. Vericto parsea el AST de cada query y bloquea las operaciones destructivas antes de que lleguen a tu base de datos.
DELETE FROM users
BLOQUEADAVERICTO-001DELETE sin WHERE: no llega a la base de datos. El agente recibe un error SQL y la corrección sugerida.
DELETE FROM users WHERE id = $1
SELECT email FROM customers
ENMASCARADAVERICTO-085email es una columna sensible: el proxy reescribe la query y la base de datos devuelve el valor enmascarado.
a***@example.com
SELECT id, total FROM orders WHERE id = $1
PERMITIDAorders está en la allowlist del agente: la query pasa sin cambios.
id · total
Un motor AST determinístico decide sobre cada sentencia antes de que se ejecute. Cuatro controles corren sobre él.
DELETE y UPDATE sin WHERE, DROP, TRUNCATE y DDL riesgoso, también dentro de CTEs y en cada sentencia de un string multi-sentencia. Cada bloqueo trae la regla, el nodo AST y una corrección sugerida.
Marca columnas como email o card_number y decide por columna: bloquear, marcar o enmascarar (full, last4, email o hash). En el proxy TCP, la base de datos devuelve el valor ya enmascarado. Team y Enterprise.
Cada agente usa solo las tablas y columnas que le das, en solo lectura o lectura y escritura. Todo lo demás se deniega. Empieza en observe y pasa a enforce cuando el tráfico lo confirme. Team y Enterprise.
Reproduce un cambio de reglas contra tu tráfico real (hasta 30, 90 o 180 días según el plan) y mira qué flujos legítimos bloquearía, antes de que bloquee nada. Desde el dashboard o desde CI. Builder, Team y Enterprise.
Los paneles reproducen la salida tal como la describe la documentación; los datos son de ejemplo.
Cada escenario es un patrón concreto de SQL que una regla detecta, probado contra vericto-engine 4.1.1. Se cuenta una vez, no una vez por dialecto ni por posición.
La misma regla frena el error de una persona, el bug de un ORM y el ataque de un agente comprometido. Cada escenario se cuenta en su origen más típico:
Un DELETE escondido en un CTE, una tautología en una tabla derivada o en una rama UNION, un DROP apilado después de un COMMIT, un INSERT … SELECT dentro de un trigger de SQLite: el motor recorre el árbol sintáctico hasta 50 niveles y evalúa cada sentencia de un string multi-sentencia. Lo que es más profundo, o lo que el parser no puede leer, no pasa en silencio: queda registrado como error de parseo, y se bloquea si eliges parse_error: block.
Unos 950 NOT encadenados, unos 4 KB de SQL, desbordan la pila de un parser recursivo y matan el proceso que lo ejecuta. Vericto mide el anidamiento del texto antes de parsearlo y rechaza lo que pasa de 200 niveles: el proxy sigue en pie y la sentencia queda registrada como demasiado compleja (bloqueada con parse_error: block).
En 6 incidentes públicos que documentamos, el SQL destructivo (el publicado, o la sentencia que implica el mecanismo) da BLOCKED con estas reglas cuando la conexión pasa por Vericto: un DELETE FROM en cada tabla de producción, DROP TABLE pedido a frameworks de text-to-SQL (dos CVE), un schema push que borró tablas, COPY … TO PROGRAM en un servidor MCP «read-only» y un COMMIT; DROP SCHEMA que escapó de una transacción de solo lectura. Los casos, con sus fuentes.
Empieza por donde te dé menos fricción: proxy TCP, Runtime API, CLI, Validation API o MCP. Los cinco llaman al mismo motor AST determinístico, así que el veredicto es el mismo por cualquiera de ellos.
DELETE no tiene WHERE. Narración en inglés, con subtítulos en inglés y en español.Cinco modos sobre el mismo motor. Dos actúan en runtime y bloquean en línea; tres actúan antes de ejecutar, en tu pipeline o en el editor del agente. Cómo elegir.
Proxy TCPsolo cambias el host del connection string; bloquea en líneaRuntime APItu aplicación pregunta antes de ejecutar; también Oracle, SQL Server, Snowflake y SQLiteCLIvalida en pre-commit y CI, con exit code según el veredictoValidation APIlotes de SQL por HTTPS, sin instalar nadaMCPel agente valida el SQL mientras lo escribeCada query se analiza a su árbol sintáctico: con pg_query (el parser de Postgres) en Postgres y con sqlparser-rs en MySQL, Oracle, SQL Server, Snowflake y SQLite. El árbol completo, no solo el primer token ni patrones de texto. El mismo motor en los cinco modos, así que el veredicto no depende de por dónde entró la sentencia.
Las queries que violan el ruleset se bloquean con el nodo AST infractor, la regla activada y la versión segura sugerida. En runtime la sentencia no llega a la base de datos; antes de ejecutar, el veredicto vuelve como exit code o como respuesta al agente. Las limpias pasan sin cambios.
DELETE FROM users
SELECT * FROM users WHERE id = $1
Dos caminos. En PostgreSQL y MySQL, el proxy TCP no requiere cambios en tu código. En las seis bases, los SDK, la API de runtime, el CLI y MCP revisan el SQL antes de que se ejecute.
Apunta tu connection string al proxy. Funciona con cualquier driver u ORM y bloquea las queries destructivas en línea, antes de que lleguen a la base.
Configurar el proxy →Los SDK de Python y Node y la API de runtime revisan cada query antes de que tu código la ejecute. El CLI y MCP revisan el SQL antes de que llegue a producción.
vericto-dbt check revisa los modelos compilados en CIcheck_sql para Claude Code, Kiro y másvericto/check-sql anota los hallazgos en el PRvericto init con --target gitlab¿No ves tu stack? Cualquier driver de PostgreSQL o MySQL funciona a través del proxy, y la API de runtime, desde cualquier lenguaje. Ver todas las integraciones →
Lo que Vericto bloquea y registra en producción ya es la evidencia que pide un auditor SOC 2 o ISO 27001. Vericto la entrega lista para leer y firmada:
Los precios no incluyen impuestos. El IVA, GST o sales tax que corresponda a tu país se añade al confirmar el pago.
Con facturación anual, Builder queda en $63/mes y Team en $199/mes.
Conecta tu primera base de datos en menos de 5 minutos.
Determinístico y verificable. No pedimos que confíes a ciegas.
Vericto no usa IA para decidir qué bloquear. El motor, el proxy y la CLI tienen código público, y cada afirmación de esta página se puede comprobar.
Código público
El motor AST, el proxy TCP y la CLI, en GitHub, como código fuente disponible bajo la Functional Source License (FSL-1.1-ALv2), que pasa a Apache-2.0 dos años después de cada versión: vericto-engine, vericto-proxy, vericto-cli.
CLI en npm
Instálala y prueba tus migraciones contra tus reglas:
@vericto/vericto-cliEvidencia verificable sin conexión
Los reportes de cumplimiento van firmados con Ed25519 y tu auditor comprueba la firma con la clave pública, sin cuenta ni red. Cómo verificarlos.
Changelog y estado públicos
Cada versión, con lo que cambió y por qué, en el changelog. La disponibilidad del servicio, en la página de estado.
+0,42 ms
Lo que agregó el proxy en p50 en PostgreSQL con 1 conexión, medido en staging el 16 de octubre de 2026 (vericto-proxy 4.12.0, tarea ARM64 de 0,25 vCPU, Aurora Serverless v2 a 10 ACU, TLS, modo enforce). Es una medición, no una garantía: condiciones y método.
Determinístico
La misma query con las mismas reglas recibe siempre el mismo veredicto. Antes de aplicar una regla, el simulador muestra qué flujos legítimos bloquearía.