8 min de lectura

Cómo actualizar una puerta de enlace de acciones local sin interrumpir el trabajo de los agentes

Actualizar de forma segura una puerta de enlace de acciones local requiere límites de trabajo, control de sesiones, comprobaciones de solicitudes en curso, pruebas de autorización nuevas y revisión de auditoría.

Cómo actualizar una puerta de enlace de acciones local sin interrumpir el trabajo de los agentes

Una actualización de la puerta de enlace de acciones es un cambio del plano de control, no una tarea rutinaria de mantenimiento del ordenador. Si un agente está a mitad de una modificación en un repositorio, una escritura HTTP o una operación SSH, la actualización puede dividir un trabajo en dos partes inciertas. El enfoque seguro consiste en elegir un límite de trabajo, vaciar o detener deliberadamente las acciones activas y demostrar que la nueva versión puede autorizar, ejecutar y registrar el trabajo antes de permitir que la automatización continúe.

El error habitual es tratar a todos los agentes activos como desechables. Algunos lo son. Otros mantienen un plan cuidadosamente elaborado, una shell remota abierta o una solicitud cuyo resultado el solicitante todavía no ha recibido. Necesitas saber con qué tipo de agente estás trabajando antes de tocar la aplicación.

Programa las actualizaciones en torno a un límite de trabajo

Una buena ventana de mantenimiento comienza cuando el agente ha llegado a un estado que una persona puede entender y retomar. El límite no tiene que significar que todas las tareas hayan terminado. Significa que la siguiente persona, proceso o agente puede saber qué ocurrió, qué queda pendiente y qué no debe repetirse.

Pide primero al agente que deje de iniciar nuevas acciones externas. Después, haz que escriba una breve entrega en el repositorio, el ticket o las notas del operador. La entrega debe indicar la rama y el commit actuales, los archivos modificados pero aún no confirmados, las pruebas ya ejecutadas, los sistemas remotos contactados y la siguiente acción prevista. Esto resulta más útil que una transcripción que obligue a alguien a reconstruir la intención a partir de cientos de llamadas a herramientas.

Una ventana de actualización razonable tiene cuatro fases:

  1. Anunciar una congelación de nuevas ejecuciones de agentes y nuevas llamadas con credenciales.
  2. Dejar que el trabajo acotado termine o detenerlo en un límite registrado.
  3. Actualizar y realizar un pequeño conjunto de comprobaciones con un proceso de agente nuevo.
  4. Levantar la congelación solo después de conciliar la actividad de la ventana.

No esperes a una fecha prevista si la puerta de enlace tiene un fallo de seguridad que afecta a las credenciales o la autorización. En ese caso, detén o revoca primero el trabajo expuesto, registra la interrupción y actualiza siguiendo la disciplina de un incidente. Pero no inventes urgencia porque exista una versión nueva. Las actualizaciones informales y frecuentes enseñan a los equipos a saltarse las comprobaciones que detectan supuestos incorrectos.

Para el mantenimiento rutinario, prefiere el momento posterior a la confirmación del código por parte del agente y anterior al inicio de un despliegue, una migración de datos, cambios de cuentas o tareas de limpieza remota. Una modificación de código local normalmente puede reanudarse. Un cambio de permisos a medias, a menudo no.

También necesitas una persona responsable de la ventana. Esa persona decide cuándo congelar el trabajo, evalúa los resultados ambiguos y declara que la puerta de enlace está lista. Un canal de chat lleno de personas que suponen que otra persona supervisó la actualización no es un modelo operativo.

Trata la autorización del proceso y la finalización de la acción como hechos distintos

Un proceso de agente aprobado y una acción externa completada responden a preguntas diferentes. La gente los mezcla porque suelen aparecer casi al mismo tiempo, pero la diferencia determina cómo recuperarse de una interrupción.

La autorización del proceso pregunta: «¿Puede este programa concreto que está en ejecución pedirle a la puerta de enlace que actúe?». La finalización de la acción pregunta: «¿El sistema remoto aceptó y terminó esta solicitud concreta?». Reiniciar una aplicación puede cambiar la primera respuesta. Un fallo de red puede ocultar la segunda. Ninguna de las dos respuestas implica la otra.

