
Un petit CLI Rust qui supprime les secrets de votre presse-papiers à la demande.
Un petit CLI Rust qui nettoie vos secrets du presse-papiers à la demande. Liez une touche de raccourci, sélectionnez du texte, pressez la combinaison — le presse-papiers contient une version expurgée. Le Ctrl+C / Ctrl+V normal n'est jamais intercepté.
Linux — une seule commande, aucune configuration supplémentaire :
curl -sSf https://secretstripper.download/install.sh | bash
Combinaison par défaut : Ctrl+Alt+X.
macOS — nécessite un assistant de touche globale ponctuel (skhd ou Hammerspoon). Voir Configuration macOS pour les autorisations et le dépannage.
brew install koekeishiya/formulae/skhd
curl -sSf https://secretstripper.download/install.sh | bash
# Accorder l'accessibilité à skhd : Réglages Système -> Confidentialité et Sécurité -> Accessibilité
skhd --restart-service
Combinaison par défaut : Cmd+Shift+C.
Windows (PowerShell) — nécessite AutoHotkey v2. Voir Configuration Windows pour le processus complet.
winget install AutoHotkey.AutoHotkey
iwr -useb https://secretstripper.download/install.ps1 | iex
Combinaison par défaut : Ctrl+Alt+C.
Depuis crates.io (Rust) — mêmes prérequis par OS (skhd sur macOS, AutoHotkey sur Windows) :
cargo install secret-stripper && secret-stripper init
Depuis les sources (git) :
cargo install --git https://github.com/kalix127/secret-stripper.git --locked && secret-stripper init
Après l'installation, sélectionnez du texte et pressez votre combinaison. Sous Linux, la sélection PRIMARY est lue directement, vous pouvez donc ignorer le Ctrl+C. Collez avec Ctrl+V (Cmd+V sur macOS).
Exécutez secret-stripper menu pour ajuster les réglages, ou secret-stripper --help pour toutes les commandes.
Il n'existe aucun moyen d'installation zéro pour enregistrer une vraie touche globale sur macOS sans un processus résident. Secret Stripper reste ponctuel, donc il délègue la capture de la combinaison à l'un des deux assistants bien connus : skhd (léger, recommandé) ou Hammerspoon (plus lourd, scriptable). Si aucun n'est installé, init revient à afficher des instructions de liaison manuelles.
Installer skhd via Homebrew :
brew install koekeishiya/formulae/skhd
Exécuter secret-stripper init. Il écrit ~/.skhdrc, le LaunchAgent launchd pour la vérification quotidienne des mises à jour, et le fichier de configuration. La sortie inclut une ligne « DE binding » : OK si skhd / Hammerspoon a été détecté, FAILED avec des conseils d'installation si ce n'est pas le cas.
Accorder l'autorisation d'accessibilité à skhd. skhd en a besoin pour intercepter les touches globales, sinon il ne capture rien en silence. Ouvrez Réglages Système -> Confidentialité et Sécurité -> Accessibilité, cliquez sur +, ajoutez /usr/local/bin/skhd et activez le bouton. Si skhd était déjà en cours d'exécution, redémarrez-le pour que la nouvelle autorisation prenne effet :
skhd --restart-service
Tester la combinaison :
echo "[email protected]" | pbcopy
# Pressez votre combinaison (par défaut : Cmd+Shift+C)
pbpaste # attendu : [REDACTED]
Alternative Hammerspoon : brew install --cask hammerspoon, ouvrez-le une fois pour accorder l'Accessibilité, puis exécutez secret-stripper init — il écrit la liaison dans ~/.hammerspoon/init.lua au lieu de ~/.skhdrc.
Combinaison par défaut : Cmd+Shift+C. Les applications macOS revendiquent souvent les combinaisons avec Cmd, donc si cela entre en conflit avec quelque chose que vous utilisez (DevTools du navigateur, Finder « Copier le chemin », etc.), changez-la depuis secret-stripper menu -> Rebind Hotkey. Deux options plus sûres si vous voulez planifier à l'avance : Cmd+Option+X ou Cmd+Ctrl+X.
Windows n'a aucun moyen d'installation zéro pour enregistrer une vraie touche globale. Même contrainte que macOS — Secret Stripper délègue la capture de la combinaison à AutoHotkey v2 (l'équivalent Windows de skhd). AutoHotkey utilise l'API Win32 RegisterHotKey en interne et est le seul mécanisme qui délivre la combinaison de manière fiable à travers les fenêtres actives, les applications plein écran et les processus élevés. AutoHotkey est requis — init abandonne avec un conseil d'installation s'il ne le trouve pas.
Installer AutoHotkey via winget :
winget install AutoHotkey.AutoHotkey
Le paquet installe AutoHotkey v2 dans C:\Program Files\AutoHotkey\v2\.
Exécuter secret-stripper init. Il écrit %APPDATA%\secret-stripper\secret-stripper.ahk, place un raccourci .lnk au démarrage pour que AHK relance le script à chaque connexion, et démarre immédiatement le processus AHK pour que la combinaison soit active sans déconnexion.
Tester la combinaison :
Set-Clipboard "[email protected]"
# Pressez votre combinaison (par défaut : Ctrl+Alt+C)
Get-Clipboard # attendu : [REDACTED]
Ctrl+Alt+<touche> (éventuellement avec Shift) ; les autres combinaisons sont rejetées.Ctrl+C, puis votre combinaison).schtasks quotidienne à 11h00..ahk et le raccourci .lnk de démarrage. Les autres scripts AHK que vous exécutez sont intacts.Pour la liste complète des catégories, des niveaux de gravité et des motifs, voir DETECTION_COVERAGE.md.
Choisissez comment les secrets détectés sont remplacés depuis secret-stripper menu -> Style d'expurgation :
Le même paramètre s'applique au déclencheur de combinaison, à la sous-commande du pipeline redact et au wrapper paste-guard pour les TUIs IA.
Les secrets vivent souvent dans les captures d'écran, pas seulement dans le texte — une capture de terminal, un panneau de configuration, un tableau de bord API. Lorsque vous déclenchez la combinaison et que le presse-papiers contient une image au lieu de texte, Secret Stripper OCR l'image, exécute le même détecteur que pour le texte, et peint une boîte noire pleine sur uniquement les mots qui contiennent un secret. L'image expurgée est réécrite dans le presse-papiers. Les parties propres de l'image sont laissées intactes — la capture d'écran entière n'est jamais noircie.
Supporté uniquement sur Linux — à la fois X11 et Wayland. Sur macOS et Windows, la combinaison effectue toujours l'expurgation de texte ; une image du presse-papiers est laissée intacte.
Lorsqu'une image est dans le presse-papiers, la combinaison expurge l'image même si vous avez du texte sélectionné — donc capture d'écran -> combinaison fonctionne simplement.
Il nécessite le CLI OCR tesseract dans votre PATH. C'est une dépendance d'exécution optionnelle : tout le reste fonctionne sans elle.
sudo pacman -S tesseract tesseract-data-eng # Arch
sudo apt install tesseract-ocr # Debian / Ubuntu
sudo dnf install tesseract # Fedora
Il échoue en sécurité : si tesseract est manquant, l'image ne peut pas être lue, ou un secret détecté ne peut pas être localisé, le presse-papiers est laissé intact et vous recevez une notification — l'image originale n'est jamais transmise silencieusement et jamais effacée. L'OCR rend ce chemin plus lent que le chemin texte instantané (environ une demi-seconde à quelques secondes pour une capture d'écran complète), alors attendez la notification avant de coller.
L'expurgation d'image est désactivée par défaut. Activez-la depuis secret-stripper menu -> Paramètres de détection -> Expurgation de capture d'écran, ou définissez enable_image_scan = true dans config.toml.
secret-stripper init recherche les outils terminaux IA installés (Claude Code, Codex CLI, aider, Gemini CLI, Continue, opencode) et affiche un bloc d'alias shell prêt à copier. Chaque alias achemine l'outil via paste-guard, un wrapper PTY qui intercepte les collages du presse-papiers et expurge les secrets avant qu'ils n'atteignent l'invite de l'IA — la frappe et la sortie normale ne sont pas touchées. Copiez l'extrait dans votre configuration shell (~/.zshrc, ~/.bashrc, ~/.config/fish/config.fish, ou votre profil PowerShell) et ouvrez un nouveau shell :
# ----------------------------------
alias claude='secret-stripper paste-guard -- claude'
alias codex='secret-stripper paste-guard -- codex'
# ----------------------------------
Secret Stripper n'écrit jamais lui-même dans votre fichier rc shell. Pour arrêter de passer par paste-guard, supprimez le bloc entre les lignes de commentaires en pointillés.
Portée. paste-guard est un wrapper par processus — il filtre uniquement les collages dans la une commande sur laquelle vous l'avez exécuté. L'utilisation quotidienne de ssh, psql, vim, kubectl, l'invite shell nue, les applications GUI, le presse-papiers système — tout reste complètement intact. Vous pouvez également ajouter des alias pour des outils non IA à la main (démonstrations en direct avec psql / mysql, enregistrements d'écran) — envelopper des commandes feuilles est acceptable, envelopper un shell entier ne l'est généralement pas.
Vous pouvez aussi rediriger du texte arbitraire via le même moteur :
cat secrets.log | secret-stripper redact > clean.log
Limitations. Le collage entre crochets (bracketed paste) doit être supporté par votre terminal (tous les émulateurs modernes le font, y compris le terminal intégré de VSCode et le passage tmux) ; les secrets tapés ne sont jamais modifiés, seuls ceux collés ; les charges utiles de collage au-dessus de 1 Mio passent sans être expurgées.
Voir CONTRIBUTING.md pour les conventions de build, test, lint et commit.
| OS | Statut | Moteur de touche de raccourci |
|---|
| Linux | ✅ Supporté | gsettings (GNOME / Cinnamon / Unity / Budgie / Pantheon), gsettings (schéma MATE), xfconf-query (XFCE), kwriteconfig + qdbus (KDE Plasma 5/6) |
| macOS | ✅ Supporté | skhd (~/.skhdrc) ou Hammerspoon (~/.hammerspoon/init.lua) ; instructions manuelles si aucun n'est installé |
| Windows | ✅ Supporté | AutoHotkey v2 (%APPDATA%\secret-stripper\secret-stripper.ahk) — installer via winget install AutoHotkey.AutoHotkey |
| Catégorie | Exemples |
|---|
| 🔴 Secrets cloud | Clés AWS, clés API Google, identifiants Azure, tokens OpenAI, clés Stripe, clés API Heroku |
| 🔴 Tokens d'authentification | Tokens GitHub, tokens GitLab, tokens Slack, tokens Discord, JWT, jetons porteurs, tokens NPM |
| 🔴 Clés cryptographiques | Clés privées RSA/EC/OpenSSH, clés privées PGP, clés publiques SSH |
| 🔴 Données personnelles (PII) | Numéros de carte de crédit, numéros de sécurité sociale, numéros de téléphone, adresses e-mail, numéros de passeport |
| 🟠 Chaînes de connexion | PostgreSQL, MongoDB, Redis, MySQL, URLs JDBC avec identifiants |
| 🟡 Heuristique | Chaînes inhabituelles, fichiers d'environnement avec secrets, JSON avec champs de mot de passe, contenu encodé en base64 |
| 🟢 Sûr | Texte normal, e-mails, documents — aucune fausse alerte |
| Style | Sortie pour aws=AKIAIOSFODNN7EXAMPLE |
|---|
| Marqueur (par défaut) | aws=[REDACTED] — utilise une chaîne de marqueur configurable (huit préréglages + personnalisé) |
| Suppression | aws= — supprime entièrement les octets correspondants |
| Typé | aws=[AWS_ACCESS_KEY_ID] — remplace chaque zone par une balise dérivée du nom du motif correspondant |
| Espace réservé | aws=AKIAIOSFODNN7EXAMPLE — échange une valeur factice réaliste mais fausse pour le motif correspondant (un e-mail devient [email protected], une clé Stripe sk_test_4eC39HqLyjWDarjtT1zdp7dc) |