Reglas
El lenguaje de coincidencia — globs de herramienta, cláusulas de
argumentos, listas de egress, saneadores y secuencias.
Servidores MCP
Registra y gobierna servidores Model Context Protocol detrás de un único
gateway auditado.
Skills
Escanea y puntúa por riesgo las capacidades que tus agentes instalan
antes de que puedan ejecutarse.
1. Qué es el Firewall
Un agente de IA no solo genera texto — actúa. Llama ashell.exec,
consulta db.query, recupera una URL, carga una skill de la comunidad o
enruta una llamada a herramienta a través de un servidor MCP de terceros.
Cada una de esas es una acción con consecuencias en el mundo real, y los
guardrails a nivel de prompt no pueden verlas.
El Firewall es una política nombrada, con alcance de espacio de
trabajo que el gateway evalúa en cada llamada a herramienta. Autoras una
política una vez, adjuntas una clave API a ella (o estableces una como el
valor por defecto del espacio de trabajo), y a partir de entonces cada
llamada a herramienta que emite esa clave se verifica contra la política
— antes de que llegue a la herramienta.
Cada política es una lista ordenada de reglas. Una regla decide una
cosa — a qué llamadas a herramienta aplica (un glob de nombre de
herramienta, opcionalmente acotado a una skill y a una superficie de
aplicación) y qué hacer al respecto (un veredicto: allow, audit,
deny, sanitize, retener para aprobación o limitar coste). El motor recorre
las reglas en orden de prioridad, gana la primera coincidencia, y hace
fallback al veredicto por defecto de la política si nada coincide.
Editar una política surte efecto en cada clave adjunta a ella en la
siguiente llamada. Sin redespliegue. Sin cambio de código del agente. La
política se aplica en el gateway — tu agente sigue emitiendo llamadas a
herramienta exactamente como antes.
La detección ocurre en el gateway, en el primer uso. El Firewall se
sitúa en la ruta de relay del LLM, no dentro del gestor de paquetes o el
sistema de archivos de tu agente. Una herramienta, servidor MCP o skill que
un agente autoinstala se captura la primera vez que su llamada cruza el
gateway — no en tiempo de instalación. Esto es deliberado: es el único
punto de estrangulamiento que ve cada proveedor, cada agente y cada
llamada a herramienta sin importar cómo llegó ahí la capacidad.
2. Las cuatro superficies de aplicación
Cada llamada a herramienta se evalúa contra exactamente una superficie — el punto en el ciclo de vida de la solicitud donde el firewall la ve:| Superficie | Qué ve |
|---|---|
inbound | Las herramientas que un agente anuncia al modelo en la solicitud (definiciones de herramienta). Te permite bloquear una herramienta peligrosa antes de que el modelo pueda siquiera elegirla. |
response | Los tool_calls que el modelo emite en su respuesta. |
mcp | Un tools/call despachado a través del gateway MCP del Firewall o evaluado vía el hook del SDK. |
egress | Un destino de red saliente (host / IP / CIDR) reportado por una herramienta — la superficie de SSRF y exfiltración de datos. |
3. Conceptos centrales
| Concepto | Definición |
|---|---|
| Política | Un conjunto de reglas nombrado, con alcance de espacio de trabajo. Tiene enabled, is_default, un default_verdict y un flag shadow_mode. |
| Regla | Una verificación dentro de una política: una prioridad, una coincidencia de herramienta/skill, una superficie opcional, un predicado de argumentos opcional y un veredicto. Ver Reglas. |
| Veredicto | La acción que produce una regla (o el valor por defecto) — ver §4. |
| Veredicto por defecto | Se aplica cuando ninguna regla coincide. Uno de allow, audit (por defecto) o deny. |
| Modo shadow | La política evalúa y registra pero nunca bloquea — cada veredicto de aplicación se degrada a audit y la razón se prefija con [shadow] would …. Tu interruptor de lanzamiento seguro. |
| Modo observe | Un ajuste a nivel de espacio de trabajo. Cuando una solicitud no resuelve a ninguna política y el modo observe está activado, la llamada se permite pero se registra como un hueco de cobertura — eso es lo que llena la vista de Herramientas descubiertas. |
Alcance y resolución
Las políticas se resuelven exactamente como los Guardrails y las claves API — compartidas en el espacio de trabajo cuando tienes uno activo. Para cualquier llamada a herramienta el gateway resuelve la política en este orden:- Vinculación de clave — si la clave que llama tiene un
firewall_policy_id, esa política aplica (cuando existe y está habilitada). - Valor por defecto del espacio de trabajo — en caso contrario aplica
la política habilitada
is_defaultdel espacio de trabajo. - Ninguna — sin aplicación. Con el modo observe activado, la llamada se permite y se registra como un hueco; con él apagado, la llamada se permite silenciosamente (idéntica byte a byte a un espacio de trabajo que nunca habilitó la función).
Fail-open en lo desconocido, fail-closed en lo ambiguo. Si la
resolución de la política encuentra un error transitorio, el gateway
degrada a observe/allow en vez de tumbar el tráfico. Pero donde no
aplicar derrotaría la regla — un reporte de egress sin destino utilizable,
un almacén de aprobaciones inalcanzable, una skill cuya propiedad no se
puede resolver — el motor falla cerrado (deny o hold). La
disponibilidad se preserva; la seguridad no se omite silenciosamente en los
casos que importan.
4. Veredictos
Una regla (o el veredicto por defecto) produce uno de:| Veredicto | Qué hace |
|---|---|
allow | Deja pasar la llamada. Registrado. |
audit | Permite, pero lo registra para revisión. El default_verdict por defecto — observa todo, no bloquea nada, hasta que estés listo. |
deny | Bloquea la llamada. El agente ve un error de herramienta (o HTTP 400 en la superficie inbound). |
sanitize | Redacta las subcadenas coincidentes de los argumentos de la herramienta (secretos, PII) y reenvía la llamada limpia. Ver saneadores. En la superficie inbound — donde aún no hay argumentos en tiempo de llamada — sanitize escala a un bloqueo. |
pending_approval | Retiene la llamada para un humano. El agente obtiene una respuesta “retenida”; un revisor aprueba o rechaza fuera de banda; el agente reenvía con un token de aprobación de un solo uso. Ver §7. |
cap_cost | Deniega una vez que el gasto acumulado de la ejecución del agente excede un tope en centavos por regla. Un interruptor de circuito para bucles descontrolados. |
deny / sanitize / pending_approval se degradan todos
a audit para que puedas medir el impacto de una política antes de que
cambie el tráfico.
5. Cómo se evalúa una llamada a herramienta
- Una llamada a herramienta llega al gateway (anunciada inbound, emitida en una respuesta, despachada a través del gateway MCP, o reportada como egress).
- El motor resuelve la política activa (§3).
- Recorre las reglas de la política en orden de prioridad (menor prioridad primero; los empates se rompen por id de regla). Una regla coincide cuando su superficie, su glob de nombre de herramienta, su glob de nombre de skill opcional, sus cláusulas de argumentos opcionales y su alcance de egress opcional coinciden todos.
- Gana la primera coincidencia → aplica el veredicto de la regla. Si
ninguna regla coincide → el
default_verdictde la política. - Si la llamada es propiedad de una skill
gobernada, el modo de aplicación de la skill se aplica encima — una
skill en modo
blockfuerza un deny; una skill en modoquarantineescala cualquier cosa por debajo de deny apending_approval. - La decisión se registra como un evento del firewall (a menos que sea una ejecución en seco), correlacionada con la ejecución y la sesión del agente.
6. Cómo se ve un block
Una llamada denegada en la superficie inbound devuelve HTTP 400 con un cuerpo de error con forma de OpenAI, el código de errorfirewall_blocked y un mensaje que nombra la herramienta y la razón — p.
ej. tool "shell.exec" blocked by firewall: destructive shell command. El
error lleva metadata estructurada (código de razón, factores de riesgo,
puntuación) y se marca como skip-retry (reejecutar la misma llamada
simplemente volvería a bloquear).
Una llamada despachada a través del gateway MCP se bloquea como un
error de herramienta (firewall deny: <reason>) en vez de un fallo de
transporte, así que el modelo ve el rechazo y puede reaccionar — elegir otra
herramienta, preguntar al usuario o detenerse — en vez de fallar.
Una llamada retenida (pending_approval) devuelve HTTP 400 con el
código firewall_approval_pending y un id de aprobación sobre el que el
cliente hace polling.
7. Aprobación humana (HITL)
Un veredictopending_approval convierte una llamada a herramienta en una
revisión fuera de banda:
- El motor encola un registro de aprobación y devuelve una respuesta “retenida” que lleva su id; la llamada no llega a la herramienta.
- Un revisor la resuelve — desde la consola (Developer+), o vía un callback de webhook firmado con HMAC a tu propio sistema de aprobación.
- Tu agente (o el SDK de MCP) hace polling del id de aprobación; una
vez aprobado reenvía la llamada original con una cabecera
X-OrcaRouter-Firewall-Approvalde un solo uso, y el gateway la deja pasar esa única vez.
rule_changed
para que los revisores sepan que el contexto cambió.
8. Niveles de autonomía — un interruptor para toda tu postura
Afinar las políticas regla por regla es la ruta precisa; los niveles de autonomía son la rápida. Un único control reemplaza atómicamente la postura de Firewall y de Guardrails de tu espacio de trabajo en una transacción, con deshacer de un clic:| Nivel | Postura |
|---|---|
tight | Bloquea shell destructivo, secretos en argumentos y egress SSRF (deny por defecto); guardrails de PII Shield + Secrets Blocker activados; modo observe apagado. |
balanced | Audita shell destructivo, marca PII; modo observe apagado. La postura de inicio recomendada. |
permissive | Sin política de aplicación, sin guardrails; modo observe activado para que aún veas todo. |
9. Detección de anomalías
Más allá de las reglas estáticas, el Firewall aprende la forma normal de uso de herramientas de cada espacio de trabajo y marca las desviaciones en un feed legible por el visualizador:- Picos de tasa / coste — la actividad por herramienta se puntúa contra
una línea base de hora-de-la-semana aprendida (un promedio móvil de
14 días), así que “100 llamadas a
db.querya las 3am del domingo” resalta incluso si cada llamada está individualmente permitida. retry_loop— un agente martillando la misma herramienta que falla.novel_path— una transición de herramienta a herramienta que este espacio de trabajo nunca ha hecho antes.
10. Observabilidad
El Firewall deja un rastro sobre el que puedes actuar, todo con alcance de espacio de trabajo:| Superficie | Qué te da |
|---|---|
| Events | Cada evaluación, filtrable por veredicto, superficie, herramienta, ejecución y sesión. El registro en bruto detrás de todo lo demás. |
| Runs & sessions | Eventos agregados por ejecución de agente o conversación — desglose de veredictos, herramientas y modelos distintos, primera/última vez vistos. La vista de “qué hizo realmente este agente”. |
| Discovered tools | Cada herramienta que el espacio de trabajo ha visto, marcada covered (una regla aplica) o gap (ninguna lo hace). Impulsa la autoría de políticas desde el tráfico real. |
| Simulate | Previsualiza qué cambiaría un nivel de autonomía antes de aplicarlo. |
| Test | Ejecuta en seco una política contra una llamada a herramienta de muestra y ve el veredicto, la regla coincidente y la razón — nada se persiste, nada se despacha. |
| Audit | Cada cambio de política, regla y configuración escribe una fila de auditoría (espacio de trabajo + central) después de que el cambio se confirma. Los secretos y los blobs de reglas nunca se registran. |
11. Relación con el resto del gateway
| Superficie | ¿Cómo se compone con el Firewall? |
|---|---|
| Guardrails | Planos complementarios. Los Guardrails examinan el texto de prompt/respuesta; el Firewall gobierna las acciones de herramienta. Ambos pueden aplicarse a una solicitud. Los niveles de autonomía establecen ambos a la vez. |
| Enrutamiento | Independiente. El enrutamiento elige el modelo/canal; el firewall juzga las llamadas a herramienta sin importar qué modelo las atendió. |
| Claves API | Una clave se adjunta a una política vía firewall_policy_id; la vinculación vive en la clave dentro del gateway. Sin vinculación se hace fallback al valor por defecto del espacio de trabajo. |
| Gateway MCP | El firewall es el gateway MCP — cada servidor que registras despacha su tools/call a través del motor. |
| Skills | El modo de aplicación de una skill gobernada cabalga encima del veredicto de la regla, así que una skill en cuarentena se retiene incluso si ninguna regla nombra sus herramientas. |
12. Conectar un agente al gateway del Firewall
Hay dos formas en que una llamada a herramienta llega al motor:- Gateway MCP — apunta tu cliente MCP (Claude Desktop, Cursor, un
framework de agentes) a
https://api.orcarouter.ai/api/v1/firewall/mcp. El gateway expone las herramientas de cada servidor registrado alcanzable, con espacio de nombres<server>.<tool>, y evalúa cadatools/callen línea. Ver Servidores MCP. - Hook de evaluación — llama a
POST /api/v1/firewall/evaluatedesde tu propio bucle de agente antes de despachar una llamada a herramienta, y actúa sobre el veredicto.
403 en
estas rutas.
13. Referencia de la API
Todas las rutas de consola tienen alcance de espacio de trabajo vía el contexto del espacio de trabajo y aplican RBAC de manera consistente: las lecturas y los sandboxes de test/simulate están abiertos a cada miembro; las escrituras requieren Developer+.Políticas y configuración
| Método y ruta | Rol | Propósito |
|---|---|---|
GET /api/workspace/firewall/settings | Member | Leer la configuración del firewall del espacio de trabajo (modo observe, valores por defecto). |
PUT /api/workspace/firewall/settings | Developer+ | Actualizar la configuración. |
GET /api/workspace/firewall/policies | Member | Lista políticas (con conteos de reglas + claves adjuntas). |
GET /api/workspace/firewall/policies/:id | Member | Detalle de una sola política. |
POST /api/workspace/firewall/policies | Developer+ | Crear una política. |
PUT /api/workspace/firewall/policies | Developer+ | Actualizar una política. |
DELETE /api/workspace/firewall/policies/:id | Developer+ | Eliminar una política (409 si aún hay claves adjuntas). |
Postura, presets y sandboxes
| Método y ruta | Rol | Propósito |
|---|---|---|
GET /api/workspace/firewall/presets | Member | Presets de reglas integrados. |
POST /api/workspace/firewall/autonomy | Developer+ | Aplicar un nivel de autonomía. |
POST /api/workspace/firewall/autonomy/undo/:audit_id | Developer+ | Deshacer un cambio de autonomía. |
GET /api/workspace/firewall/simulate | Member | Previsualizar un nivel de autonomía (?level=). |
POST /api/workspace/firewall/test | Developer+ | Ejecutar en seco una política contra una llamada a herramienta de muestra. |
Observabilidad
| Método y ruta | Rol | Propósito |
|---|---|---|
GET /api/workspace/firewall/discovered-tools | Member | Herramientas vistas, marcadas covered / gap. |
GET /api/workspace/firewall/events | Developer+ | Lista eventos del firewall (filtrable). |
GET /api/workspace/firewall/events/by-request/:request_id | Developer+ | Eventos de una solicitud. |
GET /api/workspace/firewall/events/aggregate | Developer+ | Agregado de ejecuciones / sesiones. |
GET /api/workspace/firewall/trace/by-run | Developer+ | Nodos de traza para una ejecución (?run_id=). |
GET /api/workspace/firewall/anomalies | Member | Feed de anomalías (?window=). |
POST /api/workspace/firewall/anomalies/snooze | Developer+ | Posponer el feed de anomalías. |
Gateway (máquina a máquina)
Estos se ejecutan sobre un token con alcance de gateway de firewall, no la sesión de consola:| Método y ruta | Propósito |
|---|---|
POST /api/v1/firewall/evaluate | Veredicto previo al despacho para una llamada a herramienta. |
POST /api/v1/firewall/evaluate_plan | Verificación previa a la ejecución para un plan de varios pasos. |
ANY /api/v1/firewall/mcp | El endpoint unificado del gateway MCP. |
GET /api/v1/firewall/approvals/:id | Hacer polling del estado de aprobación de una llamada retenida. |
POST /api/v1/firewall/approvals/:id/callback | Callback de aprobación firmado con HMAC. |
14. FAQ
¿Qué pasa si ninguna política resuelve en una llamada a herramienta?
¿Qué pasa si ninguna política resuelve en una llamada a herramienta?
Con el modo observe apagado, el comportamiento es idéntico byte a
byte a un espacio de trabajo que nunca habilitó la función — nada se
bloquea ni se registra. Con el modo observe activado, la llamada se
permite pero se registra como un hueco de cobertura para que aparezca en
Discovered tools.
¿Cómo lanzo una política de forma segura?
¿Cómo lanzo una política de forma segura?
Activa el modo shadow. La política evalúa y registra exactamente
como lo haría en producción, pero cada veredicto de aplicación se
degrada a
audit y la razón se prefija con [shadow] would …. Observa
las vistas de eventos y ejecuciones, confirma que se dispara en lo que
esperas y en nada que no, luego apaga el modo shadow para empezar a
aplicar.¿Cuesta cuota una llamada a herramienta bloqueada?
¿Cuesta cuota una llamada a herramienta bloqueada?
Un bloqueo inbound se dispara antes de la llamada al modelo upstream,
así que no cuesta tokens de modelo. Los veredictos audit / allow no
cambian la facturación. Una regla
cap_cost es en sí misma un control
de facturación — deniega una vez que el gasto de la ejecución cruza tu
tope en centavos.¿Firewall o Guardrails — cuál uso?
¿Firewall o Guardrails — cuál uso?
Ambos, para capas diferentes. Los Guardrails examinan el texto en
prompts y respuestas (PII, secretos, jailbreaks). El Firewall
gobierna las acciones que toma un agente (qué herramientas, qué
servidores MCP, qué hosts). Una solicitud puede pasar por ambos. El
nivel de autonomía
tight los configura juntos.¿Está garantizada la aplicación para cada herramienta que ejecuta un agente?
¿Está garantizada la aplicación para cada herramienta que ejecuta un agente?
El Firewall aplica sobre las llamadas a herramienta que cruzan el
gateway — la ruta de relay, el gateway MCP y el hook de evaluación. Una
herramienta que tu agente ejecuta enteramente dentro de su propio
proceso, sin tocar nunca el gateway, está fuera de la vista del
firewall. El objetivo de diseño es hacer del gateway la única ruta
auditada para las llamadas que importan (herramientas mediadas por
modelo, despacho MCP, egress de red); enruta esas a través de él y
quedan gobernadas.
Véase también
¿Quieres profundizar en la seguridad de agentes? Las guías de Protege tus agentes (Zero Trust) sitúan esta función dentro de un flujo de trabajo de confianza cero.Protege tus agentes (Zero Trust)
El manual del firewall de agentes de confianza cero — listas de permitidos de herramientas, verificación de argumentos y control de salida.
Línea base de Agentes Seguros
Un solo interruptor que establece a la vez la postura de tu Firewall y tus Guardrails.
