shell.exec, edita archivos, obtiene
URLs y carga skills de la comunidad — cualquiera de las cuales puede hacer
rm -rf a un volumen, leer un .env o exfiltrar hacia un host atacante.
Esta receta blinda esa superficie con el Firewall:
deniega shell destructivo, valida los argumentos de las llamadas que sí
permites, cerca el egress y retiene las operaciones genuinamente arriesgadas
para un humano. Nada de ello toca el código de tu agente — la política vive
en el gateway y se aplica en la siguiente llamada.
Todo lo de abajo se configura en la consola (Firewall → Posture /
Policies). Esas rutas de gestión usan tu sesión de consola, no una clave de
relay. Solo las llamadas
/v1/* que hace tu agente llevan una clave
sk-orca-…. Las ediciones de política requieren el rol Developer.1. Empieza vigilando, no bloqueando — línea base del agente de codificación seguro
No autores reglas a ciegas. Dale al agente su clavesk-orca-…, luego abre
Firewall → Posture y aplica el nivel de autonomía
balanced. En una transacción esto audita cada llamada a herramienta,
marca PII y deniega shell destructivo — así que la peor acción ya está
cercada mientras aprendes el resto del comportamiento del agente desde
tráfico real.
Déjalo correr, luego lee Firewall → Discovered tools: cada herramienta
que el espacio de trabajo ha visto, marcada covered (una regla aplica) o
gap (ninguna lo hace). Esa lista es el borrador de tu lista de
permitidos. Cuando el feed se vea bien, pasa a tight (default-deny) o
autora la política dirigida de abajo.
2. Deniega shell destructivo — el suelo no negociable
La única regla más importante para un agente de codificación es nada de shell destructivo. Los niveles de autonomíabalanced y tight ya incluyen
esto como el preset Block destructive shell, que materializa reglas
deny reales y editables que cubren tanto los nombres de herramienta
directos del espacio de trabajo (shell.*, bash, cmd.*, powershell.*,
exec.*) como las formas con espacio de nombres MCP que un servidor
registrado expone (*.shell.*, *.cmd.*, …).
Si prefieres acotarlo más estrechamente que “denegar todo shell”, autora una
regla que solo deniegue los comandos destructivos y audite el resto. Una
regla coincide sobre un glob de nombre de herramienta más un predicado de
argumentos opcional (JSONPath contra los argumentos de la llamada):
Deniega rm -rf pero permite otras llamadas shell
Deniega rm -rf pero permite otras llamadas shell
En Firewall → Policies, añade una regla por encima de tu valor por
defecto:
- Glob de herramienta:
shell.exec - Args match (cláusula JSONPath):
- Veredicto:
deny
eq, contains,
regex, in, cidr_match, gt, lt. Una llamada cuyo $.command
coincide con el regex se bloquea; todo lo demás cae a la siguiente regla.Cómo se ve el bloqueo
Cómo se ve el bloqueo
Una llamada denegada en la superficie inbound devuelve HTTP 400
con el código de error
firewall_blocked y un mensaje que nombra la
herramienta y la razón. Una llamada despachada a través del gateway MCP
vuelve como un error de herramienta (firewall deny: …) para que el
modelo pueda reaccionar en vez de fallar. Los bloqueos inbound se
disparan antes de la llamada al modelo upstream, así que no cuestan
tokens de modelo.3. Valida los argumentos en las herramientas que conservas
Permitir una herramienta no es lo mismo que permitir cada argumento a ella. El mismo predicado JSONPath que acota un deny te permite restringir la forma de una llamada permitida — así quedb.query no puede llevar un
DROP, y file.write no puede escapar de un directorio.
Bloquea un DROP de SQL
Glob
db.query, cláusula
{"path":"$.sql","op":"regex","value":"(?i)\\bdrop\\b"}, veredicto
deny.Redacta un secreto en argumentos
El veredicto
sanitize redacta las subcadenas coincidentes de los
argumentos de la llamada a herramienta antes de que la llamada se
reenvíe. Nunca toca lo que una herramienta devuelve; en la superficie
inbound (sin argumentos en tiempo de llamada aún) escala a un bloqueo.4. Controla el egress — cerca a dónde puede alcanzar el agente
Un agente de codificación que puede obtener URLs puede ser dirigido a SSRF (alcanzando cloud-metadata o un host interno10.x) o usado para exfiltrar.
El nivel de autonomía tight incluye un preset SSRF que deniega los
nombres de herramienta con forma de fetch (http_fetch, web_search,
fetch_url, request y sus formas <server>.*) por completo.
Para control a nivel de destino, autora una regla egress. Las reglas de
egress acotan por host o CIDR con entradas allow / deny, evaluadas en la
superficie egress:
Ningún preset incluye reglas de egress basadas en CIDR — el preset SSRF
coincide con nombres de herramienta con forma de fetch. La denylist de
host/CIDR de arriba es una que autoras tú mismo. Ver
Detener la exfiltración para el
patrón completo.
5. Retén operaciones arriesgadas para un humano (HITL)
Algunas operaciones no deberían auto-permitirse ni auto-denegarse — un despliegue, ungit push, una migración destructiva. Para esas, usa el
veredicto pending_approval. La llamada se retiene, el agente obtiene una
respuesta “retenida” con un id de aprobación, y un revisor la resuelve fuera
de banda:
- Autora una regla (p. ej. glob
deploy.*, veredictopending_approval). - La llamada retenida devuelve HTTP 400
firewall_approval_pendingcon un id de aprobación. - Un revisor la aprueba desde la consola (Developer+) o vía un callback de webhook firmado con HMAC.
- El agente hace polling de la aprobación, luego reenvía la llamada original
con una cabecera
X-OrcaRouter-Firewall-Approvalde un solo uso — y el gateway la deja pasar esa única vez.
6. Gobierna las skills y servidores MCP que carga
Los agentes de codificación incorporan capacidades en tiempo de ejecución — skills de la comunidad, servidores MCP propios. El Firewall gobierna ambos en el gateway:- Las Skills se escanean en una banda de riesgo con un modo de aplicación
(
allow/quarantine/block). Una skill auto-detectada se pone en cuarentena — retenida para aprobación — hasta que un revisor la despeja. Ver Skills. - Los servidores MCP que registras despachan cada
tools/calla través del gateway, que evalúa cada uno en la superficiemcpantes del despacho. Las credenciales se almacenan cifradas; una sonda de salud reportaok/degraded/down. Ver Servidores MCP y Endurecer un agente MCP.
7. Verifica y observa
Antes de depender de una política, ejecútala en seco. La pestaña Test evalúa una llamada a herramienta de muestra contra la política actual y muestra el veredicto, la regla coincidente y la razón — nada se despacha, nada se persiste. Una vez en vivo, Firewall → Events / Runs es el registro de cada evaluación, filtrable por veredicto, superficie, herramienta y ejecución, y el feed de anomalías marca picos de tasa/coste contra la línea base aprendida del espacio de trabajo,retry_loop y rutas de
herramienta nunca antes vistas.
Resumen
Referencia de Firewall
El plano de política completo — superficies, veredictos, resolución,
autonomía.
Reglas del firewall
El lenguaje de coincidencia: globs, cláusulas de argumentos, egress,
secuencias.
Llamadas a herramientas peligrosas
La amenaza contra la que esta receta defiende.
Agencia excesiva
Por qué los agentes con permisos excesivos son el riesgo central del
agente.
Receta de agente autónomo
Blinda un bucle de agente totalmente autónomo de extremo a extremo.
Detener la exfiltración
Los patrones de egress y trifecta letal en profundidad.
