
Una piccola CLI in Rust che rimuove i segreti dagli appunti su richiesta.
Un piccolo CLI in Rust che rimuove i segreti dagli appunti su richiesta. Associa una scorciatoia da tastiera, evidenzia il testo, premi la combinazione - gli appunti contengono una versione oscurata. Il normale Ctrl+C / Ctrl+V non viene mai intercettato.
Linux - un solo comando, nessuna configurazione aggiuntiva:
curl -sSf https://secretstripper.download/install.sh | bash
Combinazione predefinita: Ctrl+Alt+X.
macOS - richiede un helper per la scorciatoia globale da configurare una sola volta (skhd o Hammerspoon). Consulta Configurazione macOS per permessi e risoluzione dei problemi.
brew install koekeishiya/formulae/skhd
curl -sSf https://secretstripper.download/install.sh | bash
# Grant skhd Accessibility: System Settings -> Privacy & Security -> Accessibility
skhd --restart-service
Combinazione predefinita: Cmd+Shift+C.
Windows (PowerShell) - richiede AutoHotkey v2. Consulta Configurazione Windows per la procedura completa.
winget install AutoHotkey.AutoHotkey
iwr -useb https://secretstripper.download/install.ps1 | iex
Combinazione predefinita: Ctrl+Alt+C.
Da crates.io (Rust) - valgono gli stessi prerequisiti per OS (skhd su macOS, AutoHotkey su Windows):
cargo install secret-stripper && secret-stripper init
Dal sorgente (git):
cargo install --git https://github.com/kalix127/secret-stripper.git --locked && secret-stripper init
Dopo l'installazione, evidenzia il testo e premi la tua combinazione. Su Linux la selezione PRIMARY viene letta direttamente, quindi puoi saltare il Ctrl+C. Incolla con Ctrl+V (Cmd+V su macOS).
Esegui secret-stripper menu per regolare le impostazioni, oppure secret-stripper --help per tutti i comandi.
| OS | Stato | Backend scorciatoie |
|---|---|---|
| Linux | ✅ Supportato | gsettings (GNOME / Cinnamon / Unity / Budgie / Pantheon), gsettings (MATE schema), xfconf-query (XFCE), kwriteconfig + qdbus (KDE Plasma 5/6) |
| macOS | ✅ Supportato | skhd (~/.skhdrc) o Hammerspoon (~/.hammerspoon/init.lua); istruzioni manuali se nessuno dei due è installato |
| Windows | ✅ Supportato | AutoHotkey v2 (%APPDATA%\secret-stripper\secret-stripper.ahk) - da installare con winget install AutoHotkey.AutoHotkey |
Non esiste un modo senza installazione per registrare una vera scorciatoia globale su macOS senza un processo residente. Secret Stripper stesso rimane one-shot, quindi delega la cattura della scorciatoia a uno dei due helper più noti: skhd (leggero, consigliato) o Hammerspoon (più pesante, scriptabile). Se nessuno dei due è installato, init ripiega stampando istruzioni per il binding manuale.
Installa skhd con Homebrew:
brew install koekeishiya/formulae/skhd
Esegui secret-stripper init. Scrive ~/.skhdrc, il LaunchAgent di launchd per il controllo giornaliero degli aggiornamenti e il file di configurazione. L'output include una riga "DE binding": OK se è stato rilevato skhd / Hammerspoon, FAILED con suggerimenti di installazione in caso contrario.
Concedi a skhd il permesso di Accessibilità. skhd ne ha bisogno per intercettare le scorciatoie globali; in caso contrario non cattura nulla, in silenzio. Apri Impostazioni di Sistema -> Privacy e Sicurezza -> Accessibilità, clicca +, aggiungi /usr/local/bin/skhd e attivalo. Se skhd era già in esecuzione, riavvialo affinché il nuovo permesso abbia effetto:
skhd --restart-service
Testa la combinazione:
echo "[email protected]" | pbcopy
# Press your chord (default: Cmd+Shift+C)
pbpaste # expect: [REDACTED]
Alternativa Hammerspoon: brew install --cask hammerspoon, aprilo una volta per concedere l'Accessibilità, poi esegui secret-stripper init - scrive il binding in ~/.hammerspoon/init.lua invece di ~/.skhdrc.
Combinazione predefinita: Cmd+Shift+C. Le app macOS rivendicano spesso le combinazioni con modificatore Cmd, quindi se è in conflitto con qualcosa che usi (DevTools del browser, Finder "Copia percorso", ecc.), riassociala da secret-stripper menu -> Rebind Hotkey. Due opzioni più sicure se vuoi pianificare in anticipo: Cmd+Option+X o Cmd+Ctrl+X.
Windows non ha un modo senza installazione per registrare una vera scorciatoia globale. Stesso vincolo di macOS - Secret Stripper delega la cattura della scorciatoia ad AutoHotkey v2 (l'analogo Windows di skhd). AutoHotkey usa internamente l'API Win32 RegisterHotKey ed è l'unico meccanismo che consegna la combinazione in modo affidabile tra finestre attive, app a schermo intero e processi elevati. AutoHotkey è obbligatorio - init si interrompe con un suggerimento di installazione se non riesce a trovarlo.
Installa AutoHotkey con winget:
winget install AutoHotkey.AutoHotkey
Il pacchetto installa AutoHotkey v2 in C:\Program Files\AutoHotkey\v2\.
Esegui secret-stripper init. Scrive %APPDATA%\secret-stripper\secret-stripper.ahk, inserisce un .lnk all'avvio così AHK rilancia lo script a ogni accesso e avvia subito il processo AHK, così la combinazione è attiva senza dover fare logout.
Testa la combinazione:
Set-Clipboard "[email protected]"
# Press your chord (default: Ctrl+Alt+C)
Get-Clipboard # expect: [REDACTED]
Ctrl+Alt+<key> (opzionalmente con Shift); le altre combinazioni vengono rifiutate.Ctrl+C, poi la tua combinazione).schtasks alle 11:00..ahk e il .lnk di avvio. Gli altri script AHK che hai in esecuzione non vengono toccati.| Categoria | Esempi |
|---|---|
| 🔴 Segreti Cloud | Chiavi AWS, chiavi API Google, credenziali Azure, token OpenAI, chiavi Stripe, chiavi API Heroku |
| 🔴 Token di autenticazione | Token GitHub, token GitLab, token Slack, token Discord, JWT, bearer token, token NPM |
| 🔴 Chiavi crittografiche | Chiavi private RSA/EC/OpenSSH, chiavi private PGP, chiavi pubbliche SSH |
| 🔴 PII | Numeri di carta di credito, SSN, numeri di telefono, indirizzi email, numeri di passaporto |
| 🟠 Stringhe di connessione | PostgreSQL, MongoDB, Redis, MySQL, URL JDBC con credenziali |
| 🟡 Euristica | Stringhe insolite, file env con segreti, JSON con campi password, contenuto codificato in base64 |
| 🟢 Sicuro | Testo normale, email, documenti - nessun falso allarme |
Per l'elenco completo di categorie, livelli di gravità e pattern, vedi DETECTION_COVERAGE.md.
Scegli come vengono sostituiti i segreti rilevati da secret-stripper menu -> Redaction Style:
| Stile | Output per aws=AKIAIOSFODNN7EXAMPLE |
|---|---|
| Marker (predefinito) | aws=[REDACTED] - usa una stringa marcatore configurabile (otto preimpostazioni + personalizzata) |
| Drop | aws= - rimuove completamente i byte corrispondenti |
| Typed | aws=[AWS_ACCESS_KEY_ID] - sostituisce ogni intervallo con un tag derivato dal nome del pattern corrispondente |
| Placeholder | aws=AKIAIOSFODNN7EXAMPLE - inserisce un valore campione realistico ma fittizio per il pattern corrispondente (un'email diventa [email protected], una chiave Stripe sk_test_4eC39HqLyjWDarjtT1zdp7dc) |
La stessa impostazione si applica all'attivazione tramite scorciatoia, al sottocomando di pipeline redact e al wrapper per TUI AI paste-guard.
I segreti si trovano spesso negli screenshot, non solo nel testo: una cattura del terminale, un pannello di configurazione, una dashboard API. Quando attivi la scorciatoia e gli appunti contengono un'immagine invece del testo, Secret Stripper esegue l'OCR sull'immagine, applica lo stesso rilevatore usato per il testo e disegna una casella nera piena solo sulle parole che contengono un segreto. L'immagine oscurata viene riscritta negli appunti. Le parti pulite dell'immagine non vengono toccate: lo screenshot intero non viene mai annerito.
Supportato solo su Linux - sia X11 che Wayland. Su macOS e Windows la scorciatoia esegue comunque l'oscuramento del testo; un'immagine negli appunti viene lasciata intatta.
Quando negli appunti c'è un'immagine, la scorciatoia oscura l'immagine anche se hai del testo evidenziato - quindi screenshot -> hotkey funziona e basta.
Richiede la CLI OCR tesseract nel tuo PATH. È una dipendenza runtime opzionale: tutto il resto funziona senza.
sudo pacman -S tesseract tesseract-data-eng # Arch
sudo apt install tesseract-ocr # Debian / Ubuntu
sudo dnf install tesseract # Fedora
Il sistema è fail-closed: se tesseract manca, l'immagine non può essere letta o un segreto rilevato non può essere localizzato, gli appunti vengono lasciati intatti e ricevi una notifica - l'immagine originale non viene mai fatta passare silenziosamente e mai cancellata. L'OCR rende questo percorso più lento del percorso testuale istantaneo (da circa mezzo secondo a un paio di secondi per uno screenshot completo), quindi attendi la notifica prima di incollare.
L'oscuramento delle immagini è disattivato per impostazione predefinita. Attivalo da secret-stripper menu -> Detection Settings -> Screenshot redaction, oppure imposta enable_image_scan = true in config.toml.
secret-stripper init cerca gli strumenti AI da terminale installati (Claude Code, Codex CLI, aider, Gemini CLI, Continue, opencode) e stampa un blocco di alias di shell pronto da copiare. Ogni alias instrada lo strumento attraverso paste-guard, un wrapper PTY che intercetta gli incollati dagli appunti e oscura i segreti prima che raggiungano il prompt dell'AI - la digitazione e l'output normale non vengono toccati. Copia lo snippet nella configurazione della tua shell (~/.zshrc, ~/.bashrc, ~/.config/fish/config.fish, o nel tuo profilo PowerShell) e apri una nuova shell:
# ----------------------------------
alias claude='secret-stripper paste-guard -- claude'
alias codex='secret-stripper paste-guard -- codex'
# ----------------------------------
Secret Stripper non scrive mai da solo nel tuo rc di shell. Per smettere di instradare attraverso paste-guard, elimina il blocco tra le righe di commento tratteggiate.
Ambito. paste-guard è un wrapper per processo - filtra solo gli incollati all'interno del singolo comando su cui lo hai eseguito. L'uso quotidiano di ssh, psql, vim, kubectl, il semplice prompt della shell, le app GUI, gli appunti di sistema - tutto completamente intatto. Puoi anche aggiungere alias manualmente per strumenti non AI (demo dal vivo con psql / mysql, registrazioni dello schermo) - avvolgere comandi foglia va bene, avvolgere un'intera shell di solito no.
Puoi anche passare testo arbitrario attraverso lo stesso motore tramite pipe:
cat secrets.log | secret-stripper redact > clean.log
Limitazioni. Il bracketed paste deve essere supportato dal tuo terminale (ogni emulatore moderno lo supporta, incluso il terminale integrato di VSCode e il passthrough di tmux); i segreti digitati non vengono mai modificati, solo quelli incollati; i payload incollati oltre 1 MiB passano senza essere oscurati.
Vedi CONTRIBUTING.md per le convenzioni di build, test, lint e commit.