8 min de lectura

Vistas previas de notificaciones de aprobación: protege los detalles de las acciones

Las vistas previas de las notificaciones de aprobación pueden exponer acciones de agentes en pantallas bloqueadas. Descubre qué mostrar, redactar y probar, y qué debe permanecer dentro de la aplicación autenticada.

Vistas previas de notificaciones de aprobación: protege los detalles de las acciones

Las vistas previas de las notificaciones de aprobación merecen el mismo modelado de amenazas que la acción que anuncian. Una solicitud para desplegar código, llamar a la API de un cliente o ejecutar un comando remoto puede revelar datos sensibles antes de que alguien pulse «Aprobar». Si ese dato aparece en un teléfono bloqueado, un ordenador compartido, una pantalla de una sala de reuniones o un dispositivo portátil que refleja las notificaciones, el sistema de aprobación ya ha revelado parte de la operación.

El error habitual consiste en tratar la notificación como una pieza de infraestructura inofensiva. Es un canal de salida con su propio público, comportamiento de conservación y controles de acceso. Diseñalo como una invitación deliberadamente limitada para entrar en una superficie protegida de decisión. No lo trates como una versión pequeña de la pantalla de aprobación.

Una pantalla bloqueada es un límite de exposición

Una pantalla bloqueada puede estar a la vista de colegas, familiares, visitantes, sistemas de cámaras y cualquiera que pase junto a un escritorio. El propietario puede estar cerca, pero estar cerca no equivale a estar autenticado. La diferencia parece obvia hasta que una alerta de aprobación muestra un nombre de host de producción, el nombre de un cliente, la etiqueta de un incidente o la primera línea de un comando de shell.

Muchos equipos clasifican una notificación como de baja sensibilidad porque no contiene ningún secreto. Esa prueba es demasiado limitada. Un endpoint como billing-prod.internal, una ruta como /customers/28471/refund o un mensaje como Rotate compromised access token puede revelar sistemas, relaciones y estado operativo. Un atacante que reúna esos fragmentos no necesita un token bearer para obtener ventaja.

Piensa en lo que un observador puede deducir de cada campo:

  • Un destino puede identificar a un cliente, una región, un producto o un servicio de producción.
  • Una operación puede revelar que se está modificando una cuenta, que hay un reembolso pendiente o que está en curso un incidente.
  • La identidad de un agente puede revelar en qué repositorio o tarea trabaja un desarrollador.
  • El campo del motivo suele contener texto copiado de un ticket, datos introducidos por un usuario o notas de un incidente.
  • Un resultado puede revelar datos que la acción recuperó antes de que el usuario tomara una decisión.

La pantalla bloqueada es solo el primer límite de exposición. Los sistemas operativos pueden mostrar el mismo texto en el centro de notificaciones después de desbloquear el dispositivo. Una notificación de escritorio puede permanecer en el historial después de que alguien abandone una estación de trabajo compartida. Un reloj puede reflejarla. Una grabación de pantalla, un programa de asistencia remota o una videollamada pueden capturarla. La vista previa debe ser segura en todos esos contextos.

La documentación de Platform Security de Apple describe la pantalla bloqueada como un estado protegido del dispositivo y sitúa la autenticación del usuario en el centro del acceso a los datos protegidos. Ese modelo no convierte por sí solo el texto de una notificación en datos protegidos. Las aplicaciones deben elegir qué envían al servicio de notificaciones y qué muestran antes de que la persona se autentique. Trata la configuración de privacidad del sistema operativo como una capa más, no como permiso para incluir contenido sensible en el mensaje.

La alerta debe pedir atención, no revelar la solicitud

Una vista previa segura informa de que una acción requiere revisión y ofrece suficiente urgencia para priorizarla. No reproduce la acción. Es una diferencia importante que los equipos suelen difuminar: el contexto de la notificación no es el contexto de aprobación.

El contexto de aprobación debe permitir que el operador tome una decisión informada. Puede necesitar el destino exacto, la operación, el alcance de las credenciales, el proceso del agente, los argumentos, el efecto esperado y el vencimiento. El contexto de la notificación existe para llevar a la persona adecuada de vuelta a esa vista protegida. Necesita mucho menos.

Para una acción normal, una vista previa útil en una pantalla bloqueada podría decir:

Action approval needed
A development agent requests access to a protected service.
Expires in 4 minutes. Open the app to review.

Ese texto establece la urgencia y el alcance general. No dice si el servicio gestiona nóminas, código fuente, pagos o un incidente interno. Tampoco revela la URL, el método, el comando, la rama, la consulta ni la identidad de un cliente.

Compáralo con el tipo de mensaje que aparece en sistemas reales:

Approve POST https://payments.example.internal/v1/refunds/28471
Agent requests bearer token for customer refund. Reason: duplicate charge.

La segunda alerta nunca muestra el token bearer, pero revela demasiado. Identifica un servicio sensible, una acción, un objeto relacionado con un cliente y un evento financiero. Cualquiera que pueda leer la vista previa ha aprendido algo que no estaba autorizado a conocer.

Usa un vocabulario pequeño para el texto de las vistas previas. «Aprobación necesaria», «solicitud de acceso pendiente» y «revisión necesaria» suelen ser suficientes. Añade una categoría de riesgo general si cambia la rapidez con la que una persona debería responder: «acción externa», «acceso a producción» o «lectura sensible». No hagas la etiqueta tan específica que anule su propósito. «Exportación de la base de datos de producción» no es una categoría general.

La pantalla autenticada debe hacer lo contrario. Debe concretar la solicitud lo suficiente para rechazarla de forma segura o aprobarla con conocimiento. Ocultar detalles en esa pantalla por motivos de privacidad produce aprobaciones a ciegas, que son otro tipo de fallo.

La redacción debe ocurrir antes de que la notificación salga de la aplicación

La carga útil de una notificación necesita su propio esquema. No la construyas recortando un registro completo de aprobación en el último momento ni dependas de una lista de sustituciones de texto. Los equipos toman ese atajo porque el registro completo ya existe y mostrarlo parece sencillo. El método falla cuando aparece un campo nuevo, una URL pasa a un subtítulo o una cadena de motivo contiene datos sensibles copiados.

Crea dos proyecciones explícitas a partir de una solicitud de acción. Una alimenta la vista de aprobación autenticada. La otra alimenta la vista previa. El modelo de vista previa ni siquiera debería tener campos para URLs sin procesar, encabezados, argumentos de comandos, fragmentos de respuestas, nombres de secretos o motivos de texto libre.

Este pseudocódigo muestra la estructura:

type ApprovalRecord {
  requestId
  agentAuthority
  destination
  operation
  arguments
  credentialReference
  userReason
  expiry
  riskClass
}

type NotificationPreview {
  requestId
  title
  body
  expiryText
  riskClass
}

function makePreview(record):
  return NotificationPreview(
    requestId = opaqueId(record.requestId),
    title = "Action approval needed",
    body = previewBody(record.riskClass),
    expiryText = formatExpiry(record.expiry),
    riskClass = record.riskClass
  )

La propiedad importante no es el texto. Es la estructura unidireccional de los datos. NotificationPreview no puede contener destination por accidente porque el campo no existe. Un revisor puede inspeccionar ese límite. Una prueba puede rechazar cualquier campo nuevo de la vista previa que incluya una cadena sin límites.

No pases el texto sin procesar del motivo por un limpiador y des por terminado el trabajo. Los motivos suelen contener títulos de incidencias, comandos pegados, direcciones de correo electrónico, identificadores de cuentas y nombres internos. Los patrones de redacción no detectan formatos que nadie había previsto. Una frase fija tomada de una enumeración es más segura que una oración controlada por el usuario, aunque esté limpia.

Los identificadores opacos también requieren cuidado. Un ID de aprobación como APR-10482 puede parecer inofensivo, pero un número predecible permite a un observador relacionar un registro con un ticket visible o con una conversación posterior. Usa un identificador sin significado empresarial que no pueda funcionar como token de autorización. Mejor aún, omítelo de la vista previa salvo que los flujos de soporte realmente lo necesiten.

Mantén la solicitud completa en el almacenamiento cifrado de la aplicación o en otro registro autenticado, no en el cuerpo de la notificación. Un sistema de notificaciones puede conservar el texto más tiempo del que la alerta permanece visible. Tus decisiones de conservación de datos no se aplican si otro subsistema guarda una copia.

La configuración de privacidad del dispositivo ayuda, pero no puede sostener todo el diseño

