tool_name_glob de una regla. Es una gramática
deliberadamente pequeña y sensible a mayúsculas (sin regex, sin retroceso)
para que una regla se lea de la misma forma en que escribirías un nombre de
herramienta desde la pestaña Herramientas descubiertas, y la coincidencia
se mantenga en tiempo lineal en la ruta caliente del relay.
Esta página es la referencia de gramática enfocada a ese único campo. Para
dónde se sitúa un glob dentro de una regla completa — la superficie, las
cláusulas de argumentos, las listas de egress, el veredicto — ver
Esquema de regla y la referencia
profunda del motor en
Reglas del Firewall.
1. Por qué un glob de nombre de herramienta en vez de regex
Las herramientas se nombran convencionalmente con espacio de nombres
server.tool o category.action (shell.exec, db.query,
community.http_fetch). Un glob deja que una regla capture toda una familia
— shell.* para cada verbo shell, *.delete para un verbo a través de
servidores — sin las trampas de un regex en una ruta que se ejecuta en cada
llamada a herramienta.
La gramática es intencionalmente diminuta. La coincidencia es sensible a
mayúsculas — los nombres de herramienta MCP son convencionalmente
minúsculas-con-puntos, así que un plegado de mayúsculas sorprendería a un
autor que copia-pega un nombre directamente desde la vista de Herramientas
descubiertas. No hay retroceso catastrófico porque no hay motor de regex
detrás; cada patrón de abajo es un puñado de operaciones de string.
2. Las cinco formas de patrón
Unglob de nombre de herramienta es exactamente una de estas formas.
Cualquier cosa que no encaje en las formas de comodín se trata como un
literal, una coincidencia exacta.
| Patrón | Forma | Coincide con |
|---|---|---|
"" o * | cualquiera | Cada llamada a herramienta. |
foo.* | prefijo | foo.bar, foo.exec — no foo pelado. |
*.exec | sufijo | shell.exec, db.exec, y exec pelado. |
*.shell.* | infijo | local.shell.exec, byo.shell.run. |
shell.exec | exacto | Solo el string literal shell.exec. |
3. Prefijo — foo.*
Coincide con cualquier herramienta cuyo nombre empieza con foo. y tiene
al menos un carácter más después del punto.
Coincide
shell.exec, shell.run, shell.rm para el patrón shell.*No coincide
shell pelado (el prefijo requiere el punto final y algo después de
él)shell.* cubre cada verbo shell que un servidor pueda
añadir más adelante.
4. Sufijo — *.exec
Coincide con cualquier herramienta cuyo nombre termina con .exec, anclado
en un punto — y también coincide con el verbo pelado, sin espacio de
nombres, exec por sí solo.
El sufijo permanece anclado — no coincidirá con una palabra parcial:
| Patrón | shell.exec | exec pelado | shell.execute |
|---|---|---|---|
*.exec | coincide | coincide | sin coincidencia |
*.execute sería necesario para shell.execute; el sufijo solo se dispara
en una frontera de punto o al inicio del string, nunca a mitad de palabra.
5. Infijo — *.shell.*
Coincide con cualquier nombre de herramienta que contiene .shell. como un
infijo, con al menos un carácter a cada lado. Así es como una regla cubre
un verbo dondequiera que un servidor BYO-MCP resulte ponerlo en espacio de
nombres.
local.shell.exec, byo.shell.run y cualquier otra
forma <server>.shell.<verb>. No coincide con shell pelado ni con un
.shell. pelado sin nada alrededor — el requisito de carácter-a-cada-lado
mantiene el infijo honesto.
6. Exacto — shell.exec
Cualquier cosa que no sea una de las formas de comodín de arriba es una
coincidencia de string literal. shell.exec coincide con shell.exec y nada
más. Esta es la elección correcta cuando quieres nombrar una herramienta
específica — combínala con una
cláusula de argumentos para
estrechar más (“bloquear shell.exec solo cuando el comando es rm -rf”).
7. Un ejemplo concreto
Supón que quieres denegar cada verbo shell destructivo sin importar cómo un servidor MCP lo pone en espacio de nombres, mientras dejas que todo lo demás audite. En el editor de reglas de la consola (las escrituras requieren Developer+), la mitad de coincidencia de la regla es un solo glob de infijo:firewall_policy_id en la clave), y la
regla ahora captura local.shell.exec, byo.shell.run y acme.shell.rm —
tres servidores, un glob. ¿Quieres confirmar que se dispara en lo que esperas
antes de depender de ella? Usa Probar reglas
— devuelve el veredicto, la regla coincidente y la razón sin despachar nada.
Un glob estrecha qué herramienta. Para estrechar con qué argumentos,
conjuga una cláusula de argumentos
sobre la misma regla; para gobernar una herramienta solo cuando una skill
particular la posee, añade un glob de nombre de skill (misma gramática,
coincidida contra la skill propietaria). Ambos se cubren en
Reglas del Firewall.
8. Referencia rápida
¿Está el verbo pelado cubierto por un glob de sufijo?
¿Está el verbo pelado cubierto por un glob de sufijo?
Sí.
*.exec coincide con shell.exec, db.exec, y el exec
pelado, sin espacio de nombres. Los globs de prefijo (foo.*) no
coinciden con el espacio de nombres pelado foo — solo nombres con algo
después del punto.¿Funciona la estrella del medio en foo.*.bar?
¿Funciona la estrella del medio en foo.*.bar?
No. La única forma de comodín-en-el-medio que el motor entiende es el
infijo simétrico
*.X.*. foo.*.bar cae a una coincidencia literal
exacta. Usa dos reglas o una cláusula de argumentos en su lugar.¿Es la coincidencia sensible a mayúsculas?
¿Es la coincidencia sensible a mayúsculas?
Sí.
Shell.Exec y shell.exec son herramientas diferentes. Copia los
nombres literalmente desde la pestaña Herramientas descubiertas.¿Qué pasa si el glob está malformado?
¿Qué pasa si el glob está malformado?
Cualquier forma que no sea una de las cinco de arriba se trata como una
coincidencia exacta — simplemente no coincidirá con un nombre de
herramienta real, así que la regla nunca se dispara en vez de coincidir
con algo inesperado. La consola valida las reglas al guardar.
Relacionado
Lista de permitidos de herramientas
Usa globs para permitir un conjunto conocido y denegar el resto.
Validar argumentos
Conjuga una cláusula de argumentos JSONPath sobre un glob.
Esquema de regla
Cada campo de una regla, en un solo lugar.
