84 paquetes npm se volvieron maliciosos en un solo ataque de mayo

Deja que tu agente toque producción.Quédate con las claves.

Sallyport guarda tus credenciales en una bóveda local y ejecuta las llamadas de API y los comandos SSH por el agente. Tú apruebas cada ejecución con un clic o Touch ID. No hay ningún comando que revele una clave guardada, ni tampoco botón de exportar.

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon · Apache-2.0 · Gratis · sin cuenta · sin nube

Hecho para ingenieros que dejan que Claude Code, Cursor o Codex toquen infraestructura real

Claude CodeCodexCursorWindsurfClineLangChainCrewAIOpenHandsGooseZed
Pruébalo

Aprueba desde donde ya estás

Esta clave exige aprobación en cada uso. La llamada espera tu decisión.

claude · ~/infra

sallyport · http.request

PATCH api.cloudflare.com/client/v4/zones/…/dns_records

key cloudflare · flagged approval per call

esperando aprobación...

Aprobación necesaria

http.request → api.cloudflare.com

Developer ID Application: Anthropic PBC

claude node zsh

Clave:cloudflarepor llamada
Haz clic en Aprobar para permitir la llamada.o pulsa A/D
El problema

Tu agente puede leer tus claves

Tokens de API en .env, claves SSH en disco, permisos OAuth en archivos de configuración. El agente y cada paquete que instala pueden leerlo todo, y un solo README envenenado basta para sacarlo por la puerta.

Secretos a la vista

Tokens en .env y variables del shell, claves SSH en disco, tokens OAuth en archivos de configuración. Los puede leer el agente, sus procesos secundarios y lo que sea que npm instaló hoy.

La inyección de prompts se convierte en robo

Una página o un README malicioso le dice al agente que envíe un token a otro sitio, y el agente obedece. Se creó para seguir instrucciones.

Te enteras por la factura

Sin una pasarela no queda registro de qué llamadas hizo el agente, adónde las envió ni qué llevaban. Las claves robadas aparecen semanas después, cuando le conviene a otro.

Esto no es hipotético

Mayo de 2026

Ataque a npm de TanStack

84 versiones maliciosas en 42 paquetes recopilaron credenciales de la nube, tokens de GitHub y claves SSH al instalarse, y luego se propagaron a través de los propios paquetes de sus víctimas.

Finales de 2025

Gusano Shai-Hulud

Paquetes npm comprometidos robaban secretos al instalarse y usaban las credenciales robadas para infectar la siguiente tanda de paquetes.

Agosto de 2025

Nx S1ngularity

Una herramienta de compilación envenenada rastreaba las máquinas de los desarrolladores en busca de secretos, probaba herramientas de IA locales y sacaba el botín a través de la CLI de GitHub.

Los tres recopilaron claves de variables de entorno y archivos en disco. Sallyport mantiene fuera de ambos las claves utilizables.

Tu agente no necesita las claves

El agente envía una solicitud: llama a esta API, ejecuta este comando en ese host. Sallyport adjunta la credencial dentro de la aplicación, ejecuta la llamada y devuelve el resultado. La clave nunca aparece en el entorno del agente, y un registro sellado muestra qué se ejecutó y quién lo aprobó.

El modelo de confianza

Escalera de decisión fija

Cada acción sube por la misma escalera compilada. No hay lenguaje de políticas que configurar mal ni motor de reglas que se pudra; una lista permitida opcional puede omitir la solicitud de sesión para las identidades de código en las que confías.

El modelo de confianza

1

puerta de la bóveda

La bóveda es absoluta

La bóveda empieza bloqueada. Secure Enclave y Touch ID protegen el acceso a sus datos. Hasta que la desbloqueas, Sallyport deniega todas las acciones.

2

claves por llamada

Las claves marcadas siempre piden confirmación

Una clave marcada con "Aprobación por llamada" exige un clic o Touch ID en cada uso, incluso dentro de una sesión aprobada.

3

puerta de sesión

Una aprobación por ejecución del agente

Un nuevo proceso de agente muestra una tarjeta con su autoridad de firma de código. La aprobación dura hasta que el proceso termina, la revocas o bloqueas la bóveda.

4

observación

Ejecuta y registra

Con la aprobación por sesión desactivada, las acciones se ejecutan sin tarjetas de sesión y permanecen en el registro.

Puerta de la bóveda, clave por llamada, puerta de sesión, observación.

Incluido

Todo viene en una sola app firmada

Una sola app firmada para Mac contiene la bóveda, las aprobaciones y el registro. No hay cuenta que crear ni servicio en la nube detrás.

Puerta de bóveda absoluta

Mientras está bloqueada, Sallyport deniega todas las acciones del agente y las operaciones de gestión salvo el estado.

Cifrado en reposo

