Rendimiento
Cuánto tarda zn-gate: los hooks de los agentes y el escáner local, con la versión, la fecha, la máquina y el método de cada medición.
zn-gate se ejecuta en tu máquina, así que su coste es tiempo en cada llamada a una herramienta, no un viaje por la red. Esta página da las cifras medidas, indica de qué versión y de qué día sale cada una y qué no cubren. Estas cifras son mediciones en una sola máquina, no una promesa de la misma velocidad en la tuya.
Hooks de los agentes
Cada vez que un agente de código llama a una herramienta, lanza el hook de zn-gate y lo espera: una vez antes de la llamada (por ejemplo un comando de shell) y otra después, con la salida de la herramienta.
Medido el 2026-10-17 en un runner ubuntu-latest de GitHub Actions (4 vCPU AMD EPYC 7763) con Node.js 22.23, con el código de hooks del repositorio de zn-gate de ese día (versión del paquete 1.11.0). Tiempos en milisegundos. Un node -e "" vacío tarda 25 ms (p50) en la misma máquina.
| Agente | Evento | p50 (ms) | p95 (ms) |
|---|---|---|---|
| Claude Code | PreToolUse, comando de shell | 51 | 54.7 |
| Codex CLI | PreToolUse, comando de shell | 52 | 53.8 |
| Cursor | beforeShellExecution | 51.7 | 58.6 |
| Claude Code | PostToolUse, 1 KB | 63 | 65 |
| Codex CLI | PostToolUse, 1 KB | 62.2 | 65.3 |
| Cursor | postToolUse (MCP), 1 KB | 62.2 | 64 |
| Claude Code | PostToolUse, 100 KB | 67.5 | 70.4 |
| Codex CLI | PostToolUse, 100 KB | 67 | 68.8 |
| Cursor | postToolUse (MCP), 100 KB | 66.9 | 68.9 |
| Claude Code | PostToolUse, 100 KB con 2 secretos | 73.8 | 76.3 |
| Codex CLI | PostToolUse, 100 KB con 2 secretos | 74.7 | 77.5 |
| Cursor | postToolUse (MCP), 100 KB con 2 secretos | 75.9 | 77.9 |
| Claude Code | PostToolUse, 1000 KB | 85.8 | 89.4 |
| Codex CLI | PostToolUse, 1000 KB | 86.4 | 88.5 |
| Cursor | postToolUse (MCP), 1000 KB | 88.9 | 92.3 |
Casi todo este tiempo es el arranque de Node.js. Cómo leer la tabla: un comando de shell cuesta unos 50 ms antes de ejecutarse y un resultado de herramienta de hasta 1000 KB, unos 90 ms como máximo (p95). Cursor solo deja que zn-gate reescriba la salida MCP, por eso sus filas posteriores a la llamada son de herramientas MCP. OpenCode no está en la tabla: su plugin de zn-gate corre dentro del proceso de OpenCode, así que no se lanza ningún proceso de hook.
Cómo se midieron los hooks
- El benchmark lanza
node lib/hooks/runner.js <agent>con el evento del agente por stdin, igual que lo hace el agente, y mide hasta que el proceso termina. - Las salidas son de 1 KB, 100 KB (también con dos secretos dentro) y 1000 KB de texto parecido a código fuente.
- La bóveda está bloqueada, así que los valores detectados se redactan para siempre y no interviene ningún proceso en segundo plano.
- Cada caso se ejecuta 40 veces tras una ejecución de calentamiento. p95 es el 38.º de los 40 tiempos (rango más cercano).
- En cada ejecución se generan valores falsos. Un caso falla si alguno vuelve del hook, si el hook no pudo comprobar la salida o si un caso con secretos no lleva una marca de zn-gate en su lugar.
Una comprobación de CI ejecuta este benchmark en cada cambio del código de hooks. Compara el p95 de cada caso dividido por el tiempo de arranque de Node en la misma ejecución, así que una máquina más rápida o más lenta apenas cambia el resultado, y falla si ese cociente supera en más de un 20 % la referencia guardada.
Escáner local
El escáner es la parte de zn-gate que revisa texto con sus reglas y redacta secretos. Se ejecuta dentro del proceso, sin red. Hay dos mediciones, hechas en momentos distintos en una máquina de AWS con un Intel Xeon Platinum 8259CL. Ambas usaron entradas benignas que el escáner no había visto antes (sin caché).
Revisar un resultado de herramienta (reglas y redacción de secretos)
Medido el 2026-10-11 con zn-gate 1.4.1, en una máquina de AWS de 2 vCPU con Node.js 24. Es la llamada completa a check_tool_result, en proceso. p50 es la mediana de 3 ejecuciones y p99 la peor de las 3.
| Tamaño de entrada | p50 (ms) | p99 (ms) |
|---|---|---|
| 200 B | 0.045 | 0.19 |
| 4 KB | 0.30 | 0.81 |
| 64 KB | 3.8 | 6.7 |
Solo las reglas
Medido el 2026-10-10 con zn-gate 1.4.0 (versión de reglas 2026-09-29.1), en una máquina de 2,5 GHz con Node.js 24.21, 20 000 muestras por tamaño. Es la comprobación de reglas sin redacción de secretos.
| Tamaño de entrada | p50 (ms) | p95 (ms) |
|---|---|---|
| 200 caracteres | 0.013 | 0.028 |
| 1000 caracteres | 0.047 | 0.077 |
| 4000 caracteres | 0.173 | 0.372 |
| 16 000 caracteres | 0.681 | 1.179 |
Las reglas tardan menos de 0,1 ms (p50) con entradas de hasta unos 1000 caracteres. El tiempo crece en proporción a la longitud de la entrada, así que no apliques esa cifra a textos mucho más largos.
Límites
- Las cifras de los hooks salen de un único runner de CI. En tu ordenador los tiempos serán distintos; la mayor parte de la diferencia sigue al arranque de Node.js, no a zn-gate.
- Las cifras del escáner se han medido con zn-gate 1.4.0 y 1.4.1. No se han vuelto a medir en versiones posteriores y esta página no las presenta como tales.
- Las cifras del escáner son para texto que el escáner no había visto antes; son en proceso y no incluyen el arranque de Node.js ni del agente.
- Esta página no cubre la comprobación opcional en la nube, que añade una llamada de red y no forma parte de las cifras locales. Aquí no se publica una latencia de extremo a extremo para ella.
- Los números son medianas y percentiles altos de pocas ejecuciones en una máquina cada uno, no garantías.
Los scripts del benchmark y los ficheros de medición están en la carpeta bench del repositorio de zn-gate. Páginas relacionadas: Redacción de secretos y Configuración.