
Una pequeña CLI en Rust que elimina secretos de tu portapapeles bajo demanda.
Un pequeño CLI de Rust que elimina secretos de tu portapapeles bajo demanda. Vincula una tecla de acceso rápido, resalta texto, pulsa la combinación: el portapapeles contiene una versión redactada. El Ctrl+C / Ctrl+V normal nunca se intercepta.
Linux - un solo comando, sin configuración adicional:
curl -sSf https://secretstripper.download/install.sh | bash
Combinación predeterminada: Ctrl+Alt+X.
macOS - necesita un ayudante de tecla de acceso rápido global de una sola vez (skhd o Hammerspoon). Consulta Configuración de macOS para permisos y solución 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
Combinación predeterminada: Cmd+Shift+C.
Windows (PowerShell) - necesita AutoHotkey v2. Consulta Configuración de Windows para el flujo completo.
winget install AutoHotkey.AutoHotkey
iwr -useb https://secretstripper.download/install.ps1 | iex
Combinación predeterminada: Ctrl+Alt+C.
Desde crates.io (Rust) - se aplican los mismos requisitos por SO (skhd en macOS, AutoHotkey en Windows):
cargo install secret-stripper && secret-stripper init
Desde el código fuente (git):
cargo install --git https://github.com/kalix127/secret-stripper.git --locked && secret-stripper init
Tras la instalación, resalta texto y pulsa tu combinación. En Linux la selección PRIMARY se lee directamente, así que puedes omitir el Ctrl+C. Pega con Ctrl+V (Cmd+V en macOS).
Ejecuta secret-stripper menu para ajustar la configuración, o secret-stripper --help para todos los comandos.
No existe una forma de instalación cero para registrar una tecla de acceso rápido realmente global en macOS sin un proceso residente. Secret Stripper en sí mismo se ejecuta una sola vez, por lo que delega la captura de la tecla de acceso rápido en uno de dos ayudantes conocidos: skhd (ligero, recomendado) o Hammerspoon (más pesado, programable). Si ninguno está instalado, init recurre a imprimir instrucciones de vinculación manuales.
Instala skhd mediante Homebrew:
brew install koekeishiya/formulae/skhd
Ejecuta secret-stripper init. Escribe ~/.skhdrc, el LaunchAgent de launchd para la comprobación diaria de actualizaciones y el archivo de configuración. La salida incluye una línea "DE binding": OK si detectó skhd / Hammerspoon, FAILED con pistas de instalación si no.
Concede a skhd el permiso de Accesibilidad. skhd lo necesita para interceptar teclas de acceso rápido globales; de lo contrario no captura nada silenciosamente. Abre Ajustes del Sistema -> Privacidad y seguridad -> Accesibilidad, haz clic en +, añade /usr/local/bin/skhd y actívalo. Si skhd ya estaba en ejecución, reinícialo para que el nuevo permiso surta efecto:
skhd --restart-service
Prueba la combinación:
echo "[email protected]" | pbcopy
# Press your chord (default: Cmd+Shift+C)
pbpaste # expect: [REDACTED]
Alternativa con Hammerspoon: brew install --cask hammerspoon, ábrelo una vez para conceder Accesibilidad y luego ejecuta secret-stripper init; escribe la vinculación en ~/.hammerspoon/init.lua en lugar de ~/.skhdrc.
Combinación predeterminada: Cmd+Shift+C. Las aplicaciones de macOS suelen reclamar combinaciones con el modificador Cmd, así que si entra en conflicto con algo que uses (DevTools del navegador, «Copy Path» del Finder, etc.), vuelve a vincularla desde secret-stripper menu -> Rebind Hotkey. Dos opciones más seguras si quieres planificar con antelación: Cmd+Option+X o Cmd+Ctrl+X.
Windows no tiene una forma de instalación cero para registrar una tecla de acceso rápido realmente global. La misma limitación que macOS: Secret Stripper delega la captura de la tecla de acceso rápido en AutoHotkey v2 (el análogo de skhd en Windows). AutoHotkey utiliza la API Win32 RegisterHotKey internamente y es el único mecanismo que entrega la combinación de forma fiable en ventanas enfocadas, aplicaciones a pantalla completa y procesos elevados. AutoHotkey es obligatorio: init se aborta con una pista de instalación si no puede encontrarlo.
Instala AutoHotkey mediante winget:
winget install AutoHotkey.AutoHotkey
El paquete instala AutoHotkey v2 en C:\Program Files\AutoHotkey\v2\.
Ejecuta secret-stripper init. Escribe %APPDATA%\secret-stripper\secret-stripper.ahk, coloca un .lnk de inicio para que AHK vuelva a lanzar el script en cada inicio de sesión e inicia el proceso de AHK inmediatamente para que la combinación esté activa sin cerrar sesión.
Prueba la combinación:
Set-Clipboard "[email protected]"
# Press your chord (default: Ctrl+Alt+C)
Get-Clipboard # expect: [REDACTED]
Ctrl+Alt+<tecla> (opcionalmente con Shift); el resto de combinaciones se rechazan.Ctrl+C y luego tu combinación).schtasks a las 11:00..ahk y el .lnk de inicio. El resto de scripts de AHK que tengas en ejecución no se tocan.Para la lista completa de categorías, niveles de gravedad y patrones, consulta DETECTION_COVERAGE.md.
Elige cómo se reemplazan los secretos detectados desde secret-stripper menu -> Redaction Style:
El mismo ajuste se aplica al activador de la tecla de acceso rápido, al subcomando redact del pipeline y al envoltorio paste-guard para TUI de IA.
Los secretos suelen estar en capturas de pantalla, no solo en texto: una captura de terminal, un panel de configuración, un dashboard de API. Cuando activas la tecla de acceso rápido y el portapapeles contiene una imagen en lugar de texto, Secret Stripper aplica OCR a la imagen, ejecuta el mismo detector que utiliza para el texto y pinta una caja negra sólida solo sobre las palabras que contienen un secreto. La imagen redactada se escribe de nuevo en el portapapeles. Las partes limpias de la imagen no se tocan: la captura completa nunca se ennegrece.
Compatible solo con Linux, tanto en X11 como en Wayland. En macOS y Windows la tecla de acceso rápido sigue haciendo la redacción de texto; una imagen del portapapeles no se toca.
Cuando hay una imagen en el portapapeles, la tecla de acceso rápido redacta la imagen incluso si tienes texto resaltado, así que screenshot -> hotkey simplemente funciona.
Necesita la CLI de OCR tesseract en tu PATH. Es una dependencia de ejecución opcional: todo lo demás funciona sin ella.
sudo pacman -S tesseract tesseract-data-eng # Arch
sudo apt install tesseract-ocr # Debian / Ubuntu
sudo dnf install tesseract # Fedora
Falla de forma segura: si falta tesseract, la imagen no se puede leer o un secreto detectado no se puede localizar, el portapapeles no se toca y recibes una notificación; la imagen original nunca se deja pasar en silencio ni se borra. El OCR hace que esta vía sea más lenta que la vía de texto instantánea (aproximadamente medio segundo o un par de segundos para una captura completa), así que espera a la notificación antes de pegar.
La redacción de imágenes está desactivada por defecto. Actívala desde secret-stripper menu -> Detection Settings -> Screenshot redaction, o establece enable_image_scan = true en config.toml.
secret-stripper init busca herramientas de terminal de IA instaladas (Claude Code, Codex CLI, aider, Gemini CLI, Continue, opencode) e imprime un bloque de alias de shell listo para copiar. Cada alias enruta la herramienta a través de paste-guard, un envoltorio PTY que intercepta los pegados del portapapeles y redacta los secretos antes de que lleguen al prompt de la IA; la escritura y la salida normal no se tocan. Copia el fragmento en tu configuración de shell (~/.zshrc, ~/.bashrc, ~/.config/fish/config.fish o tu perfil de PowerShell) y abre una nueva shell:
# ----------------------------------
alias claude='secret-stripper paste-guard -- claude'
alias codex='secret-stripper paste-guard -- codex'
# ----------------------------------
Secret Stripper nunca escribe en tu archivo rc de shell por su cuenta. Para dejar de enrutar a través de paste-guard, elimina el bloque entre las líneas de comentario discontinuas.
Alcance. paste-guard es un envoltorio por proceso: solo filtra los pegados en el único comando sobre el que lo ejecutaste. El uso diario de ssh, psql, vim, kubectl, la shell a secas, las aplicaciones GUI, el portapapeles del sistema: todo completamente intacto. También puedes añadir alias para herramientas que no sean de IA a mano (demostraciones en vivo con psql / mysql, grabaciones de pantalla): envolver comandos hoja está bien, envolver una shell completa normalmente no.
También puedes canalizar texto arbitrario a través del mismo motor:
cat secrets.log | secret-stripper redact > clean.log
Limitaciones. El pegado entre corchetes debe ser compatible con tu terminal (todos los emuladores modernos lo son, incluida la terminal integrada de VSCode y el paso a través de tmux); los secretos escritos nunca se modifican, solo los pegados; los contenidos de pegado superiores a 1 MiB pasan sin redactar.
Consulta CONTRIBUTING.md para conocer las convenciones de compilación, pruebas, lint y commits.
| OS | Estado | Backend de teclas de acceso rápido |
|---|
| Linux | ✅ Compatible | gsettings (GNOME / Cinnamon / Unity / Budgie / Pantheon), gsettings (MATE schema), xfconf-query (XFCE), kwriteconfig + qdbus (KDE Plasma 5/6) |
| macOS | ✅ Compatible | skhd (~/.skhdrc) o Hammerspoon (~/.hammerspoon/init.lua); instrucciones manuales si ninguno está instalado |
| Windows | ✅ Compatible | AutoHotkey v2 (%APPDATA%\secret-stripper\secret-stripper.ahk) - instálalo mediante winget install AutoHotkey.AutoHotkey |
| Categoría | Ejemplos |
|---|
| 🔴 Secretos en la nube | claves de AWS, claves de API de Google, credenciales de Azure, tokens de OpenAI, claves de Stripe, claves de API de Heroku |
| 🔴 Tokens de autenticación | tokens de GitHub, tokens de GitLab, tokens de Slack, tokens de Discord, JWT, tokens bearer, tokens de NPM |
| 🔴 Claves criptográficas | claves privadas RSA/EC/OpenSSH, claves privadas PGP, claves públicas SSH |
| 🔴 PII | números de tarjetas de crédito, números de la Seguridad Social, números de teléfono, direcciones de correo electrónico, números de pasaporte |
| 🟠 Cadenas de conexión | PostgreSQL, MongoDB, Redis, MySQL, URLs JDBC con credenciales |
| 🟡 Heurístico | cadenas inusuales, archivos env con secretos, JSON con campos de contraseña, contenido codificado en base64 |
| 🟢 Seguro | texto normal, correos, documentos: sin falsas alertas |
| Estilo | Salida para aws=AKIAIOSFODNN7EXAMPLE |
|---|
| Marker (predeterminado) | aws=[REDACTED] - utiliza una cadena marcadora configurable (ocho preajustes + personalizado) |
| Drop | aws= - elimina los bytes coincidentes por completo |
| Typed | aws=[AWS_ACCESS_KEY_ID] - reemplaza cada segmento con una etiqueta derivada del nombre del patrón coincidente |
| Placeholder | aws=AKIAIOSFODNN7EXAMPLE - sustituye el patrón coincidente por un valor de muestra realista pero falso (un correo se convierte en [email protected], una clave de Stripe en sk_test_4eC39HqLyjWDarjtT1zdp7dc) |