El lenguaje de coincidencia detrás de una política de firewall. Coincide con llamadas a herramienta por nombre, skill, argumentos y destino — luego allow, audit, deny, sanitize, retén para aprobación o limita el coste. Determinista, fail-closed y seguro en la ruta caliente.
Una política de firewall es una lista ordenada de
reglas. Esta página es la referencia completa de lo que una regla puede
expresar — el lenguaje de coincidencia, los veredictos y cómo el motor los
evalúa.Las reglas se autoran en el editor de reglas de la consola, que escribe
objetos de coincidencia JSON estructurados. Todo lo de abajo describe ese
vocabulario para que puedas leer, razonar sobre y verificar una regla con
precisión — ya sea que la construyas en la UI o la postees a través de la
API.
Configuración de redacción, usada cuando verdict = sanitize. Ver §5.
egress
object
Lista de allow/deny de host/CIDR, usada cuando stage = egress. Ver §6.
cap_cost_cents
int
Techo de coste de ejecución, usado cuando verdict = cap_cost.
sequence
object
Coincidencia ordenada de varios pasos, aplicada de forma reactiva. Ver §8.
notes
string
Justificación del autor; ignorada por el motor.
Una regla coincide con una llamada a herramienta cuando todas sus
condiciones declaradas se cumplen: la etapa coincide (o está vacía), el glob
de herramienta coincide, el glob de skill coincide (o está vacío), las
cláusulas de argumentos coinciden (o están ausentes) y el alcance de egress
coincide (solo reglas de egress). El motor recorre las reglas en orden de
prioridad y gana la primera coincidencia.
Una gramática deliberadamente pequeña, sensible a mayúsculas y minúsculas —
sin sorpresas de regex, tiempo lineal, segura en la ruta caliente del relay:
Patrón
Coincide con
"" o *
Toda herramienta.
foo.*
Prefijo — foo.bar, foo.exec (no el foo desnudo).
*.exec
Sufijo — shell.exec, db.exec (no el exec desnudo).
*.shell.*
Infijo — local.shell.exec (necesita ≥1 carácter a cada lado).
cualquier otra cosa
Coincidencia exacta de cadena (incluyendo foo.*.bar).
Las herramientas se nombran convencionalmente con espacio de nombres
server.tool o category.action, así que shell.* captura toda una
familia y *.delete captura un verbo a través de servidores.
La misma gramática de glob, comparada contra la skill propietaria de la
llamada a herramienta (p. ej. community.*, builtin.send). Se hace AND con
tool_name_glob, así que:
coincide con http.fetchsolo cuando es propiedad de una skill
community.* — confía en la misma herramienta desde una skill integrada,
gatea esa misma desde una de la comunidad. Un glob de skill vacío coincide
con cualquier propietario. Cómo se atribuye una llamada a herramienta a una
skill se cubre en
Skills.
La coincidencia de nombre de herramienta responde qué herramienta; las
cláusulas de argumentos responden con qué argumentos — la diferencia entre
“bloquear shell.exec” y “bloquear shell.exec solo cuando el comando es
rm -rf.”args_match es un conjunto de cláusulas, todas unidas con AND:
Un pequeño subconjunto de JSONPath sobre el objeto de argumentos de la
herramienta:
$.foo, $.foo.bar — acceso a campo
$.foo[0], $.arr[1].k — indexación de array
$ — el objeto de argumentos completo
Sin comodines, filtros, slices ni descenso recursivo.
Las cláusulas de argumentos fallan cerrado — la regla, no la solicitud.
Si un path no resuelve, los argumentos están malformados, o un regex/CIDR es
inválido, la cláusula evalúa a falso y la regla simplemente no se dispara
— la llamada cae a la siguiente regla o al veredicto por defecto. Una
cláusula rota nunca auto-deniega y nunca tumba el relay. Escribe tu regla de
“capturar todo lo peligroso” como un deny explícito con su propio glob en
vez de confiar en que una cláusula falle de una forma particular.
La consola valida las cláusulas de forma estricta al guardar (operadores
desconocidos, paths malos, valores in que no son array, regexes no
compilables y CIDRs inválidos se rechazan todos) para que una cláusula
malformada no pueda persistirse en primer lugar.
Un veredicto sanitize redacta las subcadenas coincidentes de los
argumentos de la herramienta y reenvía la llamada limpia — útil para
eliminar secretos o PII que un agente puso en un argumento de herramienta sin
bloquear toda la acción.
Las coincidencias de preset se reemplazan con [redacted:<preset>]; las
coincidencias de regex personalizado con [redacted:custom]. La biblioteca
de presets integrada:aws_access_key, aws_secret_key, openai_key, anthropic_key,
bearer_token, email, ssn_us, credit_card (con una verificación de
Luhn).Una regla de sanitize debe declarar al menos un preset o patrón
personalizado — un saneador vacío se rechaza al guardar. En la superficie
inbound no hay argumentos en tiempo de llamada que redactar, así que un
veredicto sanitize ahí escala a un bloqueo.
Las entradas coinciden como un CIDR, una IP literal o un hostname sin
distinguir mayúsculas y minúsculas; los hostnames se resuelven en
modo best-effort y se reverifican contra las entradas de IP/CIDR. La
polaridad sigue al veredicto: con un veredicto allow la lista allow
define qué está en alcance y deny talla excepciones de ella; con un
veredicto de aplicación (deny) la lista deny define qué se bloquea y
allow talla excepciones.169.254.169.254 (el endpoint de metadatos de la nube) y los rangos
RFC-1918 son las cosas canónicas a denegar — el preset block_ssrf_egress
y el nivel de autonomíatight envían exactamente eso.
Algunos riesgos solo son visibles a través de varias llamadas — leer 50
registros de CRM, luego exportar, luego golpear un host externo. Una regla
sequence coincide con una cadena ordenada en vez de una sola llamada:
Cada paso es un glob de herramienta con un min_count opcional (por defecto
y un egress: true opcional (el paso debe ser una llamada de egress). Los
pasos deben ocurrir en orden — intercalar con otras llamadas está bien — y
toda la cadena debe completarse dentro de window_seconds (0 = sin
límite).
Las secuencias se aplican reactivamente por un matcher asíncrono, no en
línea en cada llamada — una secuencia con un paso * coincidiría de otro
modo con cada llamada a herramienta individual. Encienden el feed de eventos
y pueden disparar una acción de seguimiento, pero no bloquean en tiempo real
la llamada individual que completa la cadena.
Empieza desde un preset en vez de una regla en blanco. Se autoran del lado
del servidor para que la consola y estos docs describan comportamiento
idéntico:
Preset
Qué hace
block_destructive_shell
Deniega comandos de shell destructivos (rm -rf, mkfs, dd, fork bombs, …) vía un conjunto de reglas deny-by-glob.
block_ssrf_egress
Audita el egress al endpoint de metadatos y a los rangos RFC-1918.
block_secrets_in_args
Orientado a detección — marca credenciales que aparecen en argumentos de herramienta.
block_pii_in_tool_results
Orientado a detección — saca a la luz PII en resultados de herramienta.
Aplica un preset como semilla, luego edita libremente — un preset es un punto
de partida, no un candado.
Gana la primera coincidencia. Las reglas se ejecutan en orden
priority ASC, id ASC; la primera regla cuyas condiciones se cumplen
todas decide el veredicto. Ninguna regla coincide → el default_verdict
de la política.
Determinista y sin dependencias. La coincidencia de glob y de cláusula
son operaciones puras de cadena/JSON sin llamada de red, seguras de
ejecutar en cada llamada a herramienta. Los regexes son RE2 — tiempo
lineal, sin backtracking catastrófico.
Cláusulas fail-closed. Una cláusula que no se puede evaluar hace que su
regla no se dispare en vez de auto-denegar
(§4).
Validación estricta en tiempo de guardado. Las parejas
veredicto/etapa, la no vacuidad del saneador, la presencia de
cap_cost_cents, la forma de la cláusula y la resolución de referencias se
verifican todas al guardar — las reglas inválidas no pueden persistirse.
Auditado. Cada creación/actualización/eliminación de regla escribe una
fila de auditoría después de que el cambio se confirma; los blobs de reglas
y los secretos nunca se escriben en el log de auditoría.
¿Quieres profundizar en la seguridad de agentes? Las guías de Protege tus agentes (Zero Trust) sitúan esta función dentro de un flujo de trabajo de confianza cero.
Construye una política de firewall
Redacta una política de confianza cero paso a paso, luego ejecútala en modo sombra antes de aplicarla.
Referencia del esquema de reglas
Todos los campos de una regla — globs, predicados de argumentos, salida y topes de coste.