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.

Ver .md

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.