En las llamadas HTTP, deja constancia de si una operación se puede repetir de forma segura. Una solicitud de lectura normalmente sí. Crear un usuario, enviar un pago, publicar una versión o rotar una credencial puede no serlo. Si el agente agota el tiempo de espera después de enviar una solicitud de este tipo, debe consultar el sistema de destino para comprobar el objeto o evento resultante antes de reintentarlo. Reintentar porque la llamada de la herramienta no muestra un resultado visible es la forma en que aparecen trabajos duplicados.

SSH tiene sus propios modos de fallo. Un terminal puede contener un comando en primer plano, una tarea en segundo plano, un búfer de editor, una transacción de base de datos o una herramienta de despliegue que sigue ejecutándose después de que el cliente se desconecta. Antes del mantenimiento, pide al agente que informe del host remoto, el directorio de trabajo, el comando actual y los identificadores de cualquier tarea. Si ha iniciado una operación larga, decide si esperarás a que termine, si la finalizarás mediante un comando remoto explícito o si la transferirás a un proceso supervisado que sobreviva a la shell.

No uses el reinicio de la puerta de enlace como una forma vaga de «borrarlo todo». Eso crea incertidumbre y no deja ningún registro de la detención prevista. Revoca o termina la ejecución concreta del agente cuando quieras detenerla y haz que el agente indique lo último que observó.

Una nota práctica de entrega puede ser tan sencilla como esta:

Agent run: release-fix
Repository state: commit 4f2c... created, working tree clean
Remote work: SSH command started on build host, job ID 8127
HTTP writes: staging deployment request accepted, status still pending
Safe next action: query deployment status; do not submit another deployment

Este registro ofrece al operador una forma de comprobar el estado del sistema después de la actualización. Sin él, el equipo suele reiniciar el agente y confundir una explicación nueva con continuidad.

Congela el trabajo nuevo antes de vaciar el antiguo

Una congelación de mantenimiento solo funciona cuando cierra el punto de entrada para el trabajo nuevo. Decir a los desarrolladores que no inicien otro agente es educado, pero poco fiable, sobre todo cuando las integraciones del editor, los terminales y los scripts programados pueden iniciar procesos por separado.

Registra todos los procesos de agentes activos antes de la congelación. Captura suficiente información para distinguirlos: quién los inició, qué repositorio o tarea poseen, qué acceso externo necesitan y si tienen trabajo activo. Si la puerta de enlace ofrece una vista de sesiones, úsala como registro principal. Complétala con la persona responsable de la tarea, porque un registro de procesos no puede decirte si todavía se desea un cambio sin terminar.

Después, separa el trabajo activo en tres grupos:

  • El trabajo que no tiene efectos externos puede detenerse de inmediato.
  • Las acciones breves y observables pueden terminar bajo supervisión.
  • Las operaciones largas o irreversibles necesitan una decisión explícita de la persona responsable de la tarea.

No vacíes el trabajo indefinidamente. Establece un plazo que se ajuste a la operación. Una solicitud que debería terminar en segundos pero lleva mucho más tiempo ya se ha convertido en una investigación, no en una razón para retrasar el mantenimiento sin límite. Captura sus identificadores y determina su estado en el servicio remoto.

Un agente que continúa produciendo modificaciones locales durante la congelación también puede crear confusión, aunque no pueda llamar a herramientas externas. Pídele que se detenga correctamente después de escribir su entrega. Si necesitas conservar el contexto, guarda las notas de la tarea y el estado del repositorio en lugar de depender de que el proceso siga vivo sin interrupciones.

Sallyport registra las ejecuciones de agentes en su diario de sesiones y las llamadas individuales en su diario de actividad. Usa esos registros para identificar el trabajo que permitiste terminar de forma deliberada, en lugar de inferirlo después a partir del desplazamiento de un terminal.

Trata los resultados de red ambiguos como un incidente

Una solicitud que pierde su respuesta durante una actualización tiene un resultado desconocido hasta que el sistema remoto indique lo contrario. Considerarla fallida porque el cliente local ha visto un error es un atajo costoso.

Supón que un agente envía una solicitud de API para crear un despliegue y la puerta de enlace local se cierra o se reinicia antes de que llegue la respuesta. Siguen siendo posibles cuatro resultados: la solicitud nunca salió del equipo, el servicio la rechazó, el servicio la aceptó pero todavía no ha terminado o el servicio la completó. El mensaje de error local no distingue esos resultados de forma fiable.

