Пользователи Claude Code накапливают в директории ~/.claude/ значительный балласт — и сам инструмент никак об этом не сообщает. Автор cc-janitor обнаружил у себя 847 сессий весом 3,2 ГБ, правила permissions в пяти разных файлах settings.json с 40% дублей, CLAUDE.md на 312 строк, половина которых противоречила memory-файлам, и хук, молча не работавший две недели. Катализатором для написания утилиты стала функция Auto Dream.
Auto Dream — механизм Anthropic, при котором Claude между сессиями самостоятельно консолидирует проектную память через языковую модель. Идея полезная: накопленные заметки структурируются и сжимаются. Проблема в реализации: нет pre-flight проверки, нет лога того, что именно было изменено, и нет встроенного отката. Сам Anthropic рекомендует делать бэкап ~/.claude/ перед включением функции — но инструмента для этого бэкапа в экосистеме не существовало. Четыре открытых бага в трекере Claude Code фиксируют конкретные сбои: Auto Dream молча удаляет полезные записи (issue #47959), зависший файл.consolidate-lock тихо отключает все будущие циклы консолидации (issue #50694), отсутствует лог действий Dream (#38493) и нет способа проверить, активен ли флаг autoDreamEnabled (#38461).
| Проблема | Issue | Что делает cc-janitor |
|---|---|---|
| Auto Dream молча удаляет полезные записи | #47959 | dream diff показывает изменения, dream rollback откатывает цикл |
| Зависший .consolidate-lock отключает будущие циклы | #50694 | dream doctor проверяет состояние lock-файла |
| Нет лога действий Dream | #38493 | Фоновый демон снимает снапшоты до и после каждого цикла |
| Нет способа проверить флаг autoDreamEnabled | #38461 | dream doctor выводит текущее состояние флага |
cc-janitor закрывает все четыре проблемы через фоновый демон, который поллит.consolidate-lock и снимает снапшоты памяти до и после каждого цикла. Команда dream diff показывает точные изменения, dream rollback откатывает конкретный цикл, dream doctor запускает 10 проверок состояния: зависший lock, время последнего цикла, размер MEMORY.md, наличие противоречий и дублей.
cc-janitor устанавливается через uv tool install cc-janitor, написан на Python 3.11+, MIT-лицензия, 202 теста.
Помимо контроля над Auto Dream утилита решает несколько независимых задач. Команда context cost считает суммарный размер CLAUDE.md, memory-файлов и подключённых скиллов в байтах, токенах и долларах по ставке Opus: у активных пользователей этот «бесплатный» контекст составляет 15–40K токенов при каждом обращении. С моделями на 200K-окне — это ощутимая доля бюджета. Команда perms audit анализирует все пять слоёв настроек permissions, находит дубликаты, поглощённые правила и записи, к которым не было обращений за последние 90 дней. Хуки Claude Code не пишут собственных логов, поэтому cc-janitor умеет симулировать девять типов событий с реалистичными payload — без запуска реального Claude Code — и включать постоянное логирование вызовов.
Модель безопасности построена на нескольких принципах: любая команда, изменяющая данные, требует переменную окружения CC_JANITOR_USER_CONFIRMED=1 и отказывает без неё; удалённое перемещается в корзину на 30 дней; перед каждой правкой settings.json создаётся timestamped-бэкап; все действия пишутся в append-only JSONL audit log. В версии 0.3.2 был закрыт критический баг: TUI обходил env-var gate через os.environ.setdefault — исправлено через scoped context manager. Автор явно обозначает приоритет: если safety model сломается так, что данные потеряются, это P0.
Утилита доступна через uv tool install cc-janitor или pipx install cc-janitor. Python 3.11+, MIT-лицензия, 202 теста, CI на Linux/macOS/Windows, билингвальный интерфейс с переключением через F2 в TUI или флаг --lang ru в CLI.



