Blog
Humano en el bucle: cómo el sistema de aprobación de Tactic Remote mantiene a los desarrolladores al mando
El sistema de aprobación de Tactic Remote intercepta las llamadas de herramientas de Claude Code a través de hooks, las envía a tu iPhone como notificaciones push y bloquea la ejecución hasta que apruebes o rechaces explícitamente cada acción.
Sigue las novedades de producto e ingeniería de esta categoría.
Ver categoríaLos agentes de codificación con IA son potentes, pero el poder sin supervisión es un riesgo. Tactic Remote se construyó en torno a una convicción: los desarrolladores deben aprobar cada acción relevante que un agente de IA realice en su entorno de desarrollo. Hoy publicamos un análisis detallado de cómo funciona el sistema de aprobación, su coste en latencia y hacia dónde lo estamos llevando.
Por qué importan las aprobaciones
Claude Code puede leer archivos, escribir archivos, ejecutar comandos de shell e interactuar con servicios externos. Cada una de estas acciones tiene consecuencias reales. Un prompt malinterpretado puede provocar archivos eliminados, operaciones git incorrectas o llamadas API no deseadas.
Anthropic incorporó en Claude Code un sistema de permisos que solicita aprobación al usuario en el terminal. Pero si estás lejos de tu Mac — de camino al trabajo, en una reunión o simplemente en otra habitación — esos prompts bloquean la ejecución indefinidamente. Tu agente queda inactivo, esperando.
Tactic Remote resuelve esto enviando cada prompt de aprobación a tu iPhone en tiempo real. Revisas la acción propuesta, ves el contexto completo y pulsas para aprobar o rechazar. El agente se reanuda de inmediato. Sin necesidad de cambiar al Mac.
Arquitectura: Hooks e interceptación
El sistema de aprobación se construye sobre el mecanismo de hooks de Claude Code. Cuando Claude Code está a punto de ejecutar una llamada de herramienta — escritura de archivo, comando de shell o cualquier otra acción que requiera permiso — el compañero Mac de Tactic Remote intercepta el evento antes de la ejecución.
Este es el flujo:
- Claude Code inicia una llamada de herramienta. Por ejemplo, quiere ejecutar
rm -rf node_modules && npm installen el directorio de tu proyecto. - Se activa el hook. El script hook de Tactic Remote captura el nombre de la herramienta, los argumentos y el contexto completo de la acción propuesta. Esto ocurre de forma síncrona — Claude Code está pausado, esperando que el hook devuelva una respuesta.
- El compañero Mac evalúa la acción. Comprueba la acción contra las reglas de aprobación automática configuradas. Si la acción coincide con una regla (por ejemplo, operaciones de archivo de solo lectura), devuelve la aprobación inmediatamente sin involucrar al iPhone.
- Si se requiere aprobación manual, se envía una notificación push. La notificación incluye el tipo de acción, un resumen de lo que Claude quiere hacer y contexto suficiente para tomar una decisión informada.
- La app de iPhone muestra la solicitud de aprobación. Ves el comando completo o el diff del archivo, el directorio de trabajo y el contexto de la conversación que llevó a esta acción.
- Apruebas o rechazas. Tu respuesta viaja de vuelta al compañero Mac a través de WebSocket, que devuelve el resultado al hook, desbloqueando Claude Code.
Toda la cadena es síncrona desde la perspectiva de Claude Code. Llamó a un hook y recibió una respuesta. No tiene conocimiento de que la aprobación fue encaminada a través de un teléfono en una red diferente.
Lo que ves en tu iPhone
La pantalla de aprobación está diseñada para decisiones rápidas e informadas. Cada solicitud muestra:
- Tipo de acción — escritura de archivo, comando de shell, llamada API u otra invocación de herramienta.
- Payload completo — el comando exacto a ejecutar o el contenido exacto a escribir. Los comandos de shell no se resumen ni se truncan. Los diffs de archivo muestran las líneas específicas que se modifican.
- Directorio de trabajo — dónde se ejecutará la acción, para que puedas evaluar el alcance.
- Extracto de la conversación — los últimos intercambios que llevaron a Claude a proponer esta acción, dándote el "por qué" detrás de la solicitud.
- Metadatos de sesión — qué sesión tmux, cuánto tiempo lleva ejecutándose y cuántas acciones se han aprobado en esta sesión.
Puedes aprobar, rechazar o rechazar con un mensaje que se envía de vuelta a Claude Code como retroalimentación.
Rendimiento: ¿Qué tan rápidas son las aprobaciones?
Monitorizamos los tiempos de ida y vuelta de aprobación en todos los modos de conexión. Estos números representan el tiempo desde que se activa el hook de Claude Code hasta que recibe la respuesta de aprobación y reanuda la ejecución.
| Escenario | Mediana | P95 |
|---|---|---|
| Red local, app en primer plano | 85ms + tiempo humano | 140ms + tiempo humano |
| Red local, app en segundo plano (notificación push) | 1.2s + tiempo humano | 2.8s + tiempo humano |
| Cloudflare Tunnel, app en primer plano | 280ms + tiempo humano | 450ms + tiempo humano |
| Cloudflare Tunnel, app en segundo plano | 1.8s + tiempo humano | 3.5s + tiempo humano |
El "tiempo humano" es el factor dominante. En la práctica, la mayoría de los desarrolladores responden a las solicitudes de aprobación en 3-8 segundos cuando supervisan activamente una sesión. La sobrecarga del sistema es despreciable comparada con el tiempo de decisión.
Es fundamental que el sistema de aprobación no añade ninguna sobrecarga para acciones que coinciden con reglas de aprobación automática. Estas omiten el iPhone por completo y se resuelven en menos de 5ms en el Mac.
Políticas de aprobación automática
No todas las acciones necesitan revisión manual. Leer un archivo es generalmente seguro. Ejecutar un linter tiene bajo riesgo. Tactic Remote admite políticas de aprobación automática configurables que permiten definir qué acciones omiten el iPhone y proceden automáticamente.
Las opciones de política actuales incluyen:
- Operaciones de archivo de solo lectura —
cat,read, listado de archivos y acciones similares que no modifican. - Prefijos de comando específicos — por ejemplo, aprobar automáticamente cualquier comando que comience con
npm testocargo check. - Ámbito de directorio — aprobar automáticamente todas las acciones dentro de un directorio específico (útil para directorios temporales o de prueba).
- Listas de herramientas permitidas — aprobar todas las acciones de una categoría específica de herramientas.
Las políticas se configuran en el compañero Mac y se sincronizan con la app de iPhone para su visibilidad. Puedes ver qué políticas están activas desde la vista de sesión y anularlas temporalmente (por ejemplo, cambiar a "aprobar todo manualmente" al trabajar en un despliegue en producción).
Rechazo con retroalimentación
Cuando rechazas una acción, puedes incluir opcionalmente un mensaje. Este mensaje se devuelve a Claude Code como si el usuario lo hubiera escrito en el terminal. Claude Code lo trata como orientación y ajusta su enfoque.
Por ejemplo, si Claude propone eliminar un archivo de configuración y rechazas con "No elimines ese archivo, contiene configuraciones locales que no están en git", Claude aceptará la retroalimentación y buscará un enfoque alternativo. Esto crea un ciclo de retroalimentación genuino entre el desarrollador y el agente, incluso cuando no están en la misma máquina.
Garantías de fiabilidad
El sistema de aprobación está diseñado para fallar de forma segura:
- Si la conexión WebSocket cae durante una aprobación, el hook agota el tiempo y devuelve una denegación. Claude Code recibe un resultado de "permiso denegado" y detiene la acción.
- Si el iPhone es inalcanzable (sin red, teléfono apagado), las aprobaciones pendientes se encolan en el compañero Mac durante un máximo de 10 minutos. Si el teléfono se reconecta dentro de esa ventana, las aprobaciones en cola se entregan. Tras el tiempo de espera, se deniegan automáticamente.
- Si el compañero Mac se bloquea, el script hook detecta el proceso ausente y devuelve una denegación. Claude Code no puede continuar sin una aprobación explícita.
El comportamiento predeterminado es siempre denegar. El sistema requiere una aprobación afirmativa para continuar. No existe ningún estado en el que una conexión caída o un proceso bloqueado resulte en la ejecución de una acción no revisada.
Próximos pasos
Estamos trabajando en varias mejoras para el sistema de aprobación:
Constructor de políticas granular. Una interfaz visual en la app de iPhone para construir políticas de aprobación automática sin editar archivos de configuración. Reglas de arrastrar y soltar con lógica booleana: "aprobar automáticamente comandos de shell que coincidan con git status O git diff pero NO git push".
Escalado de confianza por sesión. La capacidad de elevar temporalmente la confianza para una sesión específica. Por ejemplo, "aprobar automáticamente todas las escrituras de archivo en esta sesión durante los próximos 15 minutos" cuando estás supervisando activamente una tarea de refactorización grande y no quieres aprobar cada archivo individualmente.
Analítica de aprobaciones. Un panel que muestra patrones de aprobación a lo largo del tiempo — qué acciones apruebas más, cuáles rechazas más y sugerencias de políticas de aprobación automática basadas en tu historial.
Aprobaciones por lotes. Cuando Claude Code propone una secuencia de acciones relacionadas (por ejemplo, escribir 5 archivos como parte de una única funcionalidad), la opción de revisarlas como lote y aprobar o rechazar el conjunto completo.
El sistema de aprobación es el núcleo de lo que hace que Tactic Remote sea viable para trabajo de desarrollo real. Los agentes de IA autónomos son útiles, pero los agentes de IA autónomos con supervisión humana son dignos de confianza. Esa distinción importa, y tenemos la intención de seguir invirtiendo en ella.
Prueba Tactic Remote
Controla tus agentes de programación desde el móvil
Conéctate a Claude Code, Codex y otros agentes en tu Mac, Windows o Linux. Consulta el progreso y envía la siguiente instrucción desde el iPhone o iPad.