Los sistemas operativos suelen permitir ocultar las vistas previas de las notificaciones cuando el dispositivo está bloqueado. Esa configuración es útil, pero un producto de aprobación no puede suponer que está activada, que se entiende bien o que se aplica de forma coherente en todos los dispositivos de una persona.

Algunas personas necesitan vistas previas visibles para clasificar mensajes. Algunas organizaciones administran esa configuración. Algunos dispositivos no tienen código de bloqueo. Algunos usuarios leen alertas en un ordenador cuya pantalla ya está desbloqueada mientras un colega está detrás de ellos. Una aplicación que envía texto sensible y dice «los usuarios pueden desactivar las vistas previas» ha dejado una decisión de seguridad en manos del momento menos fiable de la configuración del sistema.

Diseña para estas tres condiciones:

  1. El sistema operativo muestra la notificación completa en una pantalla bloqueada.
  2. El sistema operativo oculta el cuerpo, pero muestra el título o el nombre de la aplicación.
  3. La pantalla está desbloqueada, pero otras personas pueden verla.

La primera condición determina tu carga útil. Si el texto es seguro en ese caso, las otras dos son más fáciles de analizar. Si no lo es, una configuración del usuario solo hace que el fallo sea intermitente.

No deduzcas demasiado del estado del dispositivo. Una aplicación puede saber que su propia ventana está desbloqueada, pero normalmente no puede saber quién está mirando la notificación. Incluso una señal fiable de estado bloqueado no resuelve el problema de un proyector, un monitor externo o una pantalla compartida. La vista previa segura debe seguir siéndolo después de la autenticación, porque las condiciones de observación física están fuera del control de la aplicación.

Hay una excepción que conviene mencionar: una notificación local y autenticada dentro de una ventana de la aplicación puede mostrar el mismo nivel de detalle que la vista de aprobación porque la aplicación ya controla el acceso a esa ventana. Eso no es una notificación del sistema. No confundas una bandeja de entrada protegida dentro de la aplicación con un banner de pantalla bloqueada solo porque ambas usan la palabra notificación.

Los botones de aprobación en las notificaciones debilitan el límite de decisión

Deja pruebas de cada acción
Las sesiones y las llamadas individuales se registran en un único registro de auditoría cifrado, encadenado mediante hashes y protegido contra escritura.

Un botón «Aprobar» en una notificación parece eficiente. También es un atajo atractivo para las confirmaciones accidentales, la aprobación bajo coacción y la pérdida de contexto. Una persona ve un banner truncado, pulsa un botón conocido y autoriza una acción sin revisar su objetivo o efecto real.

La notificación solo debería ofrecer acciones que conserven el límite de decisión. «Abrir para revisar» es seguro porque lleva al operador a la aplicación autenticada. «Descartar» es seguro si descartar no rechaza, aprueba ni prolonga silenciosamente la solicitud. Un botón que diga «Aprobar» no es seguro para acciones importantes, aunque el sistema operativo pida desbloquear el dispositivo antes de ejecutarlo.

La autenticación y el consentimiento informado son comprobaciones distintas. La autenticación del dispositivo demuestra que alguien capaz de desbloquearlo pulsó el botón. No demuestra que esa persona viera la solicitud completa o tuviera tiempo de evaluarla. La pantalla de aprobación debe vincular la decisión a los detalles de la solicitud, mostrar si algo cambió desde que apareció la alerta y exigir una confirmación nueva para una acción sensible.

Esto importa aún más con las solicitudes de agentes. Un agente puede producir muchas acciones que parecen similares a distancia. Un título de notificación como «solicitud de acceso SSH» no distingue una comprobación de estado de solo lectura de un comando destructivo. La vista protegida debe mostrar la intención concreta antes de que el operador permita la acción.

El flujo de autorización de Sallyport mantiene la decisión sobre la acción dentro de la aplicación autenticada, en lugar de convertir una notificación del sistema operativo en un control remoto para el acceso del agente. La separación es menos llamativa que una aprobación con un solo toque, pero resiste mejor cuando las solicitudes tienen consecuencias.

Tampoco ofrezcas un control de «recordar esta decisión» en la notificación. Los cambios de permisos persistentes merecen su propia superficie explícita, un alcance claro y una forma de inspeccionarlos o revocarlos. Un toque distraído en una pantalla bloqueada es un mal lugar para crear autoridad duradera.