Resuelve la ambigüedad en este orden:

  1. Encuentra el identificador de solicitud, el nombre del despliegue, la referencia del commit u otro valor de correlación que haya usado el agente.
  2. Consulta el servicio remoto para ese valor mediante una acción nueva y supervisada.
  3. Compara el resultado remoto con el cambio previsto y el registro de auditoría.
  4. Reintenta solo cuando el sistema remoto indique que no ocurrió ninguna operación equivalente.

Por eso importa la idempotencia. Cuando una API admite un token de idempotencia o un identificador de solicitud proporcionado por el cliente, haz que el agente use uno para las operaciones de escritura. El mismo token convierte un reintento incierto en una operación que se puede consultar. Si una API no lo admite, utiliza un nombre de objeto o una referencia de cambio que permita a una persona determinar si el primer intento tuvo efecto.

La especificación HTTP Semantics, RFC 9110, define los métodos idempotentes según el efecto previsto de las solicitudes repetidas, no según si el servidor devuelve siempre la misma respuesta. Esto resulta útil, pero no hace que todos los PUT o DELETE sean inofensivos en tu entorno. Una solicitud repetida todavía puede activar notificaciones, competir con otro escritor o eliminar un recurso que otro actor haya vuelto a crear. Trata la clasificación del RFC como un punto de partida y ten en cuenta el comportamiento del servicio de destino.

En SSH, recopila pruebas del host remoto. Comprueba las tablas de procesos, los registros del servicio, el estado del despliegue, el estado de las transacciones y los archivos creados por el comando. No pidas al agente que vuelva a ejecutar un comando de shell solo porque su sesión local desapareció. Los comandos de shell rara vez tienen las protecciones contra repeticiones que ofrecen las API maduras.

Verifica la versión antes de ponerla en la ruta de acciones

Aprueba el proceso nuevo
Sallyport muestra la autoridad de firma del código de un proceso de agente nuevo antes de aprobar su sesión.

Un paquete de aplicación firmado te indica quién firmó el código y si el paquete cambió después de la firma. No te dice si la versión conserva el formato de la bóveda, el comportamiento de las sesiones, la compatibilidad de los asistentes o el flujo de trabajo del operador.

Apple Platform Security explica que la firma de código permite a macOS identificar el código firmado y detectar modificaciones. Es una propiedad necesaria para una aplicación que gestiona credenciales. No sustituye a las notas de la versión, una ejecución de pruebas ni un plan de recuperación. Los equipos suelen atribuir demasiada importancia a la firma porque la comprobación criptográfica es clara y visible, mientras que la compatibilidad operativa no lo es.

Antes de la ventana, lee las notas de la versión y busca cambios en estas áreas:

  • almacenamiento de la bóveda o comportamiento de las migraciones
  • autorización y gestión de sesiones
  • asistentes de comandos incluidos y detalles de conexión de los agentes
  • almacenamiento, exportación o verificación de auditorías
  • requisitos de versión y permisos de macOS

Registra la versión en ejecución y la versión de destino en la nota de mantenimiento. Decide también qué te haría detenerte: no poder desbloquear la bóveda, no poder establecer una sesión de agente nueva y aprobada, una denegación de acción inesperada o un fallo de verificación de auditoría son motivos válidos para parar.

Un plan de reversión necesita algo más que una copia antigua de la aplicación. Necesita una regla que indique cuándo usarla y un plan para el estado que la nueva versión pueda haber cambiado. Si una versión migra datos locales, volver atrás sin las indicaciones del proveedor puede convertir un problema recuperable en una pérdida de datos. Prueba la ruta exacta de actualización en un Mac de repuesto o una instalación no crítica cuando la versión cambie el almacenamiento o la autorización. Una instalación limpia no te dice casi nada sobre el estado que realmente administras.

Evita probar con la credencial que pueda causar el mayor impacto. Empieza con una cuenta limitada a una lectura inofensiva o a un punto de conexión desechable. Estás comprobando el recorrido por la aplicación, la autorización, la inyección de credenciales y la gestión del resultado. No necesitas un despliegue de producción para demostrar que se ha iniciado una aplicación de la barra de menús.

Realiza las comprobaciones posteriores con un proceso de agente nuevo

Una prueba posterior a la actualización debe demostrar que funcionan las rutas que utilizarán los agentes activos, no limitarse a demostrar que se abre la interfaz. Usa un proceso de agente recién iniciado para probar el límite de autorización que esperas después del mantenimiento.

Comprueba primero la barrera de la bóveda. Bloquéala y desbloquéala mediante el flujo local habitual. Mientras esté bloqueada, intenta realizar la acción de prueba segura y confirma que la puerta de enlace la deniega. Después, desbloquéala y confirma que un proceso nuevo recibe el aviso de autorización o el flujo de aprobación esperado. Esto detecta el supuesto incorrecto de que una aprobación antigua ha sobrevivido o que la nueva versión ya no puede identificar el proceso solicitante.

A continuación, ejecuta una solicitud HTTP segura y una solicitud SSH segura si tu equipo utiliza ambos canales. Una prueba HTTP útil solicita un punto de conexión de solo lectura que devuelva un resultado reconocible. Una prueba SSH útil ejecuta un comando inofensivo en un host no crítico, como mostrar el directorio actual o un marcador fijo. Registra la hora, el destino y el resultado para poder encontrar esas llamadas en el historial de actividad.

Sallyport guarda las credenciales en su bóveda cifrada y realiza directamente las acciones HTTP y SSH, de modo que el agente recibe el resultado y no el secreto. Este diseño reduce lo que la prueba de actualización necesita exponer, pero no elimina la necesidad de probar cada canal del que dependas.

Por último, prueba el registro de auditoría. Ejecuta el comando de verificación sin conexión documentado:

sp audit verify

El formato esperado de la salida debe indicar que la verificación de la cadena de auditoría se ha realizado correctamente. No dependas de recordar una frase concreta ni de extraerla con un script frágil, a menos que la documentación del comando prometa un formato estable y legible por máquinas. El resultado útil es sencillo: el comando termina correctamente, informa de que la verificación se ha realizado con éxito y puedes localizar las llamadas de prueba deliberadas en los diarios.

Si la verificación falla, detente. No lo dejes pasar porque la aplicación todavía pueda realizar una solicitud. Una cadena de auditoría que no se puede verificar después del mantenimiento elimina las pruebas justo cuando necesitas entender el cambio.

Concilia todas las acciones que atravesaron la ventana de mantenimiento

Mantén la puerta de enlace en tu Mac
Sallyport funciona como una aplicación de Mac firmada en la barra de menús, con el núcleo de la bóveda dentro del proceso.

La actualización no termina hasta que das cuenta de las acciones que comenzaron antes de la congelación, continuaron durante ella o aparecieron después de que se iniciara la nueva versión. Esta conciliación es donde los operadores cuidadosos encuentran el reintento que duplicó una llamada de API o la tarea SSH que siguió ejecutándose sin que nadie la viera.

Haz una tabla breve en el registro de mantenimiento. Para cada agente activo al principio, anota la última acción prevista, el resultado observado, la fuente que lo confirmó y si una persona autorizó algún reintento. La fuente puede ser un registro de actividad, el estado de un servicio remoto, un registro del host o un commit del repositorio. Si dos fuentes discrepan, trata el sistema remoto como la autoridad sobre el estado externo e investiga la diferencia.

Presta especial atención a las acciones que responden lentamente. Una puerta de enlace puede registrar que envió una solicitud mientras el sistema de destino sigue pendiente. No hay contradicción. El registro te indica hasta dónde llegó la acción, no si un trabajo remoto asíncrono ha terminado. Sigue supervisándolo mediante el mecanismo de estado habitual del destino hasta que alcance un estado final o la persona responsable de la tarea se haga cargo.

Los registros de sesiones te ayudan a responder quién tenía autorización durante la ventana. Los registros de actividad te ayudan a responder qué llamadas ocurrieron. No sustituyas uno por otro. Un proceso aprobado puede no hacer ninguna llamada, y una llamada completada puede haber comenzado antes de que se abriera el registro de mantenimiento.

Esta conciliación también debe revelar a los solicitantes inesperados. Un proceso nuevo que aparezca durante la congelación significa que la congelación estaba incompleta, aunque su solicitud no haya causado daños. Encuentra la ruta de inicio antes de la próxima ventana. Puede ser un terminal de desarrollador, una extensión del editor o un script local desatendido que nadie consideraba parte del flujo de trabajo del agente.

Conserva los límites de aprobación después de la actualización

Convierte las actualizaciones en un límite estricto
Bloquea la bóveda de Sallyport para denegar todas las acciones mientras vacías el trabajo de los agentes.

Las actualizaciones son un momento tentador para debilitar los controles porque los operadores quieren que las pruebas pasen rápido. Evita convertir una aprobación amplia en la solución permanente para un flujo de trabajo ruidoso.

La autorización por sesión encaja con el trabajo habitual de los agentes cuando un proceso conocido necesita realizar varias llamadas relacionadas. Permite al operador identificar y aprobar esa ejecución y después revisar su actividad como una unidad. La confirmación por llamada encaja con las credenciales cuyo uso merece una decisión humana intencionada, como las acciones que modifican el acceso a producción, eliminan datos o inician un evento externo irreversible.

El error consiste en configurar el ajuste más estricto como castigo después de un incidente y dejarlo activo para lecturas rutinarias de bajo riesgo hasta que la gente apruebe los avisos sin mirar. Las aprobaciones repetidas enseñan a hacer clic en la pantalla que debería hacerles detenerse. Usa la confirmación por llamada para las credenciales donde el coste de una acción incorrecta sea alto. Mantén el resto bajo revisión por sesión y limita el alcance de las credenciales siempre que sea posible.

El bloqueo de la bóveda debe seguir siendo una detención absoluta. Durante el mantenimiento planificado, bloquéala cuando necesites un límite firme que deniegue todas las acciones. Cuando la desbloquees para verificar algo, hazlo con el proceso de prueba deliberado ya elegido. Así, un evento de mantenimiento amplio se convierte en un pequeño número de acciones observadas.

No confundas una puerta de enlace de acciones con un motor de políticas general. Una puerta de enlace puede mantener las credenciales alejadas del agente y situar a una persona en los límites de autorización. No puede inferir el significado empresarial de cada llamada de API, reparar un plan de despliegue incorrecto ni saber que un punto de conexión aparentemente inofensivo activa un flujo de trabajo posterior costoso. La persona responsable de la tarea sigue siendo quien toma esas decisiones.

Escribe el procedimiento para la interrupción que realmente tendrás

Un procedimiento útil no dice «actualizar la puerta de enlace y probar». Indica las pruebas que debes capturar, las decisiones que debes tomar bajo incertidumbre y el punto exacto en el que puede reanudarse el trabajo autónomo.

Mantén el procedimiento lo bastante corto para que alguien lo use bajo presión. El mío incluye una persona responsable de la congelación, una lista de ejecuciones activas, una regla explícita para las sesiones SSH activas y las escrituras HTTP ambiguas, la versión de destino, una decisión de reversión, pruebas con un proceso nuevo, verificación de auditoría y conciliación. También tiene un espacio para registrar la pregunta incómoda que siempre aparece: «¿Terminó esa acción antes de que la interrumpiéramos?»

Si no puedes responder a esa pregunta a partir de la entrega del agente, el registro de actividad y el sistema de destino, no reinicies el agente con permiso para repetir la acción. Pausa la tarea y resuelve primero el estado externo. Esta disciplina tarda unos minutos más y resulta mucho más rápida que desenredar dos despliegues, dos cambios de acceso o un comando remoto que tanto el agente como el operador creían haber detenido.

La primera mejora que debes hacer es sencilla: exige que todo agente con acceso a sistemas externos deje una entrega que permita reanudar el trabajo antes del mantenimiento. Cuando esto se vuelve habitual, los tiempos de publicación, la autorización, las pruebas de actualización y la recuperación dejan de depender de la memoria de alguien sobre una ventana de terminal.

FAQ

¿Puedo actualizar una puerta de enlace de acciones mientras se está ejecutando un agente de IA?

No lo actualices sin más. Primero determina si el trabajo activo puede pausarse de forma segura, si mantiene abierta una sesión SSH o una solicitud HTTP larga y si el agente puede reanudarlo a partir del estado guardado del repositorio. Una pausa de cinco minutos cuesta poco comparada con perder el único registro de un cambio remoto sin terminar.

¿Sobrevivirá una sesión de agente a una actualización de la puerta de enlace?

Una autorización existente no debe servir de excusa para dejar un proceso funcionando indefinidamente. Antes de empezar, decide si la actualización conservará las ejecuciones activas y comprueba ese comportamiento en una prueba controlada. Si no puedes demostrarlo, trata la actualización como un límite de sesión y exige que el agente vuelva a conectarse después.

¿Qué debo hacer con los comandos SSH activos antes de actualizar?

SSH requiere un tratamiento específico porque una shell interactiva puede contener comandos sin guardar, un cliente de base de datos o un proceso de despliegue. Detén el nuevo trabajo SSH de los agentes, pide al agente que cierre la shell correctamente y comprueba si hay tareas que continúan después de la desconexión. Nunca supongas que un terminal desconectado significa que el comando remoto se detuvo.

¿Cómo gestiono las solicitudes HTTP en curso durante una actualización?

Deja que las llamadas HTTP cortas y acotadas terminen cuando sea posible. Para las solicitudes que cambian infraestructura, pagos, accesos o datos de producción, confirma el resultado en el sistema de destino antes de permitir un reintento. Un tiempo de espera solo indica que el cliente no tiene una respuesta, no que el destino no haya hecho nada.

¿Cómo puedo comprobar que un paquete de actualización es fiable?

Usa el canal de publicación firmado por el proveedor de la aplicación y lee las notas de la versión para conocer cambios de formato, problemas conocidos y cuestiones de compatibilidad. Una aplicación firmada identifica al editor y detecta modificaciones, pero no demuestra que la nueva versión encaje en tu flujo de trabajo activo. Prueba la ruta exacta de actualización en una máquina no crítica cuando la versión cambie el comportamiento de la bóveda, las sesiones o los asistentes.

¿Necesito un plan de reversión para actualizar una puerta de enlace local?

Conserva el instalador o la copia de la aplicación que sabes que funciona solo si el sistema operativo y las indicaciones del proveedor lo permiten, y registra la versión que estás sustituyendo. Un plan de reversión también necesita un punto de decisión, como no poder desbloquear la bóveda, no poder iniciar una sesión nueva o detectar un fallo inesperado al verificar la auditoría. No reviertas la actualización solo porque un agente tenga que volver a autorizarse después de un reinicio planificado.

¿Cuál es la diferencia entre los registros de sesiones y los registros de actividad?

Un diario de sesiones te indica qué proceso de agente recibió la aprobación y te permite identificar o revocar esa ejecución. Un diario de actividad responde a otra pregunta: qué acciones individuales ocurrieron realmente. Comprueba ambos después del mantenimiento, porque una lista de sesiones correcta no demuestra que una escritura remota se completara como estaba previsto.

¿Cómo verifico el registro de auditoría después de una actualización?

Ejecuta sp audit verify antes y después de la ventana de mantenimiento si tu puerta de enlace ofrece ese comando. Comprueba la cadena de hashes de los datos de auditoría cifrados sin necesidad de revelar los secretos de la bóveda. Investiga cualquier fallo de verificación antes de reanudar el trabajo autónomo, aunque las solicitudes normales parezcan funcionar correctamente.

¿Una puerta de enlace de acciones hace que los agentes autónomos sean seguros para funcionar sin supervisión?

No. Una puerta de enlace de acciones local reduce la exposición de las credenciales al ejecutar por sí misma las acciones que las requieren, pero no decide si la acción solicitada por un agente es sensata. Mantén las aprobaciones y la confirmación por llamada para las credenciales que puedan cambiar sistemas de producción o revelar datos sensibles.

¿Cuál es el momento más seguro para actualizar una puerta de enlace de acciones para desarrolladores?

Actualiza durante un límite natural del trabajo, después de que el agente haya confirmado el código, resumido su estado y terminado las operaciones remotas. Si el agente está reparando un incidente activo, evita cambiar la puerta de enlace a menos que la actualización resuelva el incidente o elimine un riesgo mayor. El mantenimiento durante un incidente añade otra variable cuando necesitas reducirlas.

Sallyport

Sallyport ejecuta llamadas de API y comandos SSH por tu agente de IA. Las claves se quedan en una bóveda local de tu Mac; tú apruebas cada ejecución y cada acción queda en un registro sellado.

© 2026 Sallyport · Código abierto bajo Apache-2.0 · Oleg Sotnikov