Claude Code молча удаляет историю сессий через 30 дней. Я заметил через три с половиной месяца
Первый мой запрос к Claude Code на рабочем сервере датирован 26 мая. Самая старая сохранённая сессия датирована 11 сентября. Всё, что было между ними, удалено, и ни одного предупреждения я не видел.
Это не сбой. Claude Code хранит расшифровки сессий 30 дней, а потом стирает их в фоне. Так написано в документации, просто до этой страницы мало кто доходит. Лечится одной строкой в настройках, но только на будущее: удалённое уже не вернуть.
Похоже на камеру хранения, где ячейку освобождают через месяц, а объявление об этом висит внутри ячейки.
Что именно пропадает
Каждая сессия Claude Code записывается в файл в папке ~/.claude/projects/. В файле весь разговор: ваши сообщения, ответы модели, каждый вызов инструмента и его результат. Из этих файлов работает команда /resume, которая возвращает вас в старую сессию.
Через 30 дней файл удаляется. По документации, чистка запускается в фоне после старта очередной сессии и удаляет расшифровки, не показывая сообщения. Старая сессия просто перестаёт появляться в списке /resume. Вместе с ней уходят расшифровки субагентов и заброшенные рабочие копии git, которые Claude создавал для параллельных задач.
Чистка трогает не всё:
- История запросов остаётся. Файл history.jsonl хранит то, что вы набирали. Поэтому вопросы за май у меня на месте, а ответов на них уже нет.
- Память проекта остаётся. Заметки, которые Claude ведёт о проекте, под чистку не попадают.
- Сессии из приложения Claude Desktop и из Cowork с версии 2.1.248 хранятся без срока.
Проверка на себе
На сервере у меня лежат 724 файла расшифровок на 861 МБ. Я разложил их по возрасту: 181 за последнюю неделю, 62 за вторую, 338 за третью и 143 старше трёх недель. Старше 30 дней нет ни одного. Самому старому ровно 30 дней.
Что было в удалённых сессиях, я уже не проверю. Скорее всего, разборы багов и объяснения, почему что-то сделано именно так. То есть ровно то, ради чего старую сессию обычно и открывают.
Как проверить у себя
Три команды в терминале:
Первая показывает, задан ли срок хранения. Если она ничего не вывела, вы на умолчании в 30 дней. Вторая считает все расшифровки, третья только те, что старше 30 дней. Если третья вывела ноль, а с Claude Code вы работаете дольше месяца, чистка у вас уже прошла.
Одна строка в настройках
В файл ~/.claude/settings.json добавляется ключ:
Это около десяти лет. Три вещи, о которые легко споткнуться:
- Ноль не значит «никогда». Значение 0 не проходит проверку настроек, минимум равен 1. Хотите хранить долго, ставьте большое число.
- Настройка работает только вперёд. Удалённые файлы она не вернёт.
- Диск не резиновый. У меня месяц работы занял 861 МБ, это около 10 ГБ в год. Я много работаю с агентами, у вас может выйти в разы меньше, но прикинуть стоит.
Обратная сторона: в этих файлах лежит всё
Расшифровки хранятся открытым текстом, без шифрования. Документация предупреждает прямо: если инструмент прочитал файл .env или команда вывела ключ, это значение окажется в файле сессии. Так что 30 дней по умолчанию выбраны не из жадности, а из осторожности.
Чем дольше вы храните историю, тем больше секретов копится на диске. Если увеличиваете срок, сделайте две вещи: запретите Claude читать файлы с ключами через правила доступа и не кладите папку ~/.claude/projects/ в общий бэкап без шифрования.
А если история не нужна совсем, есть обратные настройки. Переменная окружения CLAUDE_CODE_SKIP_PROMPT_HISTORY отключает запись расшифровок, флаг --no-session-persistence делает то же для одного запуска в скрипте.
Что выбрал я
Поставил 365 дней. Год истории покрывает почти все случаи, когда я возвращаюсь к старому решению, а диск и риск с секретами остаются в понятных границах.
Забавно, что инструмент, который держит в голове весь ваш проект, собственную историю забывает через месяц.
Подробности в документации Claude Code. Такие находки про Claude я каждый день собираю в канале Claude News.