Laissez votre agent toucher à la prod.Gardez les clés.
Sallyport conserve vos identifiants dans un coffre-fort local et exécute les appels d'API et les commandes SSH à la place de l'agent. Vous approuvez chaque exécution d'un clic ou avec Touch ID. Aucune commande ne révèle une clé stockée, et il n'existe pas non plus de bouton d'export.
brew install --cask olegsotnikov/tap/sallyportmacOS 14+ · Apple Silicon · Apache-2.0 · Gratuit · sans compte · sans cloud
Conçu pour les ingénieurs qui laissent Claude Code, Cursor ou Codex toucher à une véritable infrastructure
L'approbation là où vous êtes déjà
Cette clé exige une approbation à chaque utilisation. L'appel attend votre décision.
⏺ sallyport · http.request
PATCH api.cloudflare.com/client/v4/zones/…/dns_records
⎿ key cloudflare · flagged approval per call
⎿ en attente d'approbation…
Approbation requise
http.request → api.cloudflare.com
claude ← node ← zsh
Votre agent peut lire vos clés en ce moment même
Jetons d'API dans .env, clés SSH sur le disque, autorisations OAuth dans les fichiers de configuration. L'agent et chaque paquet qu'il installe peuvent tout lire, et un simple README empoisonné suffit à les faire sortir.
Des secrets en pleine vue
Jetons dans .env et les variables du shell, clés SSH sur le disque, jetons OAuth dans les fichiers de configuration. Lisibles par l'agent, ses processus enfants et tout ce que npm a installé aujourd'hui.
L'injection de prompt devient un vol
Une page ou un README malveillant demande à l'agent d'envoyer un jeton vers une nouvelle destination, et l'agent obéit. Il est fait pour suivre les instructions.
Vous l'apprenez sur la facture
Sans passerelle, aucune trace des appels effectués par l'agent, de leur destination ou de leur contenu. Les clés volées refont surface des semaines plus tard, au moment choisi par quelqu'un d'autre.
Trois qui ont déjà eu lieu
Mai 2026
Attaque npm TanStack
84 versions malveillantes réparties sur 42 paquets ont récolté des identifiants cloud, des jetons GitHub et des clés SSH dès l'installation, puis se sont propagées via les propres paquets de leurs victimes.
Fin 2025
Ver Shai-Hulud
Des paquets npm compromis volaient des secrets à l'installation et utilisaient les identifiants dérobés pour infecter la vague suivante de paquets.
Août 2025
Nx S1ngularity
Un outil de build empoisonné fouillait les machines des développeurs à la recherche de secrets, sollicitait les outils d'IA locaux et exfiltrait le butin via la CLI GitHub.
Les trois ont récolté des clés dans les variables d'environnement et les fichiers sur le disque. Sallyport tient les clés exploitables hors de portée des deux.
Votre agent n'a pas besoin des clés
L'agent envoie une requête : appeler cette API, exécuter cette commande sur cet hôte. Sallyport joint l'identifiant dans l'application, exécute l'appel et renvoie le résultat. La clé n'apparaît jamais dans l'environnement de l'agent, et un journal scellé montre ce qui s'est exécuté et qui l'a approuvé.
Chaîne de décision fixe
Chaque action gravit la même chaîne de décision compilée. Aucun langage de règles à mal configurer, aucun moteur de règles qui se dégrade ; une allowlist facultative peut ignorer l'invite de session pour les identités de code de confiance.
Le modèle de confiance
sas du coffre-fort
Le coffre-fort est absolu
Le coffre-fort démarre verrouillé. La Secure Enclave et Touch ID protègent l'accès à ses données. Jusqu'au déverrouillage, Sallyport refuse toutes les actions.
clés par appel
Les clés marquées demandent toujours confirmation
Une clé marquée "Approval per call" exige un clic ou Touch ID à chaque utilisation, y compris dans une session approuvée.
sas de session
Une approbation par exécution d'agent
Un nouveau processus d'agent affiche une carte avec son autorité de signature de code. L'approbation reste valide jusqu'à la fin du processus, sa révocation ou le verrouillage du coffre-fort.
observer
Exécuter et enregistrer
Quand l'approbation par session est désactivée, les actions s'exécutent sans carte de session et restent dans le journal.
Porte du coffre, clé approuvée à chaque appel, porte de session, observation. S'il faut traduire cela pour un document d'achat : privilèges permanents nuls pour une identité non humaine, accès juste-à-temps, et un humain dans la boucle.
Tout tient dans une seule app signée
Une seule app Mac signée réunit le coffre-fort, les approbations et le journal. Aucun compte à créer, aucun service cloud derrière.
Sas de coffre-fort absolu
Tant que le coffre-fort est verrouillé, Sallyport refuse chaque action d'agent et toutes les demandes de gestion sauf le statut.
Chiffré au repos
Le coffre-fort chiffre les noms de clés, les fournisseurs, les liaisons d'hôtes, l'inventaire SSH, les réglages et les valeurs secrètes.
Provenance du processus
Chaque carte affiche l'autorité de signature de code de l'appelant et la chaîne de processus parents, y compris tout processus non signé.
Touch ID pour les modifications
Les changements de configuration peuvent exiger Touch ID. Un clic synthétique ne peut pas valider l'invite biométrique.
Journal à écriture aveugle
Sallyport chiffre les exécutions d'agents et les activités à l'écriture, puis relie le texte chiffré par une chaîne de hachage.
Un SSH qui voit la commande
Sallyport voit la commande SSH complète, vérifie la clé de l'hôte et scelle un enregistrement de la session. La clé privée reste dans l'application.
Mode observation
Le mode observation retire les cartes de session, mais conserve le verrou du coffre-fort, l'approbation par appel et le journal.
Aucune récupération
Le coffre-fort n'a ni export, ni affichage, ni clé de récupération. Si vous le perdez, réémettez les identifiants stockés chez leurs fournisseurs.
HTTP, SSH et MCP
Votre agent se connecte à Sallyport comme à un serveur MCP ordinaire. Tout ce qu'il fait suit la même échelle vers le même journal.
API HTTP
http.request → api.github.comL'app effectue l'appel HTTPS et injecte les identifiants uniquement pendant l'exécution. Les redirections vers un autre hôte ne les transmettent pas.
SSH
ssh.exec → deploy@prod-03Un assistant sans état ouvre la connexion. L'app signe les demandes SSH, épingle les clés d'hôte et scelle un enregistrement de session ; la clé privée n'entre pas dans l'assistant.
Serveurs MCP
github.create_issueFaites passer les serveurs MCP locaux en stdio ou distants par le même sas. Sallyport scelle et renouvelle les jetons OAuth 2.1.
Ce qui est en jeu
84
versions de paquets malveillantes dans une seule attaque npm partie à la chasse aux identifiants
0
compte, service cloud ou télémétrie : Sallyport s'exécute entièrement sur votre Mac
1 geste
Touch ID approuve un appel marqué ; un clic synthétique ne peut pas le simuler
~2 min
de brew install à votre premier appel filtré
Lisez le code qui détient vos clés
Le coffre, la porte d'approbation, le journal et l'exécuteur qui touche vos identifiants sont publics sous Apache-2.0. Clonez-le et suivez une clé depuis votre Touch ID jusqu'au câble.
Apache-2.0 · l'intégralité
Auditez-le vous-même
Chaque ligne qui stocke, déverrouille ou dépense un identifiant est sur GitHub. Lisez les parties qui vous inquiètent, puis décidez.
Rien ne téléphone à la maison
Pas de compte, pas de service cloud, pas de télémétrie. Sallyport parle aux hôtes que vous lui désignez et à personne d'autre.
À vous pour de bon
Apache-2.0 veut dire : forkez, patchez, déployez en interne. Votre copie continue de tourner quoi que nous fassions ensuite.
Questions fréquentes
Sous quelle licence Sallyport est-il publié ?
Où résident mes secrets ?
Fait-il des remontées de données ?
Quelle est la configuration requise ?
Que se passe-t-il quand le coffre-fort est verrouillé ?
Fonctionne-t-il avec Claude Code et d'autres agents ?
Puis-je lancer Claude Code avec --dangerously-skip-permissions ?
Est-il prudent d'installer un serveur MCP publié en ligne ?
Quelle différence avec HashiCorp Vault ou la CLI 1Password ?
L'agent peut-il un jour voir mes clés ?
Et si je perds l'accès à mon Mac ?
Votre agent n'est qu'à une injection de prompt de vos clés.
Téléchargement gratuit. Apple Silicon, macOS 14 ou plus récent. Aucun compte, jamais.
brew install --cask olegsotnikov/tap/sallyportmacOS 14+ · Apple Silicon