Las categorías de riesgo deben describir las consecuencias sin nombrar los recursos

Una alerta vaga enseña a las personas a abrir todas las notificaciones. Una alerta demasiado detallada filtra el recurso que se intenta proteger. Las categorías de riesgo resuelven parte de esa tensión cuando describen la categoría de consecuencia en lugar del recurso.

Usa categorías basadas en lo que la acción puede hacer. Por ejemplo, una acción puede leer información protegida, modificar un servicio interno, enviar una solicitud externa o ejecutar una operación difícil de revertir. Esas categorías dan al revisor un motivo para interrumpir su trabajo sin revelar la base de datos, el cliente o el nombre de host implicado.

Evita las etiquetas que mezclen la sensibilidad del acceso con la urgencia operativa. «Alta prioridad» dice poco sobre el efecto de la aprobación. «Escritura en producción» comunica más, pero aún puede revelar que participa un sistema de producción. Que esa expresión sea segura depende del entorno. Una persona que trabaja sola en un dispositivo personal puede aceptarla; un puesto de soporte compartido debería usar una categoría más general.

Define el vocabulario por escrito y asígnalo a la acción antes de crear la notificación. Si los desarrolladores pueden improvisar el texto del título, el esquema más cuidadoso del mundo no te salvará. Una regla de revisión puede ser sencilla: cualquier cadena procedente de un agente, un usuario, una URL, un comando, el cuerpo de una solicitud o una respuesta remota está prohibida en las vistas previas.

Una asignación práctica sería esta:

Propiedad de la acciónTexto de la vista previaTexto de la vista protegida
Lee un servicio protegidoLectura sensibleServicio, método, ruta y alcance exactos
Cambia el estado internoCambio internoObjetivo, campos modificados y efecto esperado
Envía datos fuera de la organizaciónAcción externaDestinatario, resumen de la carga útil y destino
Puede ser difícil de revertirImpacto elevadoComando o solicitud completos y notas de recuperación

La tabla es una política para redactores e ingenieros, no una promesa de que cada acción encaje perfectamente en cuatro categorías. Cuando una acción tenga efectos combinados, elige la categoría más seria. Una notificación que pide atención demasiado pronto cuesta un momento. Una notificación que oculta una transferencia externa bajo «solicitud de acceso» provoca una mala decisión.

El historial de notificaciones y los dispositivos que las reflejan requieren una revisión propia

Verifica el registro de auditoría sin conexión
Verifica sin conexión la cadena de auditoría cifrada con sp audit verify, sin necesitar una clave de la bóveda.

Los equipos suelen probar el primer banner y detenerse ahí. La ruta completa de exposición incluye notificaciones conservadas, resúmenes de notificaciones, dispositivos portátiles que las reflejan, retransmisiones de escritorio y cualquier dispositivo administrado que reciba las mismas alertas de la cuenta.

Empieza con una solicitud real que contenga datos de prueba deliberadamente reconocibles: un nombre de cliente falso, un host interno falso, una dirección de correo falsa y un argumento de comando falso. No uses valores reales de producción para probar la privacidad. Activa la solicitud y revisa todos los lugares donde pueda aparecer el texto.

Usa esta secuencia de prueba antes de una versión:

  1. Bloquea el dispositivo principal y activa la solicitud de aprobación.
  2. Comprueba el banner, la lista de la pantalla bloqueada y el centro de notificaciones después de desbloquearlo.
  3. Activa cualquier retransmisión de notificaciones o dispositivo portátil configurado y revisa su historial.
  4. Captura la pantalla mediante las vías de asistencia remota y pantalla compartida que use tu equipo.
  5. Vence o resuelve la solicitud y comprueba si queda texto antiguo visible.

Registra el título y el cuerpo exactos que aparecen en cada punto. Una prueba correcta no es «la vista previa está oculta en mi teléfono». Es «ninguno de los marcadores de prueba apareció fuera de la aplicación autenticada». Esto también detecta fallos de localización. Una plantilla segura en inglés puede volverse insegura cuando una cadena traducida crece y empuja un identificador interno a una línea visible.

Presta especial atención a las notificaciones agrupadas. Un sistema puede mostrar el mensaje más reciente, un número o un resumen creado a partir de varias alertas. Si cada vista previa individual es segura, el grupo también debería serlo. Si el código de agrupación usa un nombre de acción como «tres solicitudes de reembolso», ha vuelto a introducir detalles sensibles por una vía lateral.

