Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
agent-sweep — Находите и редактируйте секреты в истории AI-агентов кодирования (Claude Code и другие). | Kitploit
Инструменты/GitHubGitHub/ishannaik/agent-sweep
Эксфильтрация данныхФорензикаВосстановление ДанныхОбнаружение СекретовБезопасность Цепочки ПоставокРеагирование на Инциденты
GitHubishannaik/agent-sweep

agent-sweep

Находите и редактируйте секреты в истории AI-агентов кодирования (Claude Code и другие).

Репозиторий
573843 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

AgentSweep

AgentSweep

Находит и редактирует секреты в локальной истории вашего ИИ-агента. Полностью офлайн.

PyPI version PyPI downloads CI License: MIT Python 3.11+ Offline GitHub Stars Visitors

Профилактика: не вставляйте ключи API в облачных ИИ-агентов — ключ проходит через серверы провайдера, прежде чем попасть на ваш диск.

Если уже вставили: agentsweep устраняет оставшийся локальный вектор атаки — вредоносное ПО в цепочке поставок и скомпрометированные пакеты, которые сканируют ваш диск на наличие учётных данных. Ваши файлы никогда не покидают вашу машину.


Поддерживается 29 агентов: Claude Code · Codex · OpenCode · Cursor · Windsurf · Aider · Cline · Kilo Code · Roo Code · PearAI · Trae · Void · Gemini CLI · Qwen Code · Continue · Open Interpreter · GitHub Copilot Chat · OpenClaw · Hermes · Goose · Warp · Grok CLI · Kiro CLI · Zed · Codebuff · Plandex · Junie · Mentat · JetBrains AI

Экспериментальные источники (Warp, Grok CLI, Kiro CLI, Zed, Codebuff, Plandex, Qwen Code, PearAI, Trae, Void, Junie, Mentat, JetBrains AI) — пути/форматы хранения получены из исследований, но ещё не подтверждены на реальной установке. Сканирование безопасно — ошибочный путь просто ничего не найдёт, — но пока они могут выдавать неполные отчёты. В списке выбора они помечены (experimental) и выводят предупреждение при сканировании.

191 правило обнаружения — AWS, GitHub, Stripe, OpenAI, Anthropic, Google, Slack, Discord, HuggingFace, JWT, ключи PEM, URL баз данных, BIP-39 seed-фразы и многое другое

Альфа — каждое деструктивное действие защищено шлюзами, резервными копиями и обратимо одной командой

Проблема

Claude Code (как и любой другой ИИ-агент для командной строки) хранит полную историю ваших диалогов в виде обычного текста в JSONL-файлах на диске — для Claude Code в ~/.claude/projects/, для OpenAI Codex в ~/.codex/sessions/. Всё, что вы вставили — ключ AWS, .env-файл, URL базы данных — остаётся в открытом виде на неопределённый срок. У обычного разработчика за несколько месяцев в истории накапливаются десятки секретов, часто незаметно.

agentsweep сканирует эту историю, сообщает, что утекло, и может заменить секретные значения по месту, сохраняя структуру JSONL побайтово. Также он подсказывает, какие ключи нужно отозвать, с правильной ссылкой для отзыва для каждого провайдера.

Область защиты: сам agentsweep полностью локальный и офлайн — он читает и записывает только файлы на вашей машине и не совершает ни одного сетевого вызова. Он устраняет один вектор атаки: секреты, лежащие в локальных файлах истории. Он не влияет на то, что уже получил ваш ИИ-провайдер: когда вы вставляете ключ в Claude Code, Cursor или любого другого облачного агента, этот ключ уже прошёл через серверы провайдера, прежде чем попасть на диск. Если вас это беспокоит, рассмотрите локально размещённые модели (Ollama, LM Studio, OpenCode), где ничего не покидает вашу машину — agentsweep особенно хорошо сочетается с локальными настройками.

Почему это важно прямо сейчас

Атаки на цепочку поставок ускоряются. В 2024–2025 годах волна вредоносных npm и PyPI пакетов — sha256-universal, shailulid, сотни тайпсквотов — были замечены в одном: экспортировании учётных данных разработчика с машины, на которую установлены. Они нацелены на переменные окружения, .env-файлы, историю команд, SSH-ключи, а теперь и на файлы истории ИИ-агентов.

