1. Las dos familias de rutas
Consola — configurar
/api/workspace/firewall/*. Autenticado por tu token de sesión / acceso
(UserAuth), acotado a tu espacio de trabajo activo. Autora políticas, lee eventos,
registra servidores MCP, resuelve aprobaciones. Cada acción está gobernada por rol.Gateway — aplicar
/api/v1/firewall/*. Autenticado por una clave con alcance de gateway de firewall
(una clave con is_firewall_gateway establecido). La superficie máquina a máquina que
tu agente o cliente MCP llama en tiempo de ejecución. Una clave de relay normal obtiene
403 aquí.Las rutas de consola nunca toman una clave de relay
sk-orca-…, y las rutas del gateway
nunca toman un token de sesión. Confundirlas es el 401/403 más común al conectar el
firewall por primera vez. La única clave sk-orca-… que pertenece en una llamada
/v1/firewall/* es una acuñada con is_firewall_gateway activado — ve
Alcance, claves y políticas.2. Roles de un vistazo
Las rutas de consola resuelven tu rol de espacio de trabajo y gobiernan en consecuencia. Las lecturas que no llevan procedencia de llamada a herramienta están abiertas a cualquier miembro; las escrituras y cualquier cosa que exponga argumentos de llamada a herramienta requieren Developer+.| Rol | Puede hacer |
|---|---|
| Viewer / member | Leer configuración, políticas, presets, herramientas descubiertas, simulate, anomalías. |
| Developer+ | Todo lo anterior, más cada escritura, la superficie events/runs/trace y el dry-run test. |
| Admin+ | Adicionalmente, establecer el flag is_firewall_gateway en una clave y leer el texto plano de una clave de gateway. |
3. Configurar una política desde la consola
Las rutas de consola son cómo autoras e inspeccionas la política. Configuras todo en la UI del dashboard — estos son los mismos endpoints que llama.Políticas y configuración
| Método y ruta | Rol | Propósito |
|---|---|---|
GET /api/workspace/firewall/settings | Member | Modo observe + conteos. |
PUT /api/workspace/firewall/settings | Developer+ | Actualizar la configuración del firewall del espacio de trabajo. |
GET /api/workspace/firewall/policies | Member | Lista políticas. |
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. |
POST /api/workspace/firewall/rules | Developer+ | Añadir una regla. |
PUT /api/workspace/firewall/rules | Developer+ | Actualizar una regla. |
DELETE /api/workspace/firewall/rules/:id | Developer+ | Eliminar una regla. |
Postura, presets y sandboxes
| Método y ruta | Rol | Propósito |
|---|---|---|
GET /api/workspace/firewall/presets | Member | Presets de reglas integrados. |
GET /api/workspace/firewall/templates | Member | Galería de plantillas por caso de uso. |
POST /api/workspace/firewall/templates/apply | Developer+ | Aplicar una plantilla → una política + sus reglas. |
POST /api/workspace/firewall/autonomy | Developer+ | Aplicar un nivel de autonomía (tight / balanced / permissive). |
POST /api/workspace/firewall/autonomy/undo/:audit_id | Developer+ | Deshacer de un clic desde el snapshot de auditoría. |
GET /api/workspace/firewall/simulate | Member | Qué bloquearía un nivel (?level=). |
POST /api/workspace/firewall/test | Developer+ | Ejecutar en seco una política contra una llamada 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. |
POST /api/workspace/firewall/anomalies/snooze | Developer+ | Posponer el feed (≤ 7 días). |
Servidores MCP
Registra los servidores Model Context Protocol que tus agentes alcanzan, detrás de un único gateway auditado. Las credenciales se almacenan cifradas y se enmascaran al leer.| Método y ruta | Rol | Propósito |
|---|---|---|
GET /api/workspace/firewall/mcp_servers | Member | Lista servidores registrados. |
GET /api/workspace/firewall/mcp_servers/:id | Member | Detalle del servidor. |
POST /api/workspace/firewall/mcp_servers | Developer+ | Registrar un servidor (409 ante un name duplicado). |
PUT /api/workspace/firewall/mcp_servers | Developer+ | Actualizar un servidor. |
DELETE /api/workspace/firewall/mcp_servers/:id | Developer+ | Eliminar un servidor. |
POST /api/workspace/firewall/mcp_servers/:id/probe | Developer+ | Handshake de alcanzabilidad + tools/list. |
name único, un endpoint, un auth_mode
(none / bearer / oauth / basic) y un status de salud
(ok / degraded / down). Ve Firewall MCP para el ciclo
de vida completo y la cuarentena de skills.
4. Aplicar en el gateway
Estos se ejecutan sobre una clave con alcance de gateway de firewall, no tu sesión. Son lo que tu bucle de agente o cliente MCP llama en tiempo de ejecución.| 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/mcp_servers | Enumerar los servidores registrados del espacio de trabajo. |
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. |
Un ejemplo concreto: evaluar una llamada a herramienta
Antes de que tu agente despache una herramienta, pide al gateway un veredicto. Pasa la clave con alcance de gateway de firewall — no tu clave de relaysk-orca-…:
allow, audit, deny, sanitize o
pending_approval. Ante un deny omites la llamada y expones la razón al modelo; ante
un sanitize reenvías los argumentos limpios que el gateway devuelve (sanitize
redacta los argumentos de la llamada a herramienta solamente — nunca el contenido que
una herramienta devuelve); ante un pending_approval entras en el bucle de aprobación de
abajo.
5. El handshake de aprobación (HITL)
Un veredictopending_approval retiene la llamada para un humano. El error HTTP mientras
está retenida es firewall_approval_pending. Liberarla es un bucle de tres pasos
repartido entre ambas familias de rutas:
Un revisor resuelve la retención
Desde la consola (
PATCH /api/workspace/firewall/approvals/:id, Developer+), o tu
propio sistema publica un callback firmado con HMAC a
POST /api/v1/firewall/approvals/:id/callback. El callback verifica el HMAC en línea
— no se acepta ninguna otra autenticación.Tu agente hace polling de la aprobación
GET /api/v1/firewall/approvals/:id con la clave de gateway, hasta que el estado
cambia a aprobado o rechazado.6. Cómo se ve un block
| Resultado | HTTP | Código |
|---|---|---|
| Llamada a herramienta denegada (superficie inbound) | 400 | firewall_blocked |
| Denegada vía gateway MCP | error de herramienta | firewall deny: <reason> |
| Retenida para aprobación | 400 | firewall_approval_pending |
firewall_blocked está marcado skip-retry — reejecutar la llamada idéntica
simplemente volvería a bloquear, así que un cliente que reintenta hace backoff en vez de
martillear. La lista completa de códigos vive en
Códigos de error.
7. Referencias relacionadas
API de Guardrail
El par de política de contenido — rutas
/api/guardrail/* para el plano de texto.Glosario de veredictos
Cada veredicto y lo que le hace a una llamada.
Glob y JSONPath
La gramática de coincidencia detrás de
tool_name_glob y args_match.API de Compliance
Packs, reportes firmados, residencia y borrado.
8. FAQ
¿Por qué mi clave de relay obtiene un 403 en /api/v1/firewall/evaluate?
¿Por qué mi clave de relay obtiene un 403 en /api/v1/firewall/evaluate?
Las rutas del gateway requieren una clave con alcance de gateway de firewall —
una acuñada con
is_firewall_gateway establecido (una acción Admin+). Una clave de
relay normal, incluso válida, obtiene 403. Acuña una clave de gateway dedicada para
el runtime de tu agente.¿Puede un viewer leer eventos del firewall?
¿Puede un viewer leer eventos del firewall?
No. Las rutas
events, events/aggregate y trace son Developer+ porque los
registros llevan procedencia de argumentos de llamada a herramienta. Los viewers
pueden leer configuración, políticas, presets, herramientas descubiertas, simulate y
el feed de anomalías.¿Dónde resuelvo una aprobación retenida — consola o gateway?
¿Dónde resuelvo una aprobación retenida — consola o gateway?
Cualquiera. Un humano la resuelve en la consola vía
PATCH /api/workspace/firewall/approvals/:id (Developer+), o tu propio sistema
publica una decisión firmada con HMAC a
POST /api/v1/firewall/approvals/:id/callback. El agente hace polling de
GET /api/v1/firewall/approvals/:id sin importar qué ruta la resolvió.¿Sanitize limpia lo que una herramienta devuelve?
¿Sanitize limpia lo que una herramienta devuelve?
No. Un veredicto
sanitize redacta los argumentos de la llamada a herramienta
solamente — nunca el contenido que una herramienta devuelve. En la superficie
inbound, donde aún no hay argumentos en tiempo de llamada, sanitize escala a un
bloqueo. Ve Reglas del firewall.Para saber cómo se componen estos controles con los guardrails y el resto del gateway, ve Asegurar agentes de IA y Guardrails vs Firewall.
