tools/call
no momento do dispatch contra sua política ativa. O conjunto de ferramentas
anunciado de cada servidor registrado é baselined no primeiro probe e
re-checado contra drift — se o schema da ferramenta muda em relação à
baseline aprovada, o servidor falha fechado até que um admin re-aprove ou o
coloque em quarentena. E a camada de Skills
atribui a cada capacidade instalada uma faixa de risco e um modo de
enforcement — colocando em quarentena qualquer coisa arriscada ou não revisada
até que um humano assine embaixo. Um servidor não pode ganhar um passe livre
por se comportar nas primeiras cem chamadas.
1. Por que a proteção contra rug pull de MCP precisa de avaliação por chamada
Uma revisão no momento de conexão responde uma pergunta uma vez: este servidor é seguro de listar? Ela não pode responder a pergunta que de fato importa em runtime: esta chamada específica, com estes argumentos específicos, é segura agora? O OrcaRouter responde à segunda pergunta. Cadatools/call que cruza o gateway
é avaliado na superfície mcp antes de ser despachado ao servidor real,
com o nome da ferramenta e os argumentos em mãos. O veredito é computado de
novo a cada vez, de modo que no momento em que uma ferramenta começa a fazer
algo que sua política proíbe — exfiltrar um segredo em um argumento, alcançar
um host que é negado, chamar uma capacidade que você nunca aprovou — a chamada
é parada, independentemente de como a mesma ferramenta se comportou um minuto
atrás.
mcp:
allow / audit
audit registra a chamada; allow fica quieto.sanitize
deny
firewall deny: …) de
modo que o agente pode se adaptar em vez de quebrar.pending_approval
2. Quarentena por faixa de risco de skill
A segunda metade da defesa contra rug-pull cobre a cadeia de suprimentos: as skills, plugins e servidores MCP bring-your-own que um agente instala. Cada um é registrado como um registro com escopo de workspace, escaneado por um motor de risco determinístico, e recebe uma faixa de risco (low / medium /
high / critical) mais um modo de enforcement:
| Modo | Efeito em runtime |
|---|---|
allow | Os vereditos de regra decidem; a skill não adiciona nada. |
quarantine | Qualquer coisa aquém de um deny é escalada para pending_approval — as ferramentas rodam apenas depois que um humano aprova. |
block | As ferramentas da skill são negadas de imediato. |
auto_detected e colocada em quarentena até ser
revisada — mesmo que tenha escaneado limpa, ela não roda por sua própria
autoridade. E o modo de uma skill só fica mais apertado no re-scan: um
block ou quarantine que você define nunca é silenciosamente relaxado
quando um manifesto é re-apresentado.
Veja Firewall: Skills para o scanner completo,
os pesos de pontuação e os sinais de confiança.
3. Detecção de drift de schema de ferramenta
O rug pull clássico é um servidor registrado que muda o que anuncia — adiciona uma ferramenta, altera o schema de input de uma ferramenta, troca uma descrição. O OrcaRouter baselina o conjunto de ferramentas anunciado de cada servidor registrado em um probe bem-sucedido e o observa contra drift.Baseline no primeiro probe
pending até que um
admin aprove seu conjunto inicial de ferramentas).Drift falha fechado
changed
e deixa de ser servido — o gateway não despachará suas ferramentas até
que você decida.Aprovar ou colocar em quarentena
Auditado
unknown (nunca baselined),
verified (corresponde à baseline), changed (com drift, retido), pending
(não baselined sob enforcing), ou quarantined. Esta camada pega o rug pull
que move o schema; a avaliação por chamada (§1) pega aquele que mantém uma
assinatura idêntica e apenas muda o comportamento.
4. Um exemplo concreto
Suponha que um servidor MCP da comunidadenotes anuncia uma ferramenta
inofensiva notes.search. Você o lista, o revisa, e ele funciona. Uma semana
depois o servidor é comprometido e notes.search começa a anexar um argumento
de exfiltração que faz POST do seu contexto para um host atacante.
Um gateway que só checa no momento de conexão o encaminharia — o nome e o
schema da ferramenta parecem inalterados. O OrcaRouter avalia a chamada:
args_match são eq, contains, regex, in,
cidr_match, gt, lt; cidr_match testa um argumento com valor de IP
contra um CIDR. Para limitar onde uma ferramenta pode alcançar por
host/CIDR, use a
lista de destino de egress em vez de uma
cláusula de argumento.)
No dispatch o motor retorna deny, e em vez de encaminhar a chamada o gateway
entrega ao agente um erro de resultado de ferramenta MCP — um resultado
normal sinalizado como erro, não uma falha de transporte — de modo que o modelo
pode se adaptar:
5. Como tudo se encaixa
Avaliação por chamada vs. quarentena de skill — qual pega o quê?
Avaliação por chamada vs. quarentena de skill — qual pega o quê?
Isso baselina o schema do servidor?
Isso baselina o schema do servidor?
Para onde vão as chamadas retidas?
Para onde vão as chamadas retidas?
pending_approval retém a chamada para um humano resolver no
console (Developer+) ou via um callback de aprovação HMAC. Veja
modos de enforcement para como
retenções e aprovações são apresentadas a um agente.6. Configurando
Cada passo abaixo é uma ação de console / gerenciamento autenticada com seu session ou access token — não com a chave de relaysk-orca-…. Apenas o
tráfego de relay /v1/* usa a chave de relay.
Registre seus servidores MCP atrás do gateway
Defina um veredito padrão e regras na superfície mcp
tool_name_glob e args_match para que chamadas
arriscadas resolvam para deny, sanitize ou pending_approval. Veja a
referência de regras do Firewall.Revise skills em quarentena
quarantine até que um revisor
(Developer+) a aprove. Leia a faixa e os findings primeiro.Faça rollout em shadow, depois enforce
