8 min de lectura

Exposición de credenciales en el portapapeles: deja de entregar secretos a los agentes

La exposición de credenciales en el portapapeles convierte una copia rápida en datos retenidos en prompts, terminales, herramientas de sincronización e historiales. Usa rutas de acción más seguras.

Exposición de credenciales en el portapapeles: deja de entregar secretos a los agentes

Copiar una credencial parece algo temporal porque el gesto dura menos de un segundo. No lo es. El historial del portapapeles, el desplazamiento del terminal, las transcripciones de los agentes, la sincronización de chats y el historial del shell pueden convertir ese gesto en varias copias independientes, cada una con reglas de acceso y retención diferentes.

Los desarrolladores suelen centrarse en si un secreto está cifrado en reposo dentro de un gestor de contraseñas. Eso importa, pero el momento peligroso llega después de copiarlo. Cuando el texto en claro sale del gestor de contraseñas, puede entrar en herramientas diseñadas para recordar, indexar, sincronizar o reproducir exactamente lo que pegaste. Un agente autónomo facilita que el error se repita porque invita a escribir prompts largos y detallados y a incluir salidas de comandos que se tratan como desechables.

El historial del portapapeles crea un segundo sistema de almacenamiento

El historial del portapapeles crea un segundo almacén de credenciales cuando conserva texto después de que la aplicación que lo produjo ya lo haya olvidado. El portapapeles del sistema operativo ya es un estado compartido. Una función de historial prolonga la vida de ese estado y a menudo permite buscar entradas antiguas.

Ese riesgo es distinto del que existe cuando una aplicación lee el portapapeles justo en el momento en que pegas. Un desarrollador puede observar razonablemente un valor copiado durante el tiempo suficiente para pegarlo en una herramienta y después borrar el portapapeles. Una base de datos de historial puede conservar ese mismo valor antes de la acción de borrado y mantener varias versiones si copiaste un token, un encabezado secreto y un comando completo.

En macOS, pbcopy escribe la entrada estándar en el portapapeles y pbpaste la vuelve a leer. Esa comodidad explica por qué los scripts y los hábitos de depuración introducen secretos en el portapapeles con tanta facilidad. Ejecuta esta prueba inocua en un terminal desechable:

printf '%s' 'CLIPBOARD-TEST-7f3c' | pbcopy
pbpaste

La salida esperada es:

CLIPBOARD-TEST-7f3c

Abre ahora todas las funciones de historial del portapapeles que uses y busca CLIPBOARD-TEST-7f3c. Haz lo mismo en cualquier dispositivo que comparta tu portapapeles. Esta prueba no demuestra que una herramienta concreta almacene todos los tipos de portapapeles, pero sí muestra si tu ruta habitual de texto conserva una entrada después de terminar la operación original.

Apple documenta Universal Clipboard como una función de continuidad que permite copiar en un dispositivo Apple y pegar en otro dispositivo que haya iniciado sesión con la misma Apple Account y cumpla las condiciones de continuidad. Esa documentación describe un mecanismo de transporte útil, no un límite para gestionar secretos. Si tu credencial pasa a otro dispositivo, las aplicaciones locales, las copias de seguridad y el estado de sesión de ese dispositivo también forman parte de la exposición.

La respuesta habitual es: «Solo lo copié localmente». Local no es una política de retención. Un gestor local del portapapeles puede ejecutarse continuamente, guardar una base de datos para búsquedas, incluir entradas en copias de seguridad o entregarlas a un proveedor de sincronización. Una máquina local también puede tener otras sesiones de usuario, software de gestión remota, grabación de pantalla, herramientas de soporte y utilidades de desarrollo. No conviertas esto en un miedo impreciso a todo el software local. Identifica qué puede leer tu portapapeles, cuánto tiempo conserva los datos y si los envía a otro lugar.

Un secreto copiado no queda comprometido automáticamente, pero ha cruzado un límite que no puedes describir con la misma seguridad que una bóveda. Eso debería cambiar tu respuesta.

Un prompt de agente es un canal de distribución de credenciales

Pegar un token en el prompt de un agente distribuye el token a más lugares de los que necesita la solicitud. El agente puede leerlo, pero también puede hacerlo el cliente que guarda el historial de la conversación, el generador de contexto que prepara turnos posteriores, cualquier registro asociado al cliente y cualquiera que pueda inspeccionar la transcripción resultante.

