tool_name_glob di una regola. È una grammatica deliberatamente piccola e
case-sensitive (niente regex, niente backtracking) così una regola si legge nello
stesso modo in cui digiteresti un nome di tool dalla scheda Discovered tools,
e il matching resta a tempo lineare sul percorso caldo del relay.
Questa pagina è il riferimento di grammatica focalizzato su quell’unico campo.
Per dove un glob si colloca dentro una regola completa — la superficie, le
clausole sugli argomenti, gli elenchi egress, il verdetto — vedi
Schema delle regole e il riferimento
approfondito del motore in Regole del Firewall.
1. Perché un glob sul nome del tool invece di regex
I tool sono convenzionalmente con namespace server.tool o category.action
(shell.exec, db.query, community.http_fetch). Un glob permette a una regola
di catturare un’intera famiglia — shell.* per ogni verbo shell, *.delete per
un verbo attraverso i server — senza i foot-gun di una regex su un percorso che
gira su ogni chiamata a tool.
La grammatica è intenzionalmente minuscola. Il matching è case-sensitive — i
nomi di tool MCP sono convenzionalmente in minuscolo-con-punti, quindi un
case-fold sorprenderebbe un autore che copia-incolla un nome direttamente dalla
vista Discovered tools. Non c’è backtracking catastrofico perché non c’è alcun
motore regex dietro; ogni pattern qui sotto è una manciata di operazioni su
stringhe.
2. Le cinque forme di pattern
Unglob sul nome del tool è esattamente una di queste forme. Qualsiasi cosa non
rientri nelle forme wildcard è trattata come un match letterale ed esatto.
| Pattern | Forma | Corrisponde a |
|---|---|---|
"" o * | qualsiasi | Ogni chiamata a tool. |
foo.* | prefisso | foo.bar, foo.exec — non il nudo foo. |
*.exec | suffisso | shell.exec, db.exec, e il nudo exec. |
*.shell.* | infisso | local.shell.exec, byo.shell.run. |
shell.exec | esatto | Solo la stringa letterale shell.exec. |
3. Prefisso — foo.*
Corrisponde a qualsiasi tool il cui nome inizia con foo. e ha almeno un altro
carattere dopo il punto.
Corrisponde
shell.exec, shell.run, shell.rm per il pattern shell.*Non corrisponde
il nudo
shell (il prefisso richiede il punto finale e qualcosa dopo di
esso)shell.* copre ogni verbo shell che un server potrebbe aggiungere più
avanti.
4. Suffisso — *.exec
Corrisponde a qualsiasi tool il cui nome finisce con .exec, ancorato a un punto
— e corrisponde anche al verbo nudo, senza namespace exec da solo.
Il suffisso rimane ancorato — non corrisponde a una parola parziale:
| Pattern | shell.exec | nudo exec | shell.execute |
|---|---|---|---|
*.exec | corrisponde | corrisponde | nessun match |
*.execute servirebbe per shell.execute; il suffisso scatta solo a un confine
di punto o all’inizio della stringa, mai a metà parola.
5. Infisso — *.shell.*
Corrisponde a qualsiasi nome di tool che contiene .shell. come infisso, con
almeno un carattere su ciascun lato. È così che una regola copre un verbo
ovunque un server BYO-MCP capiti di metterlo nel namespace.
local.shell.exec, byo.shell.run e qualsiasi altra
forma <server>.shell.<verb>. Non corrisponde al nudo shell o a un nudo
.shell. con nulla attorno — il requisito del carattere-su-ciascun-lato mantiene
l’infisso onesto.
6. Esatto — shell.exec
Qualsiasi cosa non sia una delle forme wildcard sopra è un match di stringa
letterale. shell.exec corrisponde a shell.exec e a nient’altro. È la scelta
giusta quando vuoi nominare un tool specifico — abbinalo a una
clausola sugli argomenti per
restringere ulteriormente (“blocca shell.exec solo quando il comando è
rm -rf”).
7. Un esempio concreto
Diciamo che vuoi negare ogni verbo shell distruttivo indipendentemente da come un MCP server lo mette nel namespace, lasciando che tutto il resto venga auditato. Nell’editor delle regole della console (le scritture richiedono Developer+), la metà di matching della regola è un singolo glob infisso:firewall_policy_id sulla chiave), e la regola
ora cattura local.shell.exec, byo.shell.run e acme.shell.rm — tre server,
un glob. Vuoi confermare che scatti su ciò che ti aspetti prima di farci
affidamento? Usa Testa le regole — restituisce
il verdetto, la regola corrispondente e la motivazione senza dispatchare nulla.
Un glob restringe quale tool. Per restringere con quali argomenti, metti in
AND una clausola sugli argomenti sulla
stessa regola; per governare un tool solo quando una particolare skill ne è
proprietaria, aggiungi un glob sul nome della skill (stessa grammatica,
confrontata con la skill proprietaria). Entrambi sono trattati in
Regole del Firewall.
8. Riferimento rapido
Il verbo nudo è coperto da un glob di suffisso?
Il verbo nudo è coperto da un glob di suffisso?
Sì.
*.exec corrisponde a shell.exec, db.exec, e al nudo, senza
namespace exec. I glob di prefisso (foo.*) non corrispondono al nudo
namespace foo — solo a nomi con qualcosa dopo il punto.La stella nel mezzo in foo.*.bar funziona?
La stella nel mezzo in foo.*.bar funziona?
No. L’unica forma con wildcard-nel-mezzo che il motore comprende è l’infisso
simmetrico
*.X.*. foo.*.bar ricade su un match letterale esatto. Usa due
regole o una clausola sugli argomenti invece.Il matching è case-sensitive?
Il matching è case-sensitive?
Sì.
Shell.Exec e shell.exec sono tool diversi. Copia i nomi verbatim dalla
scheda Discovered tools.E se il glob è malformato?
E se il glob è malformato?
Qualsiasi forma che non sia una delle cinque sopra è trattata come un match
esatto — semplicemente non corrisponderà a un nome di tool reale, quindi la
regola non scatta mai anziché corrispondere a qualcosa di inatteso. La console
valida le regole al salvataggio.
Correlati
Allow-listing dei tool
Usa i glob per consentire un insieme noto e negare il resto.
Valida gli argomenti
Metti in AND una clausola sugli argomenti JSONPath su un glob.
Schema delle regole
Ogni campo di una regola, in un unico posto.
