Saltar para o conteúdo principal
Cada regra de firewall começa respondendo a quais chamadas de ferramenta eu me aplico? A primeira metade dessa resposta é um glob de nome de ferramenta — o campo tool_name_glob em uma regra. É uma gramática deliberadamente pequena e case-sensitive (sem regex, sem backtracking) de modo que uma regra se lê da mesma forma que você digitaria um nome de ferramenta da aba Discovered tools, e a correspondência permanece de tempo linear no hot path do relay. Esta página é a referência de gramática focada nesse único campo. Para onde um glob se posiciona dentro de uma regra completa — a superfície, cláusulas de argumento, listas de egress, veredito — veja Schema de regra e a referência profunda do motor em Regras do Firewall.

1. Por que um glob de nome de ferramenta em vez de regex

As ferramentas são convencionalmente nomeadas com namespace server.tool ou category.action (shell.exec, db.query, community.http_fetch). Um glob deixa uma regra capturar uma família inteira — shell.* para cada verbo shell, *.delete para um verbo através de servidores — sem os perigos de um regex em um caminho que roda em cada chamada de ferramenta.
A gramática é intencionalmente minúscula. A correspondência é case-sensitive — nomes de ferramenta MCP são convencionalmente minúsculos-com-pontos, então um case-fold surpreenderia um autor que copia-cola um nome direto da visão de Discovered tools. Não há backtracking catastrófico porque não há motor de regex por trás dele; cada padrão abaixo é um punhado de operações de string.

2. As cinco formas de padrão

Um glob de nome de ferramenta é exatamente uma dessas formas. Qualquer coisa que não se encaixe nas formas wildcard é tratada como uma correspondência literal exata.
PadrãoFormaCorresponde a
"" ou *qualquerCada chamada de ferramenta.
foo.*prefixofoo.bar, foo.execnão foo sozinho.
*.execsufixoshell.exec, db.exec, e exec sozinho.
*.shell.*infixolocal.shell.exec, byo.shell.run.
shell.execexatoApenas a string literal shell.exec.
Leia as próximas seções para a única borda em cada forma que confunde as pessoas.

3. Prefixo — foo.*

Corresponde a qualquer ferramenta cujo nome começa com foo. e tem ao menos mais um caractere depois do ponto.

Corresponde

shell.exec, shell.run, shell.rm para o padrão shell.*

Não corresponde

shell sozinho (o prefixo exige o ponto final e algo depois dele)
Use um glob de prefixo para governar um servidor ou categoria inteira de uma vez — um deny shell.* cobre cada verbo shell que um servidor possa adicionar depois.

4. Sufixo — *.exec

Corresponde a qualquer ferramenta cujo nome termina com .exec, ancorado em um ponto — e também corresponde ao verbo sem namespace exec por si só.
A correspondência de verbo-sem-namespace é deliberada. Chamadas de função nativas de provedor e servidores MCP que não usam namespace expõem uma ferramenta sob seu verbo sem namespace (apenas exec, não shell.exec). Uma regra *.exec cobre ambas as formas para que uma ferramenta sem namespace não seja silenciosamente perdida.
O sufixo permanece ancorado — ele não corresponde a uma palavra parcial:
Padrãoshell.execexec sozinhoshell.execute
*.execcorrespondecorrespondesem correspondência
*.execute seria necessário para shell.execute; o sufixo só dispara em uma fronteira de ponto ou no início da string, nunca no meio da palavra.

5. Infixo — *.shell.*

Corresponde a qualquer nome de ferramenta que contenha .shell. como infixo, com ao menos um caractere de cada lado. É assim que uma regra cobre um verbo onde quer que um servidor BYO-MCP o nomeie.
{
  "label": "gate every shell tool, any server",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Essa regra corresponde a local.shell.exec, byo.shell.run e qualquer outra forma <server>.shell.<verb>. Ela não corresponde a shell sozinho ou a um .shell. sozinho sem nada em volta — o requisito de caractere-de-cada-lado mantém o infixo honesto.
A forma infixo é apenas a forma simétrica *.X.*. Um padrão com uma estrela no meiofoo.*.barnão é um glob de infixo; ele cai para uma correspondência de string exata (ele só corresponde a uma ferramenta literalmente chamada foo.*.bar, que não existirá). Para corresponder a “começa com foo., termina com .bar” você precisa de duas regras ou de uma cláusula de argumento, não de um glob.

6. Exato — shell.exec

Qualquer coisa que não seja uma das formas wildcard acima é uma correspondência de string literal. shell.exec corresponde a shell.exec e nada mais. Esta é a escolha certa quando você quer nomear uma ferramenta específica — combine-a com uma cláusula de argumento para estreitar ainda mais (“bloquear shell.exec apenas quando o comando for rm -rf”).

7. Um exemplo concreto

Digamos que você queira negar cada verbo shell destrutivo independentemente de como um servidor MCP usa namespace, enquanto deixa todo o resto fazer audit. No editor de regras do console (escritas exigem Developer+), a metade de correspondência da regra é um único glob de infixo:
{
  "label": "deny shell across servers",
  "stage": "response",
  "tool_name_glob": "*.shell.*",
  "verdict": "deny"
}
Vincule uma chave à política (firewall_policy_id na chave), e a regra agora captura local.shell.exec, byo.shell.run e acme.shell.rm — três servidores, um glob. Quer confirmar que ela dispara no que você espera antes de depender dela? Use Testar regras — ele retorna o veredito, a regra correspondente e o motivo sem despachar nada.
Um glob estreita qual ferramenta. Para estreitar com quais argumentos, combine com AND uma cláusula de argumento à mesma regra; para governar uma ferramenta apenas quando uma skill particular a possui, adicione um glob de nome de skill (mesma gramática, correspondido contra a skill proprietária). Ambos são cobertos em Regras do Firewall.

8. Referência rápida

Sim. *.exec corresponde a shell.exec, db.exec, e o exec sem namespace. Globs de prefixo (foo.*) não correspondem ao namespace sem sufixo foo — apenas nomes com algo depois do ponto.
Não. A única forma de wildcard-no-meio que o motor entende é o infixo simétrico *.X.*. foo.*.bar cai para uma correspondência literal exata. Use duas regras ou uma cláusula de argumento em vez disso.
Sim. Shell.Exec e shell.exec são ferramentas diferentes. Copie nomes verbatim da aba Discovered tools.
Qualquer forma que não seja uma das cinco acima é tratada como uma correspondência exata — ela simplesmente não corresponderá a um nome de ferramenta real, então a regra nunca dispara em vez de corresponder a algo inesperado. O console valida as regras ao salvar.

Relacionados

Allow-listing de ferramentas

Use globs para permitir um conjunto conhecido e negar o resto.

Validar argumentos

Combine com AND uma cláusula de argumento JSONPath a um glob.

Schema de regra

Cada campo de uma regra, em um único lugar.
Para a linguagem de correspondência completa — vereditos, superfícies, listas de egress e sequências — veja Regras do Firewall. Novo no plano? Comece pela Visão geral do Firewall.