La persistencia de las notificaciones también cambia la respuesta ante incidentes. Revocar una sesión de agente evita solicitudes futuras, pero no puede retirar el texto que ya se copió al historial de notificaciones de un usuario o a un dispositivo que las refleja. Por eso la minimización de las vistas previas debe producirse antes de la autorización y de la revisión de auditoría, no después de un incidente.

Los registros de auditoría necesitan detalles, las vistas previas necesitan contención

Bloquea la puerta de acceso a las acciones
Su bóveda bloquea todas las acciones mientras está cerrada, con protección de Secure Enclave y Touch ID en macOS.

A veces los equipos de seguridad hacen que las vistas previas sean vagas porque también han hecho vagos sus registros de auditoría. Temen que los registros detallados filtren información. Eso mezcla dos sistemas distintos con públicos diferentes.

Un registro de auditoría debe ser lo bastante completo para reconstruir la decisión de autorización: qué proceso de agente inició la acción, con qué autoridad se ejecutó, cuál fue el destino y la operación, la hora, la decisión y el resultado. Los valores sensibles siguen necesitando un tratamiento cuidadoso, pero los investigadores necesitan detalles concretos. Una vista previa no debería contener nada de eso salvo que la persona se haya autenticado en la aplicación.

La diferencia importa durante un fallo. Imagina que un agente solicita un comando remoto. La alerta dice «Aprobación necesaria» y el revisor abre la aplicación. La vista protegida muestra el comando, el host, la identidad de la sesión y el vencimiento. El revisor lo rechaza. Más tarde, un ingeniero investiga el motivo y necesita el registro correspondiente. El registro de auditoría puede responder sin obligar a la notificación original a llevar el comando por todas las superficies de pantalla.

Sallyport separa sus diarios de sesión y actividad del tratamiento de las notificaciones, y ambos diarios se proyectan desde un registro de auditoría cifrado y encadenado mediante hashes. Este diseño permite al operador inspeccionar las acciones y verificar la cadena de auditoría sin conexión, sin usar las vistas previas de la pantalla bloqueada como sustituto de las pruebas.

No pongas hashes de auditoría, fragmentos de registros ni ID de correlación sin procesar en la notificación. Son útiles en la interfaz protegida y en las herramientas de investigación. En una superficie pública, crean identificadores que los observadores pueden recopilar y relacionar.

Una notificación debe vencer cuando vence la decisión subyacente, y su registro protegido debe indicar claramente ese vencimiento. Si una persona abre una alerta antigua, la aplicación debe obtener el estado actual de la solicitud. Nunca permitas que el cuerpo almacenado en caché de una notificación convenza a alguien de que está aprobando la misma solicitud que existía cinco minutos antes.

Convierte las reglas de las vistas previas en pruebas y trata de romperlas

Una directriz escrita como «evita el contenido sensible» fallará bajo presión de entrega. Conviértela en afirmaciones que se ejecuten con el generador de notificaciones y en casos de prueba que los revisores puedan leer.

La prueba más útil es una lista de bloqueo basada en el origen de los datos, no una lista frágil basada en palabras. Rechaza cualquier campo de la vista previa derivado de una URL, un host, texto de comandos, encabezados, un cuerpo, una etiqueta de credenciales, un motivo de texto libre, una respuesta remota, una dirección de correo electrónico o un identificador de cuenta. Después, permite únicamente un conjunto reducido de plantillas fijas y valores de categorías con límites.

Un dispositivo de prueba compacto podría tener este aspecto:

record.destination = "https://claims-prod.internal/cases/FAKE-784"
record.arguments = "--account [email protected] --export"
record.userReason = "Customer Northstar reports a disputed claim"
record.riskClass = EXTERNAL_ACTION

preview = makePreview(record)

assert preview.title == "Action approval needed"
assert preview.body == "An external action requires review."
assert preview doesNotContain "claims"
assert preview doesNotContain "FAKE-784"
assert preview doesNotContain "fake.person"
assert preview doesNotContain "Northstar"

