Коротко
Автор выпустил утилиту agentleaks, которая проверяет сохранённые истории 13 кодовых агентов на утёкшие ключи, может замаскировать находки и настроить блокировку доступа к чувствительным файлам. Это помогает обнаружить секреты, которые агенты могли записать в локальные логи, но защита от повторного чтения работает неодинаково в разных инструментах.
Контекст
Автор — Arthur031221, разработчик проекта agentleaks. Он обратил внимание, что кодовые агенты читают файлы вроде .env, а их истории и локальные базы сохраняют увиденное; резервные копии и синхронизация папок могут распространить эти данные. По словам автора, ему не удалось найти инструмент, который одновременно очищал бы уже сохранённые утечки и мешал новым.
Главное
- agentleaks — автономная утилита на Go в виде одного бинарного файла; у неё три команды: scan, fix и guard.
- scan проверяет истории 13 инструментов по 64 правилам и показывает поставщика ключа, агент, файл, строку или запись базы данных и замаскированный фрагмент.
- Среди упомянутых форматов хранения: Claude Code — JSONL в ~/.claude/projects, Codex — файлы в ~/.codex/sessions, Cursor — SQLite; свои данные также хранят Cline, Gemini CLI, OpenCode и Aider.
- fix по умолчанию запускается в режиме пробного выполнения; для применения изменений используют agentleaks fix —yes.
- Перед изменением agentleaks сохраняет исходный файл в ~/.agentleaks/backups. При исправлении JSONL записи повторно проверяются, строки замены не содержат кавычек и обратных слешей, а обновления SQLite выполняются транзакционно.
- Утилита сохраняет время изменения файлов, чтобы приложения, сортирующие сессии по времени, не меняли их порядок.
- guard устанавливает хуки в конфигурациях агентов, чтобы блокировать чтение .env и ~/.aws/credentials; охват зависит от возможностей хуков каждого инструмента.
- Установка из исходников: go install github.com/Arthur031221/agentleaks/cmd/agentleaks@latest. Для macOS, Linux и Windows также доступны готовые сборки.
- По заявлению автора, данные остаются на компьютере, если пользователь отдельно не запускает необязательную команду verify.
- Демонстрация проводилась в тестовой домашней директории со случайно созданными фиктивными ключами, а не на реальных историях.
Как сделано
Сначала команда scan обходит локальные истории поддерживаемых агентов и сопоставляет содержимое с 64 правилами распознавания секретов. В отчёт попадает только замаскированный фрагмент ключа, а не полное значение.
Затем fix может очистить найденные ключи на месте: сначала создаётся резервная копия, после чего содержимое переписывается с проверками для JSONL и транзакционным обновлением SQLite. Вызов без флага —yes — пробный; —yes применяет изменения. Команда guard добавляет доступные хуки в конфигурации агентов, чтобы запретить чтение выбранных секретных файлов.
Результаты
Создан инструмент для поиска и локальной маскировки секретов в историях 13 кодовых агентов, а также для настройки блокировки некоторых чтений. Численных результатов проверки на реальных данных автор не приводит; пример использует только фиктивные ключи.
Ограничения
Поддержка guard неодинакова: системы хуков разных агентов предоставляют разные возможности. agentleaks не проверяет историю Git — для этого автор рекомендует gitleaks и trufflehog. Демонстрация не подтверждает работу на реальных утечках, а точность сканирования и полнота списка правил в статье не измерены. Стоимость или сравнение с альтернативами не указаны.
Что взять себе
- Проверьте локальные истории кодовых агентов: секреты могут сохраняться там даже после завершения сессии.
- Перед исправлением разберите отчёт и сохраните резервную копию; для agentleaks команда fix без —yes предназначена для пробного запуска.
- Настройка guard может снизить риск повторного чтения секретов, но не стоит считать её одинаково надёжной для всех агентов.
- Истории агентов и Git — разные поверхности риска: для проверки Git-истории нужны отдельные инструменты, например gitleaks или trufflehog.
Читать оригинал, если…
Откройте исходник, если хотите изучить репозиторий, список правил, поддерживаемые агенты и детали настройки хуков.