El prompt también fomenta un patrón especialmente peligroso: copiar una solicitud completa que funciona porque parece eficiente. Un desarrollador pega un token bearer, una URL, un identificador de cliente y un comando curl, y pide al agente que lo ajuste. El agente puede citar el comando en su respuesta. El desarrollador puede copiar esa respuesta de vuelta a un terminal. Así, un secreto aparece en el registro original del portapapeles, el prompt, la respuesta, el desplazamiento del terminal y posiblemente un archivo de historial del shell.

No intentes resolverlo con una instrucción de redacción después de haber pegado el valor. El agente no puede dejar de ver el contexto que ya recibió, y una instrucción no borra los registros locales ni remotos. Pide estructura, no credenciales.

Un prompt que no expone nada sensible puede dar a un agente suficiente orientación:

Call the staging inventory API endpoint GET /v1/items.
Use the credential named staging-inventory.
Return the status code and the count of items.
Do not print request headers or authentication material.

Ese prompt separa la solicitud de una acción del material de autorización. También indica al agente qué resultado debe devolver, lo que evita el hábito común de volcar una solicitud o respuesta completa como comprobación.

Esta distinción se difumina constantemente: una referencia a un secreto no es un valor secreto. staging-inventory, PAYMENTS_TOKEN o «usa mi credencial de despliegue de producción» solo pueden ser referencias seguras si el agente no tiene forma de resolverlas en texto en claro. Si un archivo de configuración local expande la referencia y después devuelve el valor al agente, solo has sustituido la copia por una indirección.

Trata el texto del prompt como contenido que puede conservarse, buscarse, revisarse, exportarse o incluirse accidentalmente en un informe de errores. El mismo criterio se aplica a la salida de las herramientas del agente. Una herramienta que devuelve encabezados de solicitud, un error de autorización que repite un token de URL o una salida de depuración detallada pueden introducir una credencial en el siguiente prompt sin que nadie la pegue deliberadamente.

La comodidad del terminal deja varias copias

Un comando del shell con un secreto literal puede filtrarse por más vías que el historial del portapapeles. El shell puede guardarlo en el historial. El terminal puede conservarlo en el desplazamiento. Un multiplexor de terminal puede escribirlo en el registro de un panel. Una grabadora puede capturarlo. En algunos sistemas, otros procesos locales con permisos suficientes pueden ver los argumentos de los comandos.

Por eso este comando tan familiar es un mal valor predeterminado:

curl -H 'Authorization: Bearer eyJ...' https://api.example.test/v1/items

El token queda visible mientras lo escribes o pegas, puede acabar en el portapapeles y persistir en el historial del shell. Sustituir el token por una variable de entorno lo elimina de la línea de comandos, pero no hace que desaparezca del entorno del proceso:

curl -H "Authorization: Bearer $INVENTORY_TOKEN" https://api.example.test/v1/items

Eso solo supone una mejora cuando controlas cómo entra INVENTORY_TOKEN en el entorno, qué procesos secundarios lo heredan y si los diagnósticos lo imprimen. No pegues export INVENTORY_TOKEN=... en un shell interactivo y te des por satisfecho. Puede que simplemente hayas movido el valor literal al historial, un comando antes.

Para el trabajo manual, un prompt interactivo suele ser más seguro porque la entrada no pasa a formar parte del propio comando. Un script pequeño puede leer un token sin mostrarlo:

#!/bin/sh
printf 'Inventory token: ' \u003e\u00262
stty -echo
IFS= read -r token
stty echo
printf '\\n' \u003e\u00262
curl -sS -H "Authorization: Bearer $token" https://api.example.test/v1/items
unset token

Esto evita que el secreto aparezca en el comando escrito y en la pantalla normal del terminal. No convierte un script de shell en una bóveda. El proceso sigue manteniendo el valor en memoria, curl recibe un encabezado y un modo detallado o un registro de proxy pueden revelarlo. Usa este patrón para una tarea breve de recuperación manual, no como diseño de integración permanente.

El diseño más seguro mantiene la credencial fuera de la ruta del comando. Deja que un componente que entienda de credenciales emita la solicitud y devuelva solo los datos que el desarrollador o el agente necesitan. Si la tarea es «dime si terminó el despliegue X», el resultado debería ser un estado y una marca de tiempo, no todo un intercambio HTTP autenticado.

