1. La policy di sicurezza per singola chiave: due campi su una chiave
Un guardrail filtra il testo che scorre attraverso un modello (PII, segreti, jailbreak). Una policy del firewall governa le chiamate a tool che un agent emette (quali tool, quali MCP server, quali host). Entrambe sono policy nominate, con scope a livello di workspace — scritte una volta, condivise in tutto il workspace — e una chiave opta per una specifica tramite due campi:| Campo | Collega | Si imposta in console |
|---|---|---|
guardrail_id | Il guardrail che filtra i prompt e le risposte di questa chiave. | Developer+ |
firewall_policy_id | La policy del firewall che valuta le chiamate a tool di questa chiave. | Developer+ |
/console/token. Impostarne
uno qualsiasi è un’azione Developer+ — le policy stesse sono anch’esse
scritte da Developer+ (vedi
Scope e chiavi).
Questi due campi sono indipendenti. Una chiave può collegare un guardrail e
non una policy del firewall, il contrario, entrambi, o nessuno — ogni piano
si risolve per conto suo. Lasciare un campo non impostato (
0) non equivale a
disattivare l’applicazione; vedi
§3.2. Un esempio concreto
Supponi che il guardrail di default del tuo workspace segnali le PII ma le lasci passare, e che la policy del firewall di default faccia audit di ogni chiamata a tool. Va bene per la maggior parte degli agent — ma il tuo agent finanziario gestisce SSN di clienti e non dovrebbe mai chiamare un tool di shell. Scrivi unfinance-guardrail più rigido (blocca le PII del tutto) e un finance-firewall
(mette in allow-list solo i tre tool che gli servono), poi collega entrambi alla
chiave di quell’agent:
12 e le sue chiamate a tool sono valutate dalla policy 8 — mentre
ogni altra chiave nel workspace continua a girare con i default del workspace.
Il codice stesso dell’agent non cambia mai; continua a chiamare
https://api.orcarouter.ai/v1/... con la sua chiave sk-orca-… esattamente
come prima.
3. Risoluzione: la regola che frega le persone
Per ogni richiesta, il gateway risolve il guardrail attivo e la policy del firewall attiva in modo indipendente. L’ordine sembra lo stesso per entrambi — prima il collegamento, poi il default del workspace — ma divergono su un caso.Risoluzione del guardrail
Collegato e abilitato → usalo
Collegato e abilitato → usalo
Il
guardrail_id della chiave punta a un guardrail che esiste ed è
abilitato. Quel guardrail filtra la richiesta.Collegato ma DISABILITATO o eliminato → nessun guardrail
Collegato ma DISABILITATO o eliminato → nessun guardrail
Disabilitare il guardrail collegato è un interruttore di spegnimento. La
chiave non ottiene alcun filtro dei contenuti — non fa fallback al
default del workspace. È deliberato: collegare un guardrail e disabilitarlo è
il modo per disattivare il filtro per quella chiave.
Non impostato (0) → default del workspace
Non impostato (0) → default del workspace
Nessun
guardrail_id sulla chiave. Si applica il guardrail di default
abilitato del workspace, se ne è impostato uno.Nessuno dei due → nessuna applicazione
Nessuno dei due → nessuna applicazione
Nessun collegamento e nessun default del workspace → la richiesta passa
senza filtro dei contenuti.
Risoluzione del firewall
Collegato e abilitato → usalo
Collegato e abilitato → usalo
Il
firewall_policy_id della chiave punta a una policy che esiste ed è
abilitata. Quella policy valuta le chiamate a tool della chiave.Collegato ma DISABILITATO → default del workspace
Collegato ma DISABILITATO → default del workspace
Qui sta la differenza. Un collegamento al firewall disabilitato fa
fallback alla policy del firewall di default del workspace — non
disattiva l’applicazione. Disabilitare un collegamento al firewall riporta
la chiave al default del workspace; non lascia la chiave senza protezione.
Non impostato (0) → default del workspace
Non impostato (0) → default del workspace
Nessun
firewall_policy_id sulla chiave → si applica la policy del firewall
di default abilitata del workspace.4. Com’è fatto un block
Quando una policy collegata nega una richiesta, il chiamante vede un errore strutturato — l’agent può reagire invece di andare in crash:| Piano | Codice di errore | HTTP | Costo |
|---|---|---|---|
| Guardrail | guardrail_blocked | 400 | Nessuno — un block in input scatta prima del metering; un block in output rimborsa. Marcato skip-retry. |
| Firewall (inbound) | firewall_blocked | 400 | Un block inbound scatta prima della chiamata al modello, quindi nessun token del modello. Skip-retry. |
| Firewall (held) | firewall_approval_pending | 400 | In attesa di approvazione umana; l’agent fa polling e ri-invia una volta approvata. |
5. Dove andare dopo
Scope e chiavi
Il modello completo a tre livelli — workspace, policy, chiave — e ogni campo
che una chiave porta.
Il token object
Ogni campo su una chiave:
model_limits, allow_ips, credit_limit_usd,
expired_time, e i due collegamenti a policy.Guardrails
Scrivi la policy sui contenuti che colleghi tramite
guardrail_id — regole,
entità PII, azioni e preset.Firewall
Scrivi la policy sulle chiamate a tool che colleghi tramite
firewall_policy_id — verdetti, superfici e livelli di autonomia.Vuoi impostare l’intera postura del tuo workspace in un’unica mossa invece di
collegare le chiavi una alla volta? Un livello di autonomia scrive entrambi
i piani — guardrails e firewall — in una volta. Poi collega policy più rigide
sulle poche chiavi che devono spingersi oltre il default del workspace. Vedi
Guardrails vs Firewall.
