Análisis IA para seguridad y cumplimiento normativo
Quién pulsa el sí: dónde preguntan de verdad las herramientas de agentes de IA antes de actuar
Por ReviewRamble editors ·
Casi todas las herramientas de agentes dicen que te consultarán antes de hacer algo que no se puede deshacer. La pregunta que merece la pena hacerse es dónde vive esa comprobación. Puede estar en las instrucciones del agente, en el cliente que lo ejecuta, en una pasarela entre el agente y lo que controla, o en ninguna parte. Solo una de esas opciones puede detener a un agente que ha decidido no preguntar, e incluso esa tiene una puerta trasera.
Este artículo lee las reseñas que publicamos esta semana con una sola pregunta: quién pulsa el sí. No trata los modelos de filtrado ni los filtros contra la inyección de instrucciones, que cubre nuestra guía de guardarraíles para apps y agentes de IA, ni los entornos aislados para agentes de programación, que están en nuestra guía de cinco capas. Todos los datos proceden de las reseñas y de los documentos de los proyectos que citan; no hemos probado estas herramientas nosotros mismos.
Cuatro sitios donde puede vivir un sí
- En el prompt. Una línea en un skill o en un prompt de sistema que le dice al modelo que pregunte primero. El modelo la lee como un consejo.
- En el cliente. Claude Code, Codex, Cursor y los demás muestran una petición de aprobación antes de ejecutar una herramienta. Funciona hasta que alguien la desactiva, y la mayoría de los clientes lo permiten.
- En una pasarela. Un programa en el camino entre el agente y el teléfono, la cuenta o la casa sobre la que actúa, que retiene la acción hasta que una persona responde. Es el único tipo que el modelo no puede sortear con palabras.
- En ninguna parte. La herramienta hace lo que se le dice, y la única comprobación es la que el cliente tenga activada en ese momento.
El prompt: una petición, no un cerrojo
Agent Autoloop (3.8) es inusualmente franco al respecto. Ejecuta Claude Code o Codex sin supervisión a partir de tareas cron y webhooks, y cada regla puede llevar askFirst, una instrucción para que te consulte antes de los pasos arriesgados. Las propias notas de seguridad del proyecto dicen que askFirst es solo una petición escrita en el prompt: el agente puede ignorarla y el hub no puede impedirlo. Lo que de verdad limita una ejecución es el nivel de acceso, que se traduce en los modos de permisos del propio cliente, y el nivel full equivale a bypassPermissions en Claude Code y a danger-full-access en Codex, es decir, ninguna aprobación para nada.
Google Agent Skills (4.2) muestra el mismo hueco desde el otro lado. Su skill de gcloud dice que los cambios de IAM, la activación de APIs y los borrados necesitan tu aprobación explícita, y en el mismo archivo le dice al agente que añada --quiet a cada comando para que gcloud nunca se detenga en su propia confirmación. El skill cloud-run-basics activa APIs, concede un rol de IAM y despliega un servicio público con --allow-unauthenticated, cada paso con --quiet. Se ha quitado la única confirmación que imponía un programa, y la que queda es una frase que el modelo puede seguir o no.
El cliente: la confirmación que se puede apagar
En la mayoría de los servidores MCP, la petición de aprobación del cliente es toda la historia de seguridad. X MCP (3.8), el servidor oficial de X, no tiene nada en el lado de X que pregunte antes de publicar; sin su interruptor de solo lectura, la única comprobación es la del cliente, que la mayoría de los clientes permiten desactivar. Un post cuesta $0.015 y un post con enlace $0.200, así que un agente a su aire gasta dinero además de reputación.
Varias herramientas reseñadas esta semana están a un ajuste de que esa petición desaparezca. El nivel full de Autoloop es una. llama-modchip (3.6) puede arrancar Claude Code contra su modelo local, y su script añade --dangerously-skip-permissions solo cuando se define MODCHIP_CLAUDE_SKIP_PERMS=1, que es el valor por defecto correcto y uno fácil de cambiar. La petición del cliente es un control real, pero pertenece a quien edita la configuración, y una instalación sin supervisión suele montarse precisamente desactivándola.
Una petición del cliente tampoco demuestra quién respondió. Call Me (3.6) te llama al teléfono cuando un agente se detiene en una pregunta y devuelve tu respuesta hablada como transcripción. Un «sí, publícalo» llega como texto plano sin nada que demuestre que fuiste tú, el endpoint alojado no tiene más autenticación que tu número de 10 dígitos, y la reseña deja claro que una segunda confirmación tiene que venir de los ajustes de permisos del propio agente.
La pasarela: la que aguanta
Pinky (3.6) es la pasarela más clara que hemos leído. Cada toque que un agente hace en tu teléfono pasa por ella. Un toque en Pagar o Enviar vuelve al agente como approval_pending, no ocurre nada en el teléfono hasta que haces clic en Allow, y sin respuesta en 60 segundos cuenta como un no. Las apps de banca y de gestión de contraseñas quedan ocultas para los agentes, y los códigos de un solo uso les llegan como puntos. Hay dos límites importantes. De serie solo esperan por ti los pagos, las operaciones bursátiles y las transferencias, y los envíos, borrados, llamadas e instalaciones hay que activarlos en Settings. Y los botones arriesgados se detectan por sus etiquetas en 10 idiomas, así que una etiqueta rara puede colarse; por eso ofrece un modo que pregunta antes de cada paso.
Codex Security (4.1) pone el límite en un entorno aislado y no en una persona. La validación funciona en solo lectura y sin red; la aplicación de parches, el paso que escribe, comprueba que su entorno aislado arranca y se niega con SANDBOX_UNAVAILABLE si no lo hace. La opción --external-sandbox desactiva esa protección y deja el aislamiento en manos de tu contenedor, y los workers de Deep scan son de solo lectura pero, en palabras de OpenAI, no son un entorno aislado y sin conexión.
Stroq (3.8) se coloca en los hooks del agente y te pregunta por los comandos que repiten texto que el agente acaba de leer en una página, una issue o un archivo, y deniega curl | sh directamente. Su propio README dice que es un filtro, no un entorno aislado: compara texto, así que un comando que el modelo escribe desde cero no se puede rastrear hasta una fuente, y en Codex y Windsurf el hook puede negarse pero no preguntar.
En ninguna parte: herramientas que simplemente actúan
HomeMCPBridge (2.8) conecta un agente con HomeKit de Apple. Su herramienta control_device recibe el nombre de un dispositivo y una acción, y entre las acciones están abrir una cerradura y abrir la puerta del garaje. Según nuestra lectura del código no hay paso de confirmación, ni lista de permitidos, ni forma de dejar las cerraduras en solo lectura. iPhone MCP (3.2) maneja un iPhone real a través de la app de duplicación de Apple sin paso de confirmación, sin lista de apps permitidas y sin modo de solo lectura; su propio aviso legal menciona mensajes no deseados, datos borrados y compras.
El mejor diseño de este grupo es una herramienta que no existe. WhatsApp MCP (finereli) (3.8) no tiene herramienta de envío, a propósito, así que el peor fallo de un agente de mensajería no puede ocurrir. El read_only=true de X MCP hace lo mismo en el servidor: las herramientas que publican, envían mensajes o cambian algo desaparecen de la lista, y el servidor rechaza esas llamadas aunque el token tenga permisos de escritura. Una herramienta que no está no necesita que nadie pulse nada.
Toda pasarela tiene una puerta trasera
Una pasarela solo aguanta si es la única entrada. Las preguntas frecuentes de Pinky lo dicen sin rodeos: un agente que puede ejecutar comandos como tú puede llegar a un teléfono Android mediante adb y saltarse todas las reglas. Su consejo es aislar a esos agentes lejos del teléfono, o conectar el teléfono a otro ordenador y conectarse allí a Pinky por HTTP. Eso describe a Claude Code y Codex en su configuración normal, así que para la mayoría de los lectores la pasarela protege el teléfono solo después de ese paso adicional.
La misma lógica funciona al revés. Un proxy en el camino ve todo lo que pasa. billion-context (3.4) se sitúa entre un agente de programación y la API de su modelo para plegar el contexto antiguo, lo que significa que cada prompt y cada clave de API pasan por él, sin autenticación, y por defecto consulta npm cada 3 minutos en busca de una versión nueva de sí mismo. Antes de confiar en que una pasarela retenga acciones, pregúntate qué puede leer y quién puede cambiar su código.
Dónde vive el sí, herramienta por herramienta
| Herramienta | Lo que puede hacer que no se deshace | Dónde vive la confirmación | Cómo endurecerla |
|---|---|---|---|
| Pinky | Pagar, enviar, borrar en tu teléfono | Pasarela; por defecto solo pagos | Activa envíos y borrados; aleja de adb a los agentes con shell |
| Agent Autoloop | Todo lo que puede hacer la CLI del agente | Modo de permisos del cliente; askFirst es un prompt | Quédate en edit; da full solo donde aceptes que funcione sin supervisión |
| Codex Security | Escribe parches | Entorno aislado, salvo con --external-sandbox | Mantén el entorno aislado integrado; lee cada parche |
| Google Agent Skills | Desplegar, conceder roles de IAM, activar APIs | Solo el prompt; --quiet quita la de gcloud | Roles de proyecto limitados, un presupuesto de facturación, aprobaciones del cliente activadas |
| X MCP | Publicar posts y Articles | Solo el cliente, o read_only=true | Empieza en solo lectura; fija un tope de gasto |
| HomeMCPBridge | Abrir cerraduras y puertas de garaje | En ninguna parte | No lo pongas en agentes que funcionan solos |
| Call Me | Transmite tus aprobaciones habladas | Ajustes de permisos del agente | Trata un sí de voz como no verificado |
| Stroq | Pregunta por comandos o los deniega | Hooks del agente, comparación de texto | Combínalo con un contenedor o una cuenta aparte |
Reglas que puedes aplicar esta semana
- Localiza el sí de cada acción irreversible. Para cada pago, envío, borrado, despliegue o acción física, apunta qué programa la retiene. Si la respuesta es «el prompt dice que pregunte», cuéntalo como ninguna confirmación.
- Mejor una herramienta ausente que una confirmada. Un interruptor de solo lectura o un servidor sin herramientas de escritura vale más que cualquier prompt. Empieza X MCP con read_only=true, y elige servidores que dejen fuera enviar y borrar cuando el trabajo es leer.
- Activa lo que la pasarela deja apagado. Los valores por defecto son estrechos. Pinky solo pregunta antes de los pagos hasta que añades envíos, borrados, llamadas e instalaciones.
- Cierra la puerta trasera antes de fiarte de la delantera. Un agente con shell llega a todo lo que alcanza tu cuenta de usuario, adb incluido. Ejecútalo en un entorno aislado o como otro usuario que no vea el dispositivo ni las credenciales que guarda la pasarela.
- Busca los interruptores en tus configuraciones. bypassPermissions, danger-full-access, --dangerously-skip-permissions, --quiet y --external-sandbox eliminan cada uno una confirmación. Sabe dónde está definido cada uno y por qué.
- Respalda el prompt con límites que un modelo no puede discutir. Roles de nube estrechos, un presupuesto de facturación y un tope de gasto en APIs de pago siguen funcionando cuando el agente se salta un paso.
- Trata un sí a distancia como no verificado. Una llamada o una respuesta de chat no prueba quién respondió. Deja los despliegues y los pagos detrás de una aprobación ligada a tu propio inicio de sesión.
La pega: las pasarelas que mejor aguantan son las más jóvenes. Pinky tiene una semana, Autoloop diez días y Stroq unas diez semanas, y sus notas de seguridad proceden de los mantenedores, no de una revisión externa. Los controles maduros, las peticiones de aprobación del cliente y los permisos de la nube, son los que la gente desactiva para que un agente funcione sin supervisión. Ninguna herramienta de esta lista hace que sea seguro dejar a un agente a solas con tu dinero o con la puerta de tu casa.
Nuestra opinión: hazle a cada configuración de agentes la pregunta que le harías a un empleado nuevo con tarjeta de empresa: quién da el visto bueno, y si puede darlo sin ti. Si la respuesta honesta es el propio empleado, no hay visto bueno. Pon el sí en un programa que el agente no pueda editar, quita las herramientas que el trabajo no necesita y guarda tu atención para los pocos clics que importan.