Las herramientas de portapapeles compartido amplían la audiencia sin avisar

Las herramientas de portapapeles compartido son inseguras para las credenciales porque compartir convierte una copia local en un mecanismo de entrega. La exposición puede involucrar el cliente de escritorio de un compañero, una extensión del navegador, una integración de chat, un espacio de trabajo remoto o un dispositivo en el que olvidaste que seguías conectado.

Los desarrolladores suelen juzgar estas herramientas por su intención. Un portapapeles compartido existe para ayudar a un equipo a mover fragmentos rápidamente, así que parece un canal de trabajo. A las credenciales no les importa que el canal parezca profesional. Si cada participante puede recuperar una entrada más tarde, has concedido a cada participante acceso a ese secreto.

El caso incómodo es el canal temporal de un incidente. Alguien necesita un token API para diagnosticar un fallo de producción y un compañero dice: «Déjalo en el portapapeles compartido, lo borraré después». No lo hagas. El destinatario puede pegarlo en su propio historial del shell. El servicio puede registrar el elemento antes de borrarlo. Un cliente de sincronización local puede descargarlo en varios dispositivos. No puedes verificar desde tu máquina que se haya borrado de todas las copias.

Envía una referencia y establece una vía aprobada para usar la credencial. Si una persona debe recibir un secreto, utiliza el método designado por la organización para compartir secretos, con controles de acceso y caducidad. Si no existe ese método, crear una credencial de sustitución con permisos muy limitados y revocarla después del incidente suele ser menos imprudente que usar una herramienta de colaboración como canal secreto.

Compartir el portapapeles también provoca un fallo más sutil: los desarrolladores copian un secreto localmente y después activan la sincronización, instalan una utilidad de historial o inician sesión en un segundo dispositivo. Los registros antiguos pueden quedar accesibles de repente. Revisa la configuración de retención y sincronización antes del trabajo sensible, pero asume que las copias anteriores requieren su propia investigación.

Borrar el portapapeles no elimina el rastro

Mantén las pruebas fuera del portapapeles
Su registro de auditoría cifrado y encadenado mediante hashes conserva pruebas de las acciones sin guardar credenciales en las transcripciones de los agentes.

Borrar el portapapeles actual solo sustituye su contenido actual. No garantiza que se elimine de una base de datos de historial, un registro de sincronización, un terminal, una conversación con un agente o los propios registros de la aplicación de destino.

Aun así, debes borrar el portapapeles actual después de copiar algo accidentalmente porque reduces la exposición casual posterior. En macOS, este comando sustituye el contenido de texto en claro del portapapeles por una cadena vacía:

printf '' | pbcopy

No presentes esa operación como una solución. Es contención. Lo mismo se aplica al botón visible de «borrar» de un gestor del portapapeles. Puede eliminar el registro de la interfaz de usuario mientras las copias de seguridad, las réplicas sincronizadas, los datos indexados de búsqueda u otro endpoint lo conservan.

Trata una copia accidental como un incidente pequeño. La respuesta correcta depende del alcance de la credencial, pero el orden importa:

  1. Deja de usar la credencial expuesta y revócala o rótala cuando el emisor lo permita.
  2. Borra el portapapeles actual y elimina la entrada conocida del historial en todos los dispositivos que controles.
  3. Busca en los destinos probables: chats de agentes, historial del terminal, registros del terminal, scripts del shell, notas, comentarios de incidencias y archivos del repositorio.
  4. Revisa la actividad del servicio de la credencial para detectar acciones que no reconozcas.
  5. Registra lo ocurrido y corrige el flujo de trabajo que hizo necesario pegar el secreto.

A veces las personas se resisten a rotar una credencial porque no pueden demostrar que un tercero leyera la entrada. Es comprensible durante una interrupción, pero el criterio de prueba es incorrecto. Sabes que el secreto llegó a un almacenamiento o canal fuera de su control previsto. El coste de rotarlo debe valorarse según los permisos y la vida útil de la credencial, no según tu capacidad para demostrar un robo.

No rotes a ciegas una credencial y dejes después un token antiguo sin revocar en el historial de comandos. Confirma que la credencial antigua ya no funciona. Si el proveedor no puede revocar valores individuales, reduce el tiempo de exposición cambiando el secreto principal o la política de acceso y documenta la limitación para el próximo incidente.

