# Peticiones bloqueadas

> Mira las llamadas de tus propios agentes de IA que rechazó la pasarela de egress alojada, fíltralas, síguelas en vivo y léelas desde la API o MCP.

Cada llamada de uno de tus agentes que rechaza la pasarela alojada queda como petición bloqueada: la hora, el agente, el destino, el método, la ruta y el estado, la IP de quien llama y los ids de las detecciones. El cuerpo de la petición nunca se guarda. Las peticiones bloqueadas se guardan 30 días, y para leerlas Egress IA tiene que estar activado en la organización.

## Códigos de bloqueo

| Código | Etiqueta del panel | Por qué |
|---|---|---|
| `injection_detected` | Inyección de prompt | La petición llevaba órdenes que intentan anular las instrucciones del modelo (**Bloquear la inyección de prompts** activado) |
| `data_leak_blocked` | Fuga de datos | La petición llevaba un secreto o un número de tarjeta (**Bloquear fugas de datos** activado) |
| `ssrf_blocked` | SSRF | El destino resolvía a una dirección interna o privada |
| `egress_blocked` | Destino no permitido | El agente llamó a un destino que no tiene permitido |
| `body_too_large` | Cuerpo demasiado grande | El cuerpo pasaba de los límites de la pasarela (8 MiB, o 1 MiB de texto que inspeccionar) |

Las llamadas con un token desconocido o incorrecto (`401`) no se guardan: no se pueden atribuir a ninguna organización. La [referencia](https://developers.openwaf.dev/es/egress/cloud/reference/#gateway-errors) recoge cada respuesta de la pasarela.

## Leerlas

**Panel**

Abre **Egress IA → Peticiones bloqueadas**. La tabla enseña las peticiones de los últimos 7 días, las más recientes primero, con filtros por **Código** y **Destino** y una búsqueda libre por ruta, agente, IP y detección. **En vivo** muestra los bloqueos nuevos según los comunica la pasarela.
**API**

`GET …/egress/events` (donde `…` es `https://dash.openwaf.dev/v1/orgs/{org}`) devuelve una página de bloqueos, los más recientes primero, con los mismos filtros y la misma forma que los eventos de seguridad de una zona:

```sh
curl -sS "https://dash.openwaf.dev/v1/orgs/$ORG/egress/events?rule_name=injection_detected&host=openrouter&limit=50" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
```

Cada elemento es un evento de seguridad con `action` `block`, `attack_type` `egress`, `rule_name` el código, `host` el destino, `user_agent` el nombre del agente y `msg` los ids de las detecciones separados por comas. La ventana es `since`/`until` (RFC 3339; por defecto las últimas 24 horas, como mucho 31 días); otros filtros son `ip`, `path`, `status`, `q` y sus variantes `not_`, todos repetibles; `limit` va de 1 a 1000 (100 por defecto) y `next_cursor` da la página siguiente con `cursor`.

`GET …/egress/events/stream` sigue los bloqueos nuevos como Server-Sent Events y se reanuda desde `Last-Event-ID`. No está en los SDK.
**MCP**

`egress_events` lista las llamadas rechazadas de una ventana (`range` `1h`, `24h` por defecto, o `7d`), si quieres solo de un `code`, un `target` o un `agent`, hasta `limit` (50 por defecto, como mucho 500). Sirve con cualquier rol de toda la organización.


## Qué hacer con un bloqueo

- `egress_blocked`: permite el destino en los [destinos del agente](https://developers.openwaf.dev/es/egress/cloud/agents/#change-targets-and-protection), si el agente debe llamarlo.
- `injection_detected` y `data_leak_blocked`: lee los ids de las detecciones. Si el texto venía de un documento o de una página web que leyó el agente, la pasarela ha hecho su trabajo. Para un agente que tenga que procesar ese tipo de texto, desactiva esa protección solo en ese agente.
- `ssrf_blocked`: no se puede usar un destino propio cuyo nombre resuelve a una dirección privada; apúntalo a un nombre público.
- `body_too_large`: envía los ficheros grandes por URL o con la API de ficheros del proveedor, o divide la petición.
