shell.exec e um
escopo de rede externo é exatamente o tipo de coisa que deveria ser revisada
antes de rodar, não descoberta em um incidente.
A governança de Skills do Firewall é essa revisão. Cada capacidade
instalável é registrada como um registro com escopo de workspace, escaneada
por um motor de risco determinístico, recebe uma faixa de risco e um modo de
enforcement, e — em runtime — esse modo anda por cima dos
vereditos de regra do firewall.
1. O que é uma “skill” aqui
Um registro de skill é uma capacidade instalável de agente. Um único modelo generaliza três tipos para que um plano de escaneamento, pontuação e aprovação governe tudo o que um agente autoinstala:| Tipo | O que é |
|---|---|
skill | Uma capacidade empacotada — um manifesto mais um conjunto de ferramentas e um fragmento de system-prompt. |
mcp_server | Um servidor MCP bring-your-own registrado como um artefato governado. |
plugin | Uma extensão estilo plugin. |
builtin, registry, private,
byo_mcp ou auto_detected — que alimenta a avaliação de confiança.
2. O scanner
No registro (e sob demanda), o scanner roda um conjunto de passes determinísticos e sem dependências sobre o manifesto e os escopos declarados. Cada pass emite findings com uma severidade deinfo, warn ou error:
| Pass | Sinaliza | Severidade |
|---|---|---|
| prompt_injection | Texto de manifesto que tenta sobrescrever instruções (ignore previous instructions, you are now, um system: no início…). | warn |
| tool_creep | Nomes de ferramenta que o manifesto usa mas não declarou em allowed_tools. | error |
| network_egress | Hosts HTTP(S) no manifesto que não estão aprovados nos escopos de rede da skill. | warn |
| fs_write_unsafe | Um escopo de filesystem em modo de escrita em um path fora de /tmp (traversal-safe). | error |
| data_scope | Escopos de dados sensíveis (pii, financial, customer). | info |
| unsigned | Uma skill registry sem assinatura. | warn |
error →
blocked; caso contrário qualquer warn → flagged; caso contrário
clean.
3. Score de risco & faixas
Os mesmos findings alimentam um score de risco determinístico (0–100, aditivo com tetos por categoria). Os contribuidores mais pesados são capacidades perigosas:| Capacidade | Peso |
|---|---|
| Execução de shell | +30 |
| Eval de código arbitrário | +30 |
Escrita no filesystem fora de /tmp | +25 |
| Leitura de segredos | +25 |
| Egress de rede externo | +20 |
| Faixa | Score |
|---|---|
low | 0–25 |
medium | 26–50 |
high | 51–75 |
critical | 76–100 |
4. Modo de enforcement
A faixa e o veredito juntos derivam um modo de enforcement — o que o firewall de fato faz quando uma ferramenta de propriedade desta skill é chamada:| Modo | Efeito em runtime |
|---|---|
allow | A skill não impõe nada de próprio; os vereditos de regra decidem. |
quarantine | Escala qualquer coisa aquém de um deny para pending_approval — as ferramentas da skill rodam apenas depois que um humano aprova. |
block | Força um deny nas ferramentas da skill. |
error que torna o
veredito blocked irá quarantine-or-block mesmo quando a faixa numérica é
low — a direção cautelosa. Um operador pode definir o modo explicitamente; em
um re-scan o modo só aperta mais, nunca relaxando um block ou quarantine
que você definiu.
5. Sinais de confiança
Dois sinais além do scan estático informam como uma skill é tratada:- Publicadores assinados. Uma skill carregando uma assinatura de um publicador confiável é tratada como mais confiável (a mitigação de assinatura reduz seu score de risco); uma skill de registry sem assinatura é penalizada. Você gerencia quais publicadores seu workspace confia.
- Reputação de recurso. O standing de uma skill pode ser ajustado por seu comportamento ao vivo ao longo do tempo — negações e anomalias elevam seu risco, sequências limpas o reduzem — de modo que um artefato que se comporta mal em produção deriva em direção à quarentena mesmo se seu manifesto escaneou limpo.
6. Capacidades auto-detectadas
O scanner não roda apenas quando você registra algo manualmente. Quando um agente autoinstala uma capacidade e suas ferramentas cruzam o gateway pela primeira vez, o Firewall a auto-detecta (fora do caminho quente, assincronamente), sintetiza um manifesto a partir do que observou, e roda o mesmo scan, score e derivação de modo — comsource = auto_detected.
Capacidades auto-detectadas ficam em quarentena até serem revisadas.
Qualquer coisa auto-detectada que de outra forma resolveria para
allow é
rebaixada para quarantine (e critical permanece block) até que um humano
a revise. Uma capacidade que ninguém aprovou não recebe um passe livre só
porque escaneou benigna — ela roda apenas depois que você a examinou.7. Enforcement em runtime
Quando uma chamada de ferramenta chega ao motor do firewall, ela é atribuída a uma skill proprietária, e então o modo da skill é aplicado por cima do veredito da regra:- Atribuição. A chamada é correspondida a uma skill por seus
allowed_toolsdeclarados, depois pelo prefixo de namespacemcp_server, depois por um fallback de enforcement mais-restritivo de todo o workspace. - Veredito da regra. As regras da política rodam como de costume — e o
skill_name_globde uma regra permite que você dê escopo a uma regra para skills específicas. - Override de modo. Uma skill
blockforça um deny; uma skillquarantineescala qualquer coisa aquém de deny parapending_approval;allowdeixa o veredito intocado.
A atribuição de skill falha fechado. Se uma ferramenta não pode ser
atribuída (um erro de DB sem cache, ou uma ferramenta não declarada sob uma
fonte curada), a chamada é retida para revisão em vez de permitida. E o
modo de skill é independente do shadow mode — uma skill em quarentena ou
bloqueada ainda é aplicada mesmo enquanto uma política está em rollout de
shadow.
8. Ciclo de vida
- Register —
POST /skillsvalida e escaneia sincronamente, retornando a skill mais seus findings e veredito. O modo é derivado (ou seu modo explícito é honrado). - Update — re-escaneia o novo manifesto; o modo aperta mais em um scan piorado mas nunca relaxa seu block/quarantine armazenado.
- Rescan —
POST /skills/:id/rescanre-roda o scan; se o veredito recém degrada para flagged ou blocked, ele emite um evento de firewall para que o drift apareça no seu feed. - Delete — soft-delete e libera o slot de nome para re-registro.
API reference
Escopo de workspace; leituras de lista são abertas a qualquer membro (e redigem campos que carregam segredos), todo o resto exige Developer+.| Método & path | Papel | Propósito |
|---|---|---|
GET /api/workspace/firewall/skills | Member | Lista skills (redigidas; filtre por ?kind= e ?source=). |
GET /api/workspace/firewall/skills/:id | Developer+ | Registro completo da skill. |
POST /api/workspace/firewall/skills | Developer+ | Registra + escaneia (409 em nome duplicado). |
PUT /api/workspace/firewall/skills/:id | Developer+ | Atualiza + re-escaneia. |
POST /api/workspace/firewall/skills/:id/rescan | Developer+ | Re-escaneia; emite um evento em degradação. |
DELETE /api/workspace/firewall/skills/:id | Developer+ | Soft-delete. |
Os nomes são únicos por workspace entre tipos — uma
skill chamada
github e um mcp_server chamado github colidem no mesmo workspace.
Escolha nomes distintos por artefato.FAQ
Como isso é diferente do DSL de regras?
Como isso é diferente do DSL de regras?
As Regras gateiam chamadas de ferramenta
por nome e argumentos. As Skills gateiam as capacidades que um agente
carrega — o pacote, seu manifesto e suas permissões solicitadas — antes
que qualquer uma de suas ferramentas rode. O modo da skill então anda por
cima do que quer que as regras decidam, então os dois se compõem: uma
regra pode dar
allow a http.fetch em geral enquanto uma skill em
quarentena que o possui ainda é retida.O que impede uma skill maliciosa de declarar um manifesto limpo?
O que impede uma skill maliciosa de declarar um manifesto limpo?
Várias coisas. A detecção de tool-creep sinaliza ferramentas usadas mas
não declaradas; a auto-detecção re-escaneia a partir do que de fato cruzou
o gateway, não apenas o manifesto alegado; o modo aperta mais (não menos)
em um re-scan; a reputação de recurso deriva um artefato que se comporta
mal em direção à quarentena ao longo do tempo; e a atribuição falha
fechado quando uma ferramenta não pode ser vinculada a uma skill
declarada.
Eu tenho que registrar cada skill manualmente?
Eu tenho que registrar cada skill manualmente?
Não. Registre as que você quer pré-aprovar; o resto é auto-detectado no
primeiro uso e colocado em quarentena até você revisá-las. Ligue o observe
mode para revelar tudo o que um agente instala sem bloquear, depois aperte
a partir de dados reais.
Veja também
Aprofundando-se em segurança de agentes? Os guias Proteja seus agentes (Zero Trust) colocam este recurso em um fluxo de trabalho zero-trust.Baseline de Agentes Seguros
Aplique uma postura zero-trust a cada capacidade de agente com um único interruptor.
Guardrails agênticos
Guardrails construídos para agentes autônomos que usam ferramentas.