Los gestores de contraseñas reducen las copias, pero no eliminan sus riesgos

Los gestores de contraseñas resuelven bien el problema del almacenamiento cuando mantienen los secretos cifrados y controlan su recuperación. No controlan lo que ocurre después de que una aplicación pegue un valor en un prompt, un terminal, un formulario o el historial del portapapeles.

Muchos gestores de contraseñas ofrecen un tiempo de borrado del portapapeles. Úsalo. Limita el tiempo durante el que el portapapeles activo contiene texto en claro. Pero no puede borrar de forma fiable una entrada del historial de otro programa, un registro sincronizado o un texto que ya se haya pegado en otra aplicación. La función ayuda a evitar pegados accidentales posteriores. No autoriza a copiar de forma generalizada como parte del flujo de trabajo.

La opción más segura es usar la integración del gestor de contraseñas solo con destinos que realmente necesiten el texto en claro y puedan protegerlo. Un cliente API que guarda secretos en un archivo de espacio de trabajo local suele ser un destino peor de lo que parece. Un formulario del navegador puede filtrarlos por errores de autocompletado. Un comando de terminal suele ser el peor lugar porque, cuando algo falla, los desarrolladores suelen pegar el mismo comando en incidencias y chats.

Aplica un criterio distinto a una contraseña que una persona debe escribir en una página de inicio de sesión y a una credencial de máquina usada para realizar llamadas API o SSH. Una contraseña humana puede no tener una alternativa útil a una introducción controlada. Una credencial de máquina debería vivir normalmente detrás de un límite de acción, para que ni el agente ni la persona tengan que moverla como texto.

Esta distinción ayuda a los equipos a evitar una regla poco práctica como «no copies nunca secretos». A veces una persona tiene que copiar un código de recuperación. La regla útil es más concreta: no copies un secreto en un sistema que registre, sincronice, interprete o redistribuya texto, salvo que ese sistema esté aprobado expresamente para conservarlo.

La inyección de credenciales supera a la autorización mediante prompts

Mantén los tokens fuera de los prompts
Sallyport inyecta las credenciales HTTP desde su bóveda cifrada, para que los agentes nunca reciban tokens que puedan pegar o repetir.

La inyección de credenciales es más segura que la autorización mediante prompts porque el agente solicita una acción sin recibir el material que la autoriza. El agente puede decir «realiza esta solicitud HTTPS con la credencial X», mientras un componente local independiente proporciona el encabezado de autorización y devuelve un resultado filtrado.

Esa arquitectura contiene el modo de fallo más peligroso de los flujos con agentes: que el agente exfiltre una credencial simplemente repitiéndola en un archivo, una respuesta, un mensaje de commit o un prompt posterior. Si el agente nunca recibe el valor, no puede imprimirlo accidentalmente. Aun así, puede hacer un uso indebido de la autoridad que se le conceda, por lo que necesitas controles de aprobación y auditoría sobre la propia acción.

SSH necesita el mismo tratamiento. Copiar una clave privada en el contexto de un agente es indefendible. Copiarla en un heredoc del terminal es solo ligeramente menos grave. Una ruta SSH adecuada mantiene la clave privada en un almacén protegido, realiza localmente la firma o la configuración de la conexión y entrega a quien llama la salida del comando, no el material de la clave.

Sallyport sigue este modelo para HTTP y SSH: su bóveda guarda las credenciales API y SSH, mientras los agentes solicitan acciones mediante el shim MCP incluido en lugar de recibir credenciales en texto claro. El bloqueo de la bóveda, la aprobación de sesión y la aprobación opcional para cada uso de una credencial controlan las acciones sin pedir a los desarrolladores que escriban reglas de política.

No confundas esto con un proxy de red o un motor de reglas general. Un gateway de acciones no puede corregir una solicitud que un agente autorizado nunca debería haber podido realizar. Sí puede hacer visible la autorización, exigir una decisión humana en el límite previsto y mantener el secreto fuera de la ruta del prompt y del portapapeles.

La aprobación debe describir la acción, no mostrar el secreto

Una pantalla de aprobación debe identificar quién solicitó una acción, qué autoridad de credenciales quiere usar y qué operación se ejecutará. Nunca debería exigir que una persona compare o inspeccione el secreto en sí.