ИИ-помощники для кодинга создали новую категорию утечки учётных данных, которой не существовало два года назад:

  • Вы вставляете рабочий ключ API в Claude Code для отладки → он оказывается в ~/.claude/projects/*/conversations/*.jsonl навсегда
  • Скомпрометированный npm-пакет запускает postinstall → сканирует стандартные пути → находит ваши JSONL-файлы → экспортирует 50 ключей API за один запрос
  • Вы отзываете ключ, который публично использовали, но забываете о десятке других в истории
  • Тем временем история растёт: каждый .env, который вы просили ИИ помочь, каждый URL базы данных, переданный для отладки, каждый токен, вставленный для одной команды

История ИИ-агента — это новый .bash_history, только с полным контекстом, а не просто команды. Инструменты атакующих это уже знают. agentsweep существует, чтобы навести порядок до того, как это будет использовано.

Быстрый старт

root@kitploit:~
pip install uv                  # установить uv (пропустите, если уже есть)
uv tool install agentsweep      # установка — добавляет `agentsweep` и `asweep` в PATH
asweep                          # запуск — интерактивное меню проведёт вас через всё

Всё. Не нужно активировать виртуальное окружение, настраивать PATH — uv tool install даёт команде собственную изолированную среду.

Как это работает

agentsweep выполняет фиксированный конвейер из 5 этапов. scan останавливается после этапа 3; fix продолжает до замены.

root@kitploit:~
flowchart LR
    A("🔍 ОБНАРУЖЕНИЕ\nобход каталогов истории\nпотоковый список файлов") --> B("⚡ СКАНИРОВАНИЕ\nAho-Corasick предфильтр\n191 regex-правило + BIP-39")
    B --> C{"секреты\nнайдены?"}
    C -- "нет" --> D("✅ ЧИСТО\nвыход 0")
    C -- "найдены" --> E("📋 РЕЗУЛЬТАТЫ\nпоказать отчёт\nвыход 1")
    E -. "только сканирование" .-> F("⚠️ ОТОЗВАТЬ\nключи ещё активны")
    E -- "введите REDACT" --> G("✏️ ЗАМЕНА\nатомная запись · резервная копия .bak\nпроверка JSON после записи")
    G --> H("🔑 ОТОЗВАТЬ\nссылки для отзыва\nпо каждому провайдеру")

    style A fill:#1e3a5f,color:#fff,stroke:#2d5986
    style B fill:#1e3a5f,color:#fff,stroke:#2d5986
    style C fill:#4a3728,color:#fff,stroke:#7a5c3f
    style D fill:#1a4731,color:#fff,stroke:#2d7a52
    style E fill:#4a3a1e,color:#fff,stroke:#7a6030
    style F fill:#4a2020,color:#fff,stroke:#8b3a3a
    style G fill:#1e3a5f,color:#fff,stroke:#2d5986
    style H fill:#2d1e4a,color:#fff,stroke:#5a3a8b

Каждая запись защищена 8 гарантиями безопасности — атомарная замена, обязательная резервная копия .bak, отклонение символических ссылок, шлюзы по времени изменения/процессам и проверка JSONL после записи. agentsweep undo восстанавливает из резервных копий.

Установка

Рекомендуется — изолированно, без конфликтов venv:

root@kitploit:~
uv tool install agentsweep      # однократная установка
uv tool upgrade agentsweep      # обновление до последней версии

Попробовать без установки (всегда последняя версия):

root@kitploit:~
uvx agentsweep@latest

Классический pip:

root@kitploit:~
pip install agentsweep
pip install --upgrade agentsweep

Нет uv? pip install uv или см. astral.sh/uv. Требуется Python 3.11+.

Использование

Интерактивный режим

Выполните без аргументов в терминале, и вы получите полный опыт — баннер, нумерованное меню, подтверждение вводом перед любыми деструктивными действиями и отмену одной клавишей (восстанавливает резервные копии .bak). Любое интерактивное сканирование, обнаружившее секреты, заканчивается предложением заменить их на месте (введите REDACT для подтверждения):

root@kitploit:~
agentsweep

На скрипты это не влияет: любой флаг или перенаправленный поток пропускают меню и ведут себя точно так, как описано ниже.

Глаголы

Устаревшая форма с флагом agentsweep --fix также принимается и ведёт себя так же, как agentsweep fix.

Выбор источника

Укажите, историю какого агента обрабатывать, с помощью --source. По умолчанию — claude-code.

root@kitploit:~
agentsweep scan --source claude-code          # ~/.claude/projects/ (по умолчанию)
agentsweep scan --source codex                # ~/.codex/sessions/
agentsweep scan --source opencode             # хранилище SQLite OpenCode
agentsweep scan --source cursor               # история Cursor
agentsweep scan --source windsurf             # история Windsurf
agentsweep scan --source aider                # ~/.aider/
agentsweep scan --source cline                # история Cline
agentsweep scan --source gemini-cli           # история Gemini CLI
agentsweep scan --source continue-vscode      # история Continue (VS Code)
agentsweep scan --source github-copilot-chat  # история GitHub Copilot Chat
agentsweep scan --source openclaw             # OpenClaw ~/.openclaw/
agentsweep scan --source hermes               # Hermes Agent ~/.hermes/state.db
agentsweep scan --source goose                # Goose ~/.local/share/goose/

Не уверены, какие агенты у вас установлены? list-sources выводит каждый поддерживаемый источник, его расположение истории и то, существует ли эта история на данной машине — так вы знаете, какие значения --source стоит сканировать. Он ничего не читает и ничего не записывает.

root@kitploit:~
agentsweep list-sources             # все 29 источников + какие есть на диске
agentsweep list-sources --detected  # только те, что найдены на этой машине
agentsweep list-sources --json      # машиночитаемый вывод (для скриптов/CI)

Сканировать все зарегистрированные агенты за один проход (агрегированные результаты; замена остаётся по источникам):

root@kitploit:~
agentsweep scan --all                 # все зарегистрированные источники
agentsweep scan --all --detected      # только источники с корнем истории на диске
agentsweep scan --all --json          # агрегированный JSON (каждый результат содержит "source")
agentsweep scan --all --json -o out.json

Переопределить корневой каталог по умолчанию для сканирования любой произвольной папки:

root@kitploit:~
agentsweep scan --root ~/backups/claude-history
agentsweep fix  --root /tmp/history-copy --allow-production

Флаги scan / fix

root@kitploit:~
# Машиночитаемый JSON в stdout (код 0 = чисто, 1 = найдены результаты, 2 = ошибка)
agentsweep scan --json

# Записать JSON результатов в файл, а не в stdout
agentsweep scan --json -o findings.json
agentsweep scan --json --output /tmp/report.json

# Пропустить файлы .agentsweepignore
agentsweep scan --no-ignore

Флаги только для fix

root@kitploit:~
# Заменить историю Claude Code по месту (--allow-production требуется для корней по умолчанию на стадии альфа)
agentsweep fix --allow-production

# Пропустить создание резервных копий .bak (не рекомендуется)
agentsweep fix --allow-production --no-backup

# Обойти мягкие проверки безопасности: шлюз по времени изменения (файлы изменены <60 с назад) и шлюз по запущенным процессам
agentsweep fix --allow-production --force

# Комбинация: неинтерактивная замена в режиме JSON для пользовательского корня
agentsweep fix --root ~/history-copy --json

Флаги undo

root@kitploit:~
# Отменить замены для конкретного источника
agentsweep undo --source codex

# Отменить для пользовательского корня
agentsweep undo --root ~/history-copy

Гарантии защиты от повреждений

Редактор, который повреждает вашу историю, хуже, чем исправляемая утечка. agentsweep обеспечивает следующие инварианты для каждого --fix:

  1. Замена выполняется в разобранном JSON, а не в сырых байтах. Секреты заменяются как строковые значения внутри разобранной структуры, затем повторно сериализуются. Структурное повреждение исключено по построению.
  2. Атомарная запись. Каждая перезапись идёт: временный файл → fsync() → os.replace() поверх оригинала. Сбой в любой момент оставляет либо полный старый файл, либо полный новый — никогда не частичную запись.
  3. Проверка после записи. Перед фиксацией новое содержимое проходит проверку с учётом формата: JSONL — каждая непустая строка разбирается как JSON, и количество строк совпадает с оригиналом; полный JSON — документ разбирается; markdown/plaintext — количество строк совпадает с оригиналом; SQLite — перезаписанная копия проходит PRAGMA integrity_check. Если проверка не удаётся, запись прерывается, и оригинал остаётся нетронутым.
  4. Резервная копия .bak по умолчанию. Создаётся с доступом только для владельца (режим 0600), так как содержит секреты до замены; отказывается запускаться, если файл .bak уже существует (чтобы предыдущие резервные копии не были перезаписаны).
  5. Контроль пути. Отказывается обрабатывать любую цель, которая не разрешается внутри одного из деревьев истории источника (например, каталог User Windsurf и его ~/.codeium/windsurf/memories/).
  6. Отклонение символических ссылок. Полностью отказывается от символических ссылок.
  7. Окно времени изменения. Отказывается от файлов, изменённых в последние 60 секунд (вероятно, активная сессия). отменяет.

Восстановление

У каждого изменённого файла есть файл-сосед *.bak с исходными байтами. Самый простой способ отменить все замены для одного источника:

root@kitploit:~
agentsweep undo                        # отменить для Claude Code (по умолчанию)
agentsweep undo --source codex         # отменить для конкретного источника
agentsweep undo --root ~/history-copy  # отменить для пользовательского корня

Если нужно восстановить один файл вручную (например, вы удалили исходные данные команды undo):

root@kitploit:~
mv session.jsonl.bak session.jsonl

Резервные копии содержат оригиналы до замены — открытые секреты, поэтому очистка не завершена, пока утёкшие ключи не отозваны и резервные копии не удалены. После отзыва:

root@kitploit:~
agentsweep purge                       # удалить резервные копии для Claude Code (сначала запросит подтверждение)
agentsweep purge --source windsurf     # удалить резервные копии для конкретного источника
agentsweep purge --yes                 # неинтерактивно (скрипты / CI)

Что обнаруживается

191 шаблон с высокой точностью плюс детектор крипто-сид-фраз с проверкой контрольной суммы — мнемоники BIP-39 (12/15/18/21/24 слова; формат кошельков, используемый в BTC, ETH, SOL, BNB, ADA, DOGE, LTC, DOT, AVAX и практически во всех основных блокчейнах) и сиды Electrum подтверждаются криптографически (контрольная сумма BIP-39 / тег версии Electrum), так что английский текст, в котором случайно встречаются слова из списка кошелька, никогда не вызывает ложных срабатываний.

Шаблоны: ключи доступа AWS, токены GitHub (PAT/OAuth/App/точные), Stripe live/test, OpenAI, Anthropic, Google API, Slack bot/user/webhook, Hugging Face, JWT, приватные ключи PEM, URL баз данных со встроенными паролями, токены npm/PyPI/SendGrid/Twilio — плюс 167 правил, перенесённых из набора gitleaks, охватывающих GitLab, Grafana, HashiCorp Vault/Terraform, DigitalOcean, Shopify, PlanetScale, Databricks, Atlassian, Azure AD, 1Password, Sentry, New Relic, Mailgun, Datadog, Twilio, Twitter/X, Twitch, Yandex, JFrog, Snyk, Mailchimp, учётные данные curl в командной строке и многое другое. Шаблоны отличаются высокой точностью — ложные срабатывания редки, а правила, зависящие от провайдера, ограничены по ключевым словам, поэтому большие вставки остаются быстрыми.

Что НЕ обнаруживается

  • Пользовательские/проприетарные секреты без узнаваемого префикса.
  • Сид-фразы Monero (25 слов из собственного словаря Monero — запланировано).
  • Неизвестные токены, похожие на произвольную base64.
  • Секреты, разделённые по нескольким сообщениям.
  • Всё, что находится в двоичном/не-UTF-8 файле.

Для более глубокого обнаружения запустите gitleaks или trufflehog вместе с agentsweep — их наборы правил более полны. Ценность agentsweep в специфичной для истории агента поверхности, а не в движке обнаружения.

Часто задаваемые вопросы

Почему uvx agentsweep показывает старую версию? uvx кэширует инструменты локально. Используйте uvx agentsweep@latest, чтобы всегда запускать последнюю версию (рекомендуется), или принудительно обновите кэш с помощью uvx --reinstall agentsweep.

Где OpenCode в меню? Поддержка OpenCode добавлена в версии 0.1.1. Выполните pip install --upgrade agentsweep или uvx agentsweep@latest, чтобы получить её.

Отправляет ли agentsweep мои данные куда-нибудь? Нет. Он полностью офлайн — ноль сетевых вызовов во время сканирования или замены. Единственный опциональный сетевой вызов — фоновая проверка обновлений, которая загружает только номер последней версии с PyPI.

Участники

Спасибо всем, кто внёс код, сообщения об ошибках и идеи.

Contributors

Лицензия

MIT. См. LICENSE.

Скачать инструмент
КомандаЧто делает
agentsweep scanТолько сканирование — только чтение, файлы не изменяются (используется по умолчанию, если глагол не указан)
agentsweep fixСканирование, затем предложение заменить найденное на месте (введите REDACT для подтверждения)
agentsweep undoВосстановить все резервные копии .bak, откатив любую предыдущую замену
agentsweep purgeУдалить все резервные копии .bak после отзыва утёкших ключей (безвозвратно — undo перестанет работать)
agentsweep list-sourcesСписок всех поддерживаемых агентов и указание, какие из них имеют историю на этой машине (только чтение)
agentsweep --version / -VВывести установленную версию
agentsweep --updateПроверить PyPI на наличие более новой версии
--force
  • Проверка запущенных процессов. Отказывается, если процесс Claude Code, судя по всему, запущен. --force отменяет.
  • Защита на альфа-стадии для рабочего каталога. --fix для корня ~/.claude/projects/ по умолчанию требует --allow-production до версии 1.0.
  • Журнал аудита. Каждая запись добавляет SHA256 до/после и путь в ~/.agentsweep/audit.jsonl.