La bóveda cifra nombres de claves, proveedores, hosts vinculados, inventario SSH, ajustes y valores secretos.

Procedencia del proceso

Cada tarjeta muestra la autoridad de firma de código y la cadena de procesos del solicitante, incluidos los procesos sin firmar.

Touch ID para los cambios

Los cambios de configuración pueden exigir Touch ID. Un clic sintético no satisface la solicitud biométrica.

Registro cifrado al escribir

Sallyport cifra las ejecuciones del agente y la actividad de cada llamada al escribirlas, y enlaza el texto cifrado mediante una cadena de hashes.

SSH que ve el comando

Sallyport ve el comando SSH completo, comprueba la clave del host y sella una grabación de la sesión. La clave privada permanece en la aplicación.

Modo observación

El modo observación elimina las tarjetas de sesión, pero mantiene la puerta de la bóveda, la aprobación por llamada y el registro.

Sin recuperación

La bóveda no permite exportar ni revelar datos y no tiene clave de recuperación. Si la pierdes, vuelve a emitir las credenciales con sus proveedores.

Canales

HTTP, SSH y MCP

El agente se conecta a Sallyport como un servidor MCP normal. Todas las acciones siguen la misma escalera y llegan al mismo registro.

API HTTP

http.request → api.github.com

La app hace la llamada HTTPS e inyecta la credencial solo durante la ejecución. Las redirecciones a otro host no la incluyen.

SSH

ssh.exec → deploy@prod-03

Un helper sin estado abre la conexión. La app gestiona las firmas SSH, fija las claves de host y sella una grabación de la sesión; la clave privada no entra en el helper.

Servidores MCP

github.create_issue

Ejecuta servidores MCP locales por stdio o remotos a través de la misma puerta. Sallyport sella y renueva los tokens OAuth 2.1.

En cifras

Lo que está en juego

84

versiones maliciosas de paquetes en un solo ataque de npm que cazaba credenciales

0

cuentas, servicios en la nube o telemetría: Sallyport se ejecuta por completo en tu Mac

1 toque

Touch ID aprueba una llamada marcada; un clic sintético no puede falsificarlo

~2 min

de brew install a tu primera llamada controlada

Límites

Lo que Sallyport no promete

A las herramientas de seguridad les encanta prometer de más, así que aquí dejamos nuestro límite por escrito.

Límites

Una sesión aprobada puede actuar mal

La aprobación de sesión autoriza el proceso, no el significado de cada solicitud. Usa la aprobación por llamada para las claves que exijan una revisión individual.

No detiene código nativo con tus permisos

Sallyport no es un antivirus. El código que se ejecuta con tus permisos puede atacar la app o el sistema operativo.

No revisa por ti

Las tarjetas muestran la autoridad de firma de código y la cadena de procesos del solicitante. Tú debes revisar la solicitud.

Preguntas frecuentes

Preguntas frecuentes

¿Qué licencia usa Sallyport?
Sallyport es gratis para descargar y usar. El núcleo es de código abierto bajo Apache-2.0. Los componentes empresariales previstos usarán una licencia comercial.
¿Dónde se guardan mis secretos?
En una bóveda local de tu Mac. Secure Enclave y Touch ID protegen el acceso a la clave de cifrado de la bóveda. Sallyport cifra los valores secretos y sus metadatos en reposo, y no sube los datos de la bóveda.
¿Envía datos a Sallyport?
No. No hay servicio en la nube, ni cuenta, ni telemetría. Sallyport funciona sin conexión salvo por los servicios a los que lo apuntes y el canal de actualizaciones.
¿Cuáles son los requisitos del sistema?
Un Mac con Apple Silicon y macOS 14 o posterior. Los Mac con Intel no son compatibles.
¿Qué ocurre mientras la bóveda está bloqueada?
Las acciones del agente se detienen. Las solicitudes de gestión solo devuelven el estado; todas las demás operaciones se deniegan. Touch ID desbloquea la bóveda. Al bloquearla se borran las sesiones y aprobaciones pendientes.
¿Funciona con Claude Code y otros agentes?
Cualquier cliente MCP puede usar el shim sp mcp incluido para acceder a http.request, ssh.exec y los servidores MCP upstream configurados.
¿Puede el agente ver mis claves?
No. No hay ningún comando que revele una credencial guardada, ni vía de exportación o recuperación. Una salvedad honesta: Sallyport devuelve las respuestas del servidor tal como llegan, así que si un servicio de destino devuelve un secreto en su respuesta, el agente ve esa respuesta.
¿Qué ocurre si pierdo el acceso a mi Mac?
No hay clave de recuperación. Reinicia la bóveda y vuelve a emitir las credenciales con sus proveedores.

Tu agente está a una inyección de prompts de tus claves.

Descarga gratis. Apple Silicon, macOS 14 o posterior. Sin cuenta, nunca.

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon

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