
Небольшая CLI-утилита на Rust, которая удаляет секреты из вашего буфера обмена по запросу.
Небольшая CLI-утилита на Rust, которая по запросу удаляет секреты из вашего буфера обмена. Назначьте горячую клавишу, выделите текст, нажмите комбинацию — в буфере обмена окажется версия с удалённой конфиденциальной информацией. Обычное Ctrl+C / Ctrl+V никогда не перехватывается.
Linux — одна команда, никакой дополнительной настройки:
curl -sSf https://secretstripper.download/install.sh | bash
Комбинация по умолчанию: Ctrl+Alt+X.
macOS — требуется однократная настройка глобальной горячей клавиши (skhd или Hammerspoon). См. Настройка macOS для разрешений и устранения неполадок.
brew install koekeishiya/formulae/skhd
curl -sSf https://secretstripper.download/install.sh | bash
# Предоставьте skhd доступ к специальным возможностям: Системные настройки -> Конфиденциальность и безопасность -> Специальные возможности
skhd --restart-service
Комбинация по умолчанию: Cmd+Shift+C.
Windows (PowerShell) — требуется AutoHotkey v2. См. Настройка Windows для полного процесса.
winget install AutoHotkey.AutoHotkey
iwr -useb https://secretstripper.download/install.ps1 | iex
Комбинация по умолчанию: Ctrl+Alt+C.
Из crates.io (Rust) — применяются те же предварительные требования для каждой ОС (skhd на macOS, AutoHotkey на Windows):
cargo install secret-stripper && secret-stripper init
Из исходников (git):
cargo install --git https://github.com/kalix127/secret-stripper.git --locked && secret-stripper init
После установки выделите текст и нажмите комбинацию. В Linux выделение PRIMARY читается напрямую, поэтому можно пропустить Ctrl+C. Вставьте с помощью Ctrl+V (Cmd+V на macOS).
Запустите secret-stripper menu для настройки параметров или secret-stripper --help для всех команд.
Не существует способа зарегистрировать настоящую глобальную горячую клавишу на macOS без постоянно запущенного процесса. Secret Stripper сам является одноразовым, поэтому делегирует перехват клавиш одному из двух известных помощников: skhd (лёгкий, рекомендуется) или Hammerspoon (тяжелее, с возможностью скриптов). Если ни один не установлен, init выводит инструкции по ручной настройке.
Установите skhd через Homebrew:
brew install koekeishiya/formulae/skhd
Запустите secret-stripper init. Он создаёт ~/.skhdrc, LaunchAgent для ежедневной проверки обновлений и файл конфигурации. В выводе будет строка "DE binding": OK, если skhd / Hammerspoon обнаружен, FAILED с подсказками по установке, если нет.
Предоставьте skhd доступ к специальным возможностям. skhd требуется это для перехвата глобальных горячих клавиш, иначе он молча ничего не захватывает. Откройте Системные настройки -> Конфиденциальность и безопасность -> Специальные возможности, нажмите +, добавьте /usr/local/bin/skhd и включите тумблер. Если skhd уже запущен, перезапустите его, чтобы новые разрешения вступили в силу:
skhd --restart-service
Проверьте комбинацию:
echo "[email protected]" | pbcopy
# Нажмите свою комбинацию (по умолчанию: Cmd+Shift+C)
pbpaste # ожидаем: [REDACTED]
Альтернатива с Hammerspoon: brew install --cask hammerspoon, откройте его один раз, чтобы предоставить доступ к специальным возможностям, затем запустите secret-stripper init — он запишет привязку в ~/.hammerspoon/init.lua вместо ~/.skhdrc.
Комбинация по умолчанию: Cmd+Shift+C. Приложения macOS часто захватывают комбинации с Cmd, поэтому если она конфликтует с чем-то, что вы используете (DevTools браузера, Finder "Копировать путь" и т.д.), переназначьте через secret-stripper menu -> Rebind Hotkey. Два более безопасных варианта, если хотите спланировать заранее: Cmd+Option+X или Cmd+Ctrl+X.
В Windows нет способа зарегистрировать настоящую глобальную горячую клавишу без установки дополнительного ПО. То же ограничение, что и на macOS — Secret Stripper делегирует перехват клавиш AutoHotkey v2 (аналог skhd для Windows). AutoHotkey использует Win32 API RegisterHotKey и является единственным механизмом, который надёжно обрабатывает комбинацию в сфокусированных окнах, полноэкранных приложениях и процессах с повышенными привилегиями. AutoHotkey обязателен — init завершится с сообщением об установке, если не сможет его найти.
Установите AutoHotkey через winget:
winget install AutoHotkey.AutoHotkey
Пакет устанавливает AutoHotkey v2 в C:\Program Files\AutoHotkey\v2\.
Запустите secret-stripper init. Он создаёт %APPDATA%\secret-stripper\secret-stripper.ahk, добавляет .lnk в автозагрузку, чтобы AHK перезапускал скрипт при каждом входе в систему, и немедленно запускает процесс AHK, чтобы комбинация работала без выхода из системы.
Проверьте комбинацию:
Set-Clipboard "[email protected]"
# Нажмите свою комбинацию (по умолчанию: Ctrl+Alt+C)
Get-Clipboard # ожидаем: [REDACTED]
Ctrl+Alt+<ключ> (опционально с Shift); другие комбинации отвергаются.Ctrl+C, затем ваша комбинация).schtasks каждый день в 11:00..ahk и ярлык автозагрузки .lnk. Другие запущенные скрипты AHK не затрагиваются.Полный список категорий, уровней серьёзности и шаблонов см. в DETECTION_COVERAGE.md.
Выберите, как заменять обнаруженные секреты, в secret-stripper menu -> Redaction Style:
Тот же параметр применяется к триггеру горячей клавиши, подкоманде redact и обёртке paste-guard для AI TUI.
Секреты часто находятся на скриншотах, а не только в тексте — снимок терминала, панель конфигурации, панель API. Когда вы нажимаете горячую клавишу и в буфере обмена оказывается изображение вместо текста, Secret Stripper распознаёт текст на изображении (OCR), запускает тот же детектор, что и для текста, и закрашивает сплошным чёрным прямоугольником только слова, содержащие секрет. Изображение с удалёнными данными записывается обратно в буфер обмена. Чистые части изображения не трогаются — весь скриншот никогда не зачёркивается.
Поддерживается только на Linux — как X11, так и Wayland. На macOS и Windows горячая клавиша всё равно выполняет удаление из текста; изображение в буфере обмена не изменяется.
Когда в буфере обмена находится изображение, горячая клавиша удаляет данные с изображения, даже если вы выделили текст — поэтому скриншот -> горячая клавиша работает просто.
Для этого требуется tesseract CLI для OCR в переменной PATH. Это необязательная зависимость времени выполнения: всё остальное работает без него.
sudo pacman -S tesseract tesseract-data-eng # Arch
sudo apt install tesseract-ocr # Debian / Ubuntu
sudo dnf install tesseract # Fedora
Работает по принципу fail-closed: если tesseract отсутствует, изображение не может быть прочитано или обнаруженный секрет не может быть найден, буфер обмена не изменяется, и вы получаете уведомление — исходное изображение никогда не пропускается незаметно и никогда не стирается. OCR делает этот путь медленнее, чем мгновенный текстовый (примерно от половины секунды до пары секунд для полного скриншота), поэтому дождитесь уведомления перед вставкой.
Удаление с изображений отключено по умолчанию. Включите его в secret-stripper menu -> Detection Settings -> Screenshot redaction или установите enable_image_scan = true в config.toml.
secret-stripper init ищет установленные AI терминальные инструменты (Claude Code, Codex CLI, aider, Gemini CLI, Continue, opencode) и выводит готовый к копированию блок псевдонимов оболочки. Каждый псевдоним направляет инструмент через paste-guard, обёртку PTY, которая перехватывает вставки из буфера обмена и удаляет секреты до того, как они попадут в промпт AI — набор текста и обычный вывод не затрагиваются. Скопируйте этот фрагмент в конфигурацию вашей оболочки (~/.zshrc, ~/.bashrc, ~/.config/fish/config.fish или профиль PowerShell) и откройте новую оболочку:
# ----------------------------------
alias claude='secret-stripper paste-guard -- claude'
alias codex='secret-stripper paste-guard -- codex'
# ----------------------------------
Secret Stripper никогда не записывает в ваш rc-файл самостоятельно. Чтобы перестать направлять через paste-guard, удалите блок между пунктирными комментариями.
Область действия. paste-guard — это обёртка для одного процесса: она фильтрует только вставки в ту одну команду, с которой вы её запустили. Ежедневное использование ssh, psql, vim, kubectl, просто промпта оболочки, GUI-приложений, системного буфера обмена — всё это совершенно не затрагивается. Вы также можете добавить псевдонимы для инструментов, не связанных с AI, вручную (живые демонстрации с psql / mysql, записи экрана) — обёртка вокруг конечных команд допустима, обёртка вокруг целой оболочки обычно нет.
Вы также можете передавать произвольный текст через тот же движок:
cat secrets.log | secret-stripper redact > clean.log
Ограничения. Вставка в скобочном режиме (bracketed paste) должна поддерживаться вашим терминалом (все современные эмуляторы поддерживают, включая встроенный терминал VSCode и проброс tmux); набор секретов никогда не изменяется, только вставленные; полезная нагрузка вставки более 1 МБ передаётся без удаления.
См. CONTRIBUTING.md для правил сборки, тестирования, линтинга и коммитов.
| ОС | Статус | Бэкенд горячих клавиш |
|---|
| Linux | ✅ Поддерживается | gsettings (GNOME / Cinnamon / Unity / Budgie / Pantheon), gsettings (схема MATE), xfconf-query (XFCE), kwriteconfig + qdbus (KDE Plasma 5/6) |
| macOS | ✅ Поддерживается | skhd (~/.skhdrc) или Hammerspoon (~/.hammerspoon/init.lua); ручные инструкции, если ни один не установлен |
| Windows | ✅ Поддерживается | AutoHotkey v2 (%APPDATA%\secret-stripper\secret-stripper.ahk) — установка через winget install AutoHotkey.AutoHotkey |
| Категория | Примеры |
|---|
| 🔴 Облачные секреты | AWS-ключи, ключи Google API, учётные данные Azure, токены OpenAI, ключи Stripe, ключи Heroku API |
| 🔴 Токены аутентификации | Токены GitHub, токены GitLab, токены Slack, токены Discord, JWT, bearer-токены, токены NPM |
| 🔴 Криптографические ключи | Приватные ключи RSA/EC/OpenSSH, приватные ключи PGP, открытые ключи SSH |
| 🔴 Личная информация (PII) | Номера кредитных карт, SSN, номера телефонов, адреса электронной почты, номера паспортов |
| 🟠 Строки подключения | PostgreSQL, MongoDB, Redis, MySQL, JDBC URL с учётными данными |
| 🟡 Эвристика | Необычные строки, файлы .env с секретами, JSON с полями паролей, содержимое в base64 |
| 🟢 Безопасно | Обычный текст, письма, документы — ложных срабатываний нет |
| Стиль | Вывод для aws=AKIAIOSFODNN7EXAMPLE |
|---|
| Mark (по умолчанию) | aws=[REDACTED] — использует настраиваемую строку маркера (восемь предустановок + пользовательская) |
| Drop | aws= — полностью удаляет совпавшие байты |
| Typed | aws=[AWS_ACCESS_KEY_ID] — заменяет каждый фрагмент тегом из имени совпавшего шаблона |
| Placeholder | aws=AKIAIOSFODNN7EXAMPLE — подставляет реалистичное, но фальшивое значение для совпавшего шаблона (email становится [email protected], ключ Stripe — sk_test_4eC39HqLyjWDarjtT1zdp7dc) |