
Um pequeno CLI em Rust que remove segredos da sua área de transferência sob demanda.
Um pequeno CLI em Rust que remove segredos da sua área de transferência a pedido. Vincule um atalho de teclado, selecione texto, pressione a combinação — a área de transferência guarda uma versão censurada. O Ctrl+C / Ctrl+V normal nunca é intercetado.
Linux — um único comando, sem configuração adicional:
curl -sSf https://secretstripper.download/install.sh | bash
Combinação predefinida: Ctrl+Alt+X.
macOS — requer um auxiliar de atalho global de configuração única (skhd ou Hammerspoon). Consulte Configuração macOS para permissões e resolução de problemas.
brew install koekeishiya/formulae/skhd
curl -sSf https://secretstripper.download/install.sh | bash
# Grant skhd Accessibility: System Settings -> Privacy & Security -> Accessibility
skhd --restart-service
Combinação predefinida: Cmd+Shift+C.
Windows (PowerShell) — requer o AutoHotkey v2. Consulte Configuração Windows para o fluxo completo.
winget install AutoHotkey.AutoHotkey
iwr -useb https://secretstripper.download/install.ps1 | iex
Combinação predefinida: Ctrl+Alt+C.
A partir do crates.io (Rust) — aplicam-se os mesmos pré-requisitos por SO (skhd no macOS, AutoHotkey no Windows):
cargo install secret-stripper && secret-stripper init
A partir do código-fonte (git):
cargo install --git https://github.com/kalix127/secret-stripper.git --locked && secret-stripper init
Após a instalação, selecione texto e pressione a sua combinação. No Linux, a seleção PRIMARY é lida diretamente, pelo que pode omitir o Ctrl+C. Cole com Ctrl+V (Cmd+V no macOS).
Execute secret-stripper menu para ajustar definições, ou secret-stripper --help para todos os comandos.
Não existe forma de registar um atalho global verdadeiro no macOS sem instalação nem processo residente. O Secret Stripper permanece de execução única, por isso delega a captura de atalhos num de dois auxiliares bem conhecidos: skhd (leve, recomendado) ou Hammerspoon (mais pesado, scriptável). Se nenhum estiver instalado, init recorre à impressão de instruções de vinculação manuais.
Instalar o skhd via Homebrew:
brew install koekeishiya/formulae/skhd
Execute secret-stripper init. Ele escreve ~/.skhdrc, o LaunchAgent do launchd para a verificação diária de atualizações e o ficheiro de configuração. O resultado inclui uma linha "DE binding": OK se o skhd / Hammerspoon foi detetado, FAILED com sugestões de instalação caso contrário.
Conceda a permissão de Acessibilidade ao skhd. O skhd precisa disto para intercetar atalhos globais; caso contrário, captura silenciosamente nada. Abra Definições do Sistema -> Privacidade e Segurança -> Acessibilidade, clique em +, adicione /usr/local/bin/skhd e ative-o. Se o skhd já estava em execução, reinicie-o para que a nova permissão tenha efeito:
skhd --restart-service
Teste a combinação:
echo "[email protected]" | pbcopy
# Press your chord (default: Cmd+Shift+C)
pbpaste # expect: [REDACTED]
Alternativa com Hammerspoon: brew install --cask hammerspoon, abra-o uma vez para conceder Acessibilidade e depois execute secret-stripper init — ele escreve a vinculação em ~/.hammerspoon/init.lua em vez de ~/.skhdrc.
Combinação predefinida: Cmd+Shift+C. As aplicações macOS reivindicam frequentemente combinações com a tecla Cmd; portanto, se entrar em conflito com algo que usa (DevTools do navegador, Finder "Copy Path", etc.), reatribua a partir de secret-stripper menu -> Rebind Hotkey. Duas opções mais seguras se quiser planear: Cmd+Option+X ou Cmd+Ctrl+X.
O Windows não tem forma de registar um atalho global verdadeiro sem instalação. A mesma restrição que no macOS — o Secret Stripper delega a captura de atalhos no AutoHotkey v2 (o análogo do skhd no Windows). O AutoHotkey usa a API Win32 RegisterHotKey internamente e é o único mecanismo que fornece a combinação de forma fiável em janelas focadas, aplicações de ecrã inteiro e processos elevados. O AutoHotkey é obrigatório — init aborta com uma sugestão de instalação se não o encontrar.
Instalar o AutoHotkey via winget:
winget install AutoHotkey.AutoHotkey
O pacote instala o AutoHotkey v2 em C:\Program Files\AutoHotkey\v2\.
Execute secret-stripper init. Ele escreve %APPDATA%\secret-stripper\secret-stripper.ahk, coloca um .lnk de arranque para que o AHK relance o script em cada início de sessão e inicia imediatamente o processo AHK para que a combinação fique ativa sem terminar a sessão.
Teste a combinação:
Set-Clipboard "[email protected]"
# Press your chord (default: Ctrl+Alt+C)
Get-Clipboard # expect: [REDACTED]
Ctrl+Alt+<tecla> (opcionalmente com Shift); outras combinações são rejeitadas.Ctrl+C e depois a sua combinação).schtasks às 11:00..ahk e o .lnk de arranque. Os outros scripts AHK que esteja a executar não são afetados.Para a lista completa de categorias, níveis de gravidade e padrões, consulte DETECTION_COVERAGE.md.
Escolha como os segredos detetados são substituídos a partir de secret-stripper menu -> Estilo de Censura:
A mesma definição aplica-se ao acionamento por atalho, ao subcomando redact do pipeline e ao invólucro paste-guard para TUIs de IA.
Os segredos vivem frequentemente em capturas de ecrã, não apenas em texto — uma captura de terminal, um painel de configuração, um dashboard de API. Quando aciona o atalho e a área de transferência contém uma imagem em vez de texto, o Secret Stripper faz OCR à imagem, executa o mesmo detetor que usa para texto e pinta uma caixa preta sólida apenas sobre as palavras que contêm um segredo. A imagem censurada é escrita novamente na área de transferência. As partes limpas da imagem ficam intactas — a captura inteira nunca é escurecida.
Suportado apenas em Linux — tanto X11 como Wayland. No macOS e Windows, o atalho continua a fazer censura de texto; uma imagem na área de transferência fica intacta.
Quando há uma imagem na área de transferência, o atalho censura a imagem mesmo que tenha texto selecionado — portanto, screenshot -> hotkey simplesmente funciona.
Requer o CLI de OCR tesseract no seu PATH. É uma dependência opcional em tempo de execução: tudo o resto funciona sem ele.
sudo pacman -S tesseract tesseract-data-eng # Arch
sudo apt install tesseract-ocr # Debian / Ubuntu
sudo dnf install tesseract # Fedora
Falha de forma segura: se tesseract estiver ausente, a imagem não puder ser lida ou um segredo detetado não puder ser localizado, a área de transferência fica intacta e recebe uma notificação — a imagem original nunca é passada silenciosamente e nunca é apagada. O OCR torna este caminho mais lento do que o caminho de texto instantâneo (cerca de meio segundo a alguns segundos para uma captura completa), por isso aguarde a notificação antes de colar.
A censura de imagens está desativada por predefinição. Ative-a a partir de secret-stripper menu -> Definições de Deteção -> Censura de capturas de ecrã, ou defina enable_image_scan = true em config.toml.
secret-stripper init procura ferramentas de terminal de IA instaladas (Claude Code, Codex CLI, aider, Gemini CLI, Continue, opencode) e imprime um bloco de aliases de shell pronto a copiar. Cada alias encaminha a ferramenta através do paste-guard, um invólucro PTY que interceta colagens da área de transferência e censura segredos antes de chegarem ao prompt da IA — a digitação e a saída normal não são alteradas. Copie o trecho para a configuração do seu shell (~/.zshrc, ~/.bashrc, ~/.config/fish/config.fish ou o seu perfil PowerShell) e abra uma nova shell:
# ----------------------------------
alias claude='secret-stripper paste-guard -- claude'
alias codex='secret-stripper paste-guard -- codex'
# ----------------------------------
O Secret Stripper nunca escreve no seu shell rc por conta própria. Para deixar de encaminhar através do paste-guard, elimine o bloco entre as linhas de comentário tracejadas.
Âmbito. O paste-guard é um invólucro por processo — filtra apenas colagens no único comando em que o executou. O uso diário de ssh, psql, vim, kubectl, o prompt simples do shell, aplicações GUI, a área de transferência do sistema — tudo completamente intocado. Também pode adicionar aliases para ferramentas não-IA manualmente (demonstrações ao vivo com psql / mysql, gravações de ecrã) — envolver comandos-folha é aceitável, envolver um shell inteiro geralmente não é.
Também pode canalizar texto arbitrário através do mesmo motor:
cat secrets.log | secret-stripper redact > clean.log
Limitações. A colagem entre colchetes (bracketed paste) tem de ser suportada pelo seu terminal (todos os emuladores modernos suportam, incluindo o terminal integrado do VSCode e o passthrough do tmux); segredos digitados nunca são modificados, apenas os colados; cargas de colagem acima de 1 MiB passam sem censura.
Consulte CONTRIBUTING.md para as convenções de compilação, testes, lint e commits.
| SO | Estado | Backend de atalhos |
|---|
| Linux | ✅ Suportado | gsettings (GNOME / Cinnamon / Unity / Budgie / Pantheon), gsettings (esquema MATE), xfconf-query (XFCE), kwriteconfig + qdbus (KDE Plasma 5/6) |
| macOS | ✅ Suportado | skhd (~/.skhdrc) ou Hammerspoon (~/.hammerspoon/init.lua); instruções manuais se nenhum estiver instalado |
| Windows | ✅ Suportado | AutoHotkey v2 (%APPDATA%\secret-stripper\secret-stripper.ahk) — instale via winget install AutoHotkey.AutoHotkey |
| Categoria | Exemplos |
|---|
| 🔴 Segredos na Nuvem | chaves AWS, chaves da API Google, credenciais Azure, tokens OpenAI, chaves Stripe, chaves da API Heroku |
| 🔴 Tokens de Autenticação | tokens GitHub, tokens GitLab, tokens Slack, tokens Discord, JWTs, tokens bearer, tokens NPM |
| 🔴 Chaves Criptográficas | chaves privadas RSA/EC/OpenSSH, chaves privadas PGP, chaves públicas SSH |
| 🔴 PII | números de cartões de crédito, SSNs, números de telefone, endereços de e-mail, números de passaporte |
| 🟠 Cadeias de Ligação | PostgreSQL, MongoDB, Redis, MySQL, URLs JDBC com credenciais |
| 🟡 Heurística | strings invulgares, ficheiros env com segredos, JSON com campos de palavra-passe, conteúdo codificado em base64 |
| 🟢 Seguro | texto normal, e-mails, documentos — sem falsos alertas |
| Estilo | Saída para aws=AKIAIOSFODNN7EXAMPLE |
|---|
| Marcador (predefinido) | aws=[REDACTED] — usa uma string de marcador configurável (oito predefinições + personalizada) |
| Remover | aws= — remove os bytes correspondentes por completo |
| Com tipo | aws=[AWS_ACCESS_KEY_ID] — substitui cada segmento por uma etiqueta derivada do nome do padrão correspondente |
| Placeholder | aws=AKIAIOSFODNN7EXAMPLE — insere um valor de exemplo realista mas falso para o padrão correspondente (um e-mail torna-se [email protected], uma chave Stripe sk_test_4eC39HqLyjWDarjtT1zdp7dc) |