Перейти к содержанию

Claude Code

Claude Code молча стирает логи сессий через 30 дней

4 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →
Изображение: brycewatson.com

Claude Code по умолчанию стирает расшифровки сессий старше 30 дней. Делает он это фоновой чисткой и ничего не сообщает, напоминает автор блога Brycewatson в разборе, обновлённом 30 сентября. Если в ~/.claude/settings.json нет ключа cleanupPeriodDays, сессии из терминала и IDE хранятся 30 дней, а увеличенный срок защитит только то, что ещё не удалено.

Старая сессия просто пропадает из /resume. У автора не уцелело ни одной расшифровки раньше начала мая, хотя в Claude Code он работал и в январе-апреле.

Одна строка в settings.json

Проверка занимает секунды: откройте ~/.claude/settings.json и найдите cleanupPeriodDays. Число в этом ключе и есть срок хранения в днях. Самый коварный случай - ключа нет вовсе. Автор замечает, что «у меня нет такой настройки» звучит как «у меня всё в порядке», а на деле означает «меня чистят каждые 30 дней».

Исправление занимает одну строку:

{ "cleanupPeriodDays": 3650 }

3650 дней - это около десяти лет, фактически хранение навсегда. Тем, кому не нужны завалы расшифровок за десятилетие, автор предлагает осознанный потолок вроде 365. Отключить чистку совсем нельзя: минимум равен 1, а значение 0 не проходит валидацию. Ключ работает в пользовательских настройках, в проектных .claude/settings.json и в локальных .claude/settings.local.json. Но если cleanupPeriodDays задан в managed settings вашей организации, побеждает её значение.

Поручить правку можно и самому Claude: в августе об этом писал автор Paul's Blog. Однако про срок хранения модель уже ошибалась. В январском посте a327ex описал, как Claude сначала ответил, что локальные файлы в ~/.claude/projects/ автоматически не удаляются, спутав их с хранением на серверах Anthropic.

У длинного срока есть цена. Первая - диск: у автора набралось около 7 000 файлов расшифровок на 1,58 ГБ, и объём только растёт, а загруженная установка, по его грубой оценке, порождает от сотен до нескольких тысяч файлов в неделю. Вторая - секреты. Автор Classmethod ссылается на документацию: расшифровка хранит весь разговор вместе с вызовами инструментов и их результатами в виде незашифрованного текста. Если инструмент прочитал .env или в выводе команды оказались ключи, они тоже попадают в файл, и при значении 3650 пролежат на диске в открытом виде столько же, сколько сама расшифровка. В качестве защиты он называет более короткий срок или переменную окружения CLAUDE_CODE_SKIP_PROMPT_HISTORY, которая отключает запись расшифровок.

Что попадает под чистку

В основном это расшифровки: файлы .jsonl в ~/.claude/projects/, по одному на сессию, плюс файл в subagents/ на каждый запуск сабагента. С версии 2.1.117 под чистку попали также tasks/, shell-snapshots/ и backups/. Документация называет ещё file-history/, где Claude Code хранит записи о своих правках, plans/, отладочные логи, кэш вставок и осиротевшие worktree. Папку автопамяти projects/<project>/memory/ чистка не трогает. Правда, до версии 2.1.228 она принимала вложенные в неё папки за данные сессий и могла удалить из них старые файлы.

С версии 2.1.248 расшифровки сессий, которые вы начали или последний раз продолжили в Claude Desktop или Cowork, хранятся при любом возрасте. В changelog это названо исправлением для сессий, которые «исчезали через 30 дней». Исправление коснулось только этих двух приложений: сессии из терминала и IDE по-прежнему живут по cleanupPeriodDays. Для десктопных сессий есть отдельный ключ desktopSessionCleanupPeriodDays, который возвращает им срок хранения, но не короче cleanupPeriodDays. Значение из managed settings действует и на них.

Шрам до начала мая

Автор давно поднял у себя срок до 3650 и проверил, держится ли настройка. На 25 июня на диске лежали 1 324 файла расшифровок старше 31 дня, из них 647 - сессии верхнего уровня. При умолчании все они ушли бы в чистку. Самая старая уцелевшая расшифровка последний раз менялась 7 мая.

Возраст файла чистка, по наблюдению автора, отсчитывает от времени его последнего изменения, и сам он просит считать это замером со своей машины. Первое сообщение внутри самой старой расшифровки датировано 5 мая, примерно на два дня раньше времени изменения файла, так что эти две метки расходятся. Все замеры сделаны на одной машине, а список удаляемых папок взят из документации: свежую чистку на настройке по умолчанию автор не запускал.

Каталог shell-snapshots/, который чистится по тем же часам, обрывается примерно там же, где и расшифровки. Значение 3650 стояло у автора уже к 11 июня, позже этой границы, и всё удалённое до неё на диск не вернулось. Восемь папок проектов в projects/ автор завёл с января по апрель 2026 года, и ни в одной нет расшифровки старше 5 мая.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.