Las afirmaciones positivas importan tanto como las negativas. Impiden que una edición posterior sustituya un mensaje fijo seguro por una alerta vacía y vaga que los usuarios aprendan a descartar. Prueba también el texto de vencimiento, la localización, las alertas agrupadas y la representación accesible. Los lectores de pantalla pueden leer contenido que el truncamiento visual oculta, por lo que la salida de accesibilidad debe usar el mismo modelo de vista previa restringido.

Por último, pide a alguien que no haya escrito la funcionalidad que lea las vistas previas mientras busca pistas operativas. Esa persona detectará lo que el autor ya da por normal: un nombre en clave de proyecto, una etiqueta de entorno conocida o el apodo interno de un servicio. Si un observador informado puede deducir la acción protegida, la notificación contiene demasiado.

Establece como vista previa predeterminada el mensaje menos específico que aún consiga una respuesta humana a tiempo. Deja las pruebas necesarias para una aprobación real detrás de la autenticación y haz que cada atajo devuelva a esas pruebas. El diseño puede costar un toque. Evita convertir cada pantalla bloqueada en un canal silencioso de divulgación.

FAQ

¿Qué debería mostrar una notificación de aprobación en una pantalla bloqueada?

Trata la pantalla bloqueada como una superficie pública o semipública. Muestra que una aprobación requiere atención, la categoría de riesgo y un plazo breve, pero mantén los destinos, las credenciales, los cuerpos de las solicitudes, los argumentos de comandos y los resultados dentro de la aplicación autenticada.

¿Es seguro mostrar un endpoint de API en la vista previa de una notificación?

En la mayoría de los casos, no. El nombre del recurso puede revelar un cliente, un proyecto interno, un entorno de producción o un incidente de seguridad. Fuera de la aplicación, usa una categoría de recurso neutral y muestra el destino exacto solo después de la autenticación.

¿Pueden las alertas de aprobación incluir un ID de acción?

Un identificador de aprobación simple puede ser aceptable si no tiene significado fuera de tu sistema y no puede autorizar nada. No uses una URL, un número de cuenta, el nombre de un cliente, un fragmento de comando ni una secuencia predecible como identificador.

¿Las notificaciones de aprobación genéricas provocan fatiga de aprobación?

Las alertas genéricas también crean un riesgo, porque las personas pueden aprobarlas sin contexto. Coloca el contexto relevante en la vista de aprobación autenticada y limita la vista previa a la información suficiente para decidir si abrirla.

¿Deberían los usuarios poder aprobar una acción directamente desde una notificación?

No. Una acción de notificación solo debería abrir la pantalla autenticada de decisión o descartar la alerta. Nunca debería aprobar una acción, ampliar una sesión, mostrar detalles ocultos ni pasar un token de aprobación a través del sistema de notificaciones.

¿Cómo clasifico las acciones de agentes con riesgo para las notificaciones?

Clasifica la operación antes de crear el mensaje. Una lectura puede revelar datos, una escritura cambia el estado y una acción irreversible o externa merece un texto más contundente y una alerta más visible, aunque la vista previa siga siendo privada.

¿Cómo compruebo si las vistas previas de las notificaciones filtran detalles sensibles?

Prueba por separado las condiciones de pantalla bloqueada, pantalla desbloqueada y pantalla compartida. También captura el historial del centro de notificaciones, los dispositivos portátiles que reflejan las alertas, las capturas de pantalla y cualquier dispositivo que reciba alertas reenviadas, porque cada superficie puede conservar más información que el primer banner.

¿Qué ocurre cuando una aplicación no puede saber si la pantalla está bloqueada?

La aplicación debe mostrar una alternativa segura cuando no pueda determinar el estado del dispositivo o la configuración de privacidad de quien observa la pantalla. Una alerta más tardía o menos específica es preferible a mostrar un comando de producción o datos de clientes en una pantalla sin control.

¿Cuándo es aceptable mostrar vistas previas completas de las notificaciones?

Solo cuando el destinatario no tenga otra fuente útil de contexto y el mensaje no exponga nada sensible. En los sistemas de aprobación, la mejor opción predeterminada es una alerta breve que indique a la persona que abra la aplicación protegida.

¿En qué deben diferenciarse los datos de una notificación y el registro de auditoría?

Mantén separados los datos de la vista previa y el registro de aprobación autenticado. La vista previa debe ser una proyección deliberadamente pequeña y redactada, mientras que el registro protegido contiene el destino, el alcance, la identidad, el motivo y la decisión final.

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