Aquí es donde fallan muchos wrappers caseros. Guardan un token en un archivo de configuración y después imprimen el comando curl completamente expandido para su aprobación. El desarrollador ha evitado copiar el token en un prompt de agente, pero acaba revelándolo en el diálogo de aprobación y en sus registros. Un registro de aprobación seguro puede mostrar credential: staging-inventory, method: GET, host: api.example.test y path: /v1/items. No tiene ninguna razón para imprimir un encabezado de autorización.

La fatiga de aprobación es un fallo de diseño cuando cada solicitud de lectura inofensiva produce un diálogo impreciso. Las personas hacen clic en diálogos vagos porque la información no les ayuda a decidir. Una solicitud de decisión útil muestra la identidad de firma de código del proceso que solicita la acción, distingue un proceso nuevo de otro ya aprobado e indica si la acción actual usará una credencial marcada para aprobación individual.

Mantén también limitado el resultado de la acción. Por ejemplo, una llamada para consultar el estado de un despliegue podría devolver esto:

{"deployment":"api-472","state":"completed","finished_at":"2025-04-17T11:26:00Z"}

No debería devolver los encabezados de la solicitud, todo el cuerpo si contiene datos de clientes no relacionados ni un volcado de depuración que lleve al agente a repetir secretos en contextos posteriores. Filtrar la salida no es algo meramente estético. Limita lo que se copiará a continuación.

Los registros de auditoría deben indicar si el agente actuó

Mantén los encabezados fuera del contexto del agente
Los agentes solicitan acciones HTTP mediante el shim sp mcp incluido, sin manipular encabezados de autorización.

Un registro de auditoría debe distinguir una ejecución del agente de una llamada individual que usa credenciales. Un registro de sesión indica qué proceso recibió autoridad y permite revocar esa ejecución. Un registro de llamada indica qué hizo después de la autorización. Un solo registro no puede responder claramente a las dos preguntas.

Los registros también deben evitar convertirse en otra bóveda de secretos. Guardar la solicitud completa por comodidad forense resulta tentador, sobre todo durante el desarrollo. No registres encabezados de autorización, cookies sin procesar, claves privadas ni cuerpos de solicitud que contengan credenciales. Registra la referencia de la credencial, el destino, el método, la ruta, el resultado, la hora, la identidad del proceso y la decisión de aprobación. Añade identificadores de solicitud cuando el servicio de destino los proporcione.

La evidencia contra manipulaciones importa cuando un agente puede actuar sin supervisión. Un registro que un proceso puede reescribir después de los hechos no resuelve una discusión sobre lo ocurrido. Un registro encadenado mediante hashes permite a un auditor verificar que las entradas no se han eliminado ni modificado sin tener que exponer el material de las credenciales.

Sallyport proyecta los diarios de sesiones y llamadas a partir de un registro de auditoría cifrado y encadenado mediante hashes, y sp audit verify comprueba la cadena sin conexión y sin requerir una clave de bóveda. Es un artefacto de incidente mejor que una transcripción del terminal porque registra acciones autorizadas sin tratar cada cadena copiada como una prueba que deba conservarse.

Cuando ocurra un incidente con un secreto copiado, usa el registro de auditoría para responder preguntas concretas: ¿qué proceso del agente se ejecutó?, ¿a qué destinos llegó?, ¿intentó realizar una escritura?, ¿se revocó una sesión antes de otra llamada? Esas respuestas ayudan a delimitar el incidente. No demuestran que ningún lector del portapapeles viera el valor original, por lo que la rotación sigue formando parte de la respuesta.

El flujo de trabajo que debes eliminar esta semana

Elimina las credenciales literales de las rutas que tu equipo trata como texto ordinario. Empieza por los lugares donde copiar y pegar parece más natural: prompts de agentes, comandos de terminal, herramientas de recorte compartidas, comentarios de incidencias y borradores de chats del equipo.

Haz un ejercicio breve de simulación con un marcador inocuo como CLIPBOARD-TEST-7f3c. Cópialo una vez y después búscalo en las herramientas de historial, los registros del terminal, las sesiones de los agentes y los dispositivos sincronizados que realmente usa tu equipo. Encontrarás la ruta importante en tu entorno más rápido que debatiendo consejos de seguridad genéricos.

Después, haz que la ruta segura resulte menos molesta que la anterior. Ofrece a los agentes una interfaz de acciones que acepte referencias de credenciales, mantén comprensibles las aprobaciones de sesión, reserva la aprobación individual para las credenciales sensibles y devuelve solo el resultado necesario para continuar el trabajo. Si un desarrollador debe exponer texto en claro para completar una automatización rutinaria, el flujo todavía tiene un agujero.

Un secreto debería pasar su vida útil en un almacén protegido y en el proceso que lo utiliza. No debería recorrer el portapapeles solo porque copiar sea fácil.

FAQ

¿Copiar una clave API al portapapeles supone un riesgo de seguridad?

Sí. El historial del portapapeles convierte una operación de copia de un segundo en datos almacenados que pueden persistir después de reinicios, sesiones de cuenta, sincronizaciones entre dispositivos o copias de seguridad. Trata un secreto copiado al portapapeles como expuesto a todas las aplicaciones y servicios que puedan leer ese historial.

¿El tiempo de borrado del portapapeles de un gestor de contraseñas hace que los secretos copiados sean seguros?

No protege el contenido del portapapeles. Detiene la lectura por parte de otras aplicaciones mientras la ventana del gestor de contraseñas está activa, pero, una vez que pegas el secreto en otro lugar, la aplicación receptora y cualquier servicio de historial del portapapeles pueden conservarlo.

¿Cómo puedo dar acceso a una API a un agente de IA sin pegar un token?

Por lo general, no. Pide al agente la acción que quieres y deja que una capa de acciones que controle las credenciales ejecute la solicitud sin revelar el secreto en el prompt. Si tienes que usar un terminal, es preferible una solicitud interactiva o una referencia local al secreto antes que un valor literal en el comando.

¿Poner un secreto en un comando del shell es más seguro que ponerlo en un prompt?

El shell puede guardarlo en el historial, una herramienta de grabación del terminal puede capturarlo, un monitor de procesos puede exponer los argumentos del comando y el texto copiado puede permanecer en el historial del portapapeles. Las variables de entorno reducen la exposición en la línea de comandos, pero requieren cuidado porque los procesos secundarios y la salida de depuración pueden filtrarlas.

¿Qué debo hacer si copié un secreto en un portapapeles compartido?

No pegues credenciales de producción en portapapeles compartidos. Si la tarea no puede esperar, usa una credencial independiente, con permisos limitados y una vida útil breve, y revócala cuando termine el trabajo. Un portapapeles compartido es un canal de distribución, no un espacio privado para apuntes.

¿Puedo confiar en un gestor del portapapeles con claves API?

Supón que el servicio tiene una base de datos local o un registro sincronizado hasta que confirmes lo contrario. Borra la entrada visible, desactiva la sincronización si corresponde, revisa la configuración de retención y rota las credenciales que hayan salido de su límite de control previsto.

¿Tengo que rotar una cookie de sesión o un token de acceso que copié?

Un token de sesión puede ser tan peligroso como una contraseña porque permite actuar como el usuario autenticado hasta que caduque o se revoque. Rótalo o revócalo cuando sea posible y revisa los registros del servicio para detectar actividad durante su periodo de validez.

¿Qué puedo poner en un prompt de agente en lugar de credenciales?

Usa el prompt más limitado posible y evita por completo el secreto: identifica el sistema, la acción permitida, el objetivo y el resultado esperado. Por ejemplo, di «comprueba el estado del despliegue del servicio api» en lugar de pegar un token bearer y un endpoint.

¿Deberían los desarrolladores desactivar el historial del portapapeles?

Desactiva el historial o la sincronización durante el trabajo sensible, pero no confundas esa configuración con un límite de seguridad. El portapapeles sigue siendo legible para los procesos locales que tienen acceso, y la aplicación de destino aún puede registrar lo que pegas.

¿Cómo investigo una credencial que pegué en el lugar equivocado?

Empieza buscando un fragmento distintivo del secreto en el historial del shell, los registros del terminal, las transcripciones del agente, las entradas del gestor del portapapeles, el historial de chats y el repositorio. Después revoca la credencial y revisa los registros de acciones de esa identidad. Borrar el registro no elimina una copia que ya se haya creado.

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