Claude Code удаляет историю через 30 дней: как сохранить свои сессии в 2026

Опубликовано 13.07.202611 мин чтенияБазовый
Рука разработчика переводит виртуальный циферблат "cleanupPeriodDays" с "30" на "∞", спасая данные от исчезновения по таймеру.
Что узнаешь
  • Где Claude Code хранит историю сессий и почему она исчезает без предупреждения через 30 дней
  • Одна строка в `~/.claude/settings.json`, которая останавливает удаление прямо сейчас
  • Почему обычный бэкап-скрипт может САМ спровоцировать удаление (mtime-баг) и как этого избежать
  • Готовый авто-архив вне управляемой папки, который сохраняет каждую сессию навсегда
  • Как превратить архив прошлых сессий в поисковую базу знаний по grep и jq
Применить за 20 мин
Сэкономит 9 ч
Базовый
1просмотров

Каждый день в Telegram-канале - что нового в вайб-кодинге: инструменты, кейсы, ошибки. Подпишись, чтобы быть в курсе.

Claude Code правда стирает твою историю сессий?

Ты открываешь Claude Code, чтобы вернуться к сессии двухмесячной давности - а её нет. Файл стёрт с диска полностью. Это не сбой и не редкий баг: так работает механизм очистки по умолчанию.

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

Тема стала громкой в конце июня 2026. The Register написал 30 июня, что пользователи жалуются на «загадочно исчезающие» записи. Параллельно на Hacker News висел тред с заголовком «Beware, Claude Code deletes >30 day old transcripts. Anthropic won't fix it». В репозитории Anthropic на эту тему открыто сразу несколько багов - и все висят без исправления.

Где Claude Code хранит историю сессий?

Найти свою историю просто. Открой терминал и посмотри содержимое папки:

bash
ls ~/.claude/projects/

Каждая подпапка - это отдельный проект. Имя кодирует путь: например, проект в /Users/artemii/dev/shop превращается в папку -Users-artemii-dev-shop. Внутри - файлы сессий:

bash
ls -lt ~/.claude/projects/-Users-artemii-dev-shop/
# 3f8a1c2e-....jsonl   ← одна сессия = один файл
# a91b7d40-....jsonl

Каждый .jsonl - это построчный лог: одна строка равна одному событию сессии. Там лежит не только текст переписки. Там - логика твоих решений: почему ты выбрал такую структуру базы, какие варианты отверг, где Claude ошибся и как ты его поправил.

По сути это дневник разработки проекта. Оттого потеря и болезненная: уходит не «чат», а контекст, который ты собирал неделями. Про то, как этот контекст вообще устроен, я разбирал в гайде «Claude Memory против CLAUDE.md».

Почему Anthropic удаляет транскрипты через 30 дней?

У удаления есть логика, и её стоит понять, прежде чем всё отключать. Транскрипт - это plain text. Если внутри сессии Claude читал .env, вставлял ключ в команду или ты копировал пароль в промпт, всё это осело в .jsonl открытым текстом. Чем дольше такой файл лежит на диске, тем выше шанс, что он однажды утечёт.

Anthropic формулирует это прямо: транскрипты могут содержать исходный код, учётные данные и другие чувствительные материалы, а хранить их на диске дольше необходимого создаёт реальный риск для приватности. Срок 30 дней выбран как компромисс.

Претензия сообщества к трём вещам: удаление тихое (нет предупреждения ни при установке, ни при старте), нет согласия (тебя не спрашивают), нет восстановления (Корзина не задействована, отката нет). Разработчики в issue #59248 просят одного - сделать очистку честной: предупреждение, период на восстановление, менее агрессивный срок по умолчанию.

Почему бэкап-скрипт может сам спровоцировать удаление?

Это самая коварная часть, и на ней спотыкаются те, кто пытается защититься своими силами. Логика очистки смотрит на mtime - метку последнего изменения файла. Предполагается, что mtime отражает, когда ты последний раз работал в сессии. На практике mtime меняет кто угодно: клиент синхронизации Dropbox или iCloud, rsync, антивирус, индексатор, твой собственный скрипт бэкапа.

Ловушка выглядит так. Ты решаешь сохранять историю и настраиваешь синхронизацию папки ~/.claude/projects/ в облако. Сервис синхронизации в какой-то момент переписывает файл и ставит ему mtime задним числом (так бывает при восстановлении из облачной копии). Claude Code на старте видит «старый» файл и удаляет его. Ты хотел сохранить - а ускорил удаление.

Вывод один: бэкап должен жить вне папки ~/.claude/projects/. Логика очистки действует только внутри этой папки. Копия, которая лежит снаружи, ей уже неподвластна. Дальше собираю решение именно на этом принципе.

Как остановить удаление истории прямо сейчас?

Останови удаление в три шага:

  1. Открой файл настроек: ~/.claude/settings.json (если файла нет - создай его).
  2. Добавь параметр cleanupPeriodDays с большим значением:
json
{
  "cleanupPeriodDays": 3650
}
  1. Сохрани файл. Настройка применится при следующем старте Claude Code.

Значение 3650 - это десять лет: на практике удаление больше не сработает. Если хочешь оставить очистку, но с запасом, поставь 365 (год) - тогда исчезать будут только сессии старше года. Проверить, что параметр подхватился, можно командой:

bash
grep cleanupPeriodDays ~/.claude/settings.json

Одна оговорка, которую легко пропустить: расширение срока НЕ восстанавливает уже удалённое. Очистка идёт при старте, и то, что стёрлось на прошлых запусках, ушло навсегда. Поэтому эту настройку ставят первым делом - она останавливает потери на будущее, но не возвращает то, что уже стёрлось. Если тебе важно не терять историю Claude Code, как и не терять сам проект от случайной команды, посмотри и гайд «Как настроить Claude Code, чтобы он не сломал твой проект».

Твоя история сессий - это часть второго мозга проекта: там логика решений, которую ты нигде больше не записал. cleanupPeriodDays спасает файлы, но не превращает их в систему, из которой ты сможешь достать нужное через полгода. На практикуме за 3 эфира собираешь всю связку целиком: ИИ-клон + Второй мозг + Контекст-инжиниринг - именно она превращает Claude из «помощника, который всё забыл» в предсказуемый инструмент.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - стек, метод, первый проект
Старт 14–16 июля  ·  2 000 ₽
Записаться →

Как сохранить историю навсегда и автоматически?

Идея простая: пусть Claude Code делает что хочет со своей папкой, а у тебя есть отдельный несгораемый архив снаружи. Собери его так:

  1. Создай папку для архива за пределами управляемой директории:
bash
mkdir -p ~/claude-history-archive
  1. Скопируй туда текущую историю. Флаг -a сохраняет структуру и метки времени, --ignore-existing не трогает уже скопированное:
bash
rsync -a ~/.claude/projects/ ~/claude-history-archive/
  1. Автоматизируй запуск раз в день. На macOS - через launchd. Создай файл ~/Library/LaunchAgents/ru.smyslokod.claudearchive.plist:
xml
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ru.smyslokod.claudearchive</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/rsync</string>
    <string>-a</string>
    <string>/Users/ТВОЁ_ИМЯ/.claude/projects/</string>
    <string>/Users/ТВОЁ_ИМЯ/claude-history-archive/</string>
  </array>
  <key>StartInterval</key>
  <integer>86400</integer>
</dict>
</plist>
  1. Загрузи агент, чтобы он работал в фоне:
bash
launchctl load ~/Library/LaunchAgents/ru.smyslokod.claudearchive.plist

На Linux то же самое делает одна строка в crontab (crontab -e):

bash
0 3 * * * rsync -a ~/.claude/projects/ ~/claude-history-archive/

Почему это работает там, где ломается синхронизация из прошлого раздела: архив лежит СНАРУЖИ ~/.claude/projects/, поэтому очистка его не видит в принципе. Копирование идёт в одну сторону (из живой папки в архив), и mtime живых файлов мы не трогаем - значит mtime-баг не срабатывает. Даже если Claude Code завтра удалит сессию у себя, её копия останется в архиве.

Как превратить архив сессий в поисковый второй мозг?

Просто копить файлы мало - к ним нужен доступ. Два шага превращают архив в рабочий инструмент.

Первое - версионирование через git. Инициализируй репозиторий прямо в папке архива:

bash
cd ~/claude-history-archive
git init
git add -A && git commit -m "Первый снимок истории Claude Code"

Добавь git add -A && git commit в тот же ежедневный запуск, что и rsync. Теперь у тебя история версий: видно, что и когда появилось, а случайная перезапись откатывается одной командой.

Второе - поиск. Файлы .jsonl это построчный JSON, поэтому по ним работают привычные инструменты. Найти, в какой сессии обсуждали конкретную тему:

bash
grep -rl "миграция базы" ~/claude-history-archive/

Вытащить только текст своих промптов из сессии (через jq, раз это JSON):

bash
jq -r 'select(.type=="user") | .message.content' session.jsonl

Вот на этом шаге история сессий начинает работать как второй мозг проекта: база, из которой ты за секунды достаёшь «как мы это решили в марте». Про то, куда внутри сессии уходит контекст и как им управлять, есть отдельный разбор - «Куда уходят токены в Claude Code».

Можно ли восстановить уже удалённые сессии?

Честный ответ: скорее всего, нет. У Claude Code нет функции восстановления, нет корзины и нет журнала отмены для удалённых транскриптов. Файл просто исчезает с диска.

Остаётся один путь - системные бэкапы, если они были включены заранее:

  1. macOS Time Machine - если снапшот захватил ~/.claude/projects/ до удаления, файл можно достать из бэкапа за нужную дату.
  2. OneDrive / Dropbox version history - если папка была под синхронизацией с версионированием, ищи файл в истории версий облака (но помни про mtime-ловушку: синхронизация тоже могла спровоцировать удаление).
  3. Ручные копии - любой rsync/cp, который ты запускал руками, наружу от управляемой папки.

Если ничего из этого не было - сессия ушла. И это не редкость: у одного из авторов бага в репозитории Anthropic битыми оказались 26 из 38 записей, месяцы работы. Единственная надёжная защита - та, что стоит ДО потери. Настрой cleanupPeriodDays и авто-архив сегодня, пока есть что спасать.

Какое значение cleanupPeriodDays выбрать?

Настройка одна, а смыслов у неё несколько. Сравни варианты и выбери под свой сценарий:

ЗначениеЧто делаетКому подходит
30 (по умолчанию)Удаляет сессии старше 30 дней при стартеНе нужна история; важнее не хранить чувствительные данные на диске
365Хранит год, чистит раз в годНужна недавняя история, но не бесконечный архив
3650На практике удаление отключеноХочешь сохранять всё + внешний архив (рекомендую)
CLAUDE_CODE_SKIP_PROMPT_HISTORYВообще не пишет историю на дискМаксимальная приватность, история не нужна совсем

Важная оговорка про безопасность: если ты выставляешь 3650 и хранишь всё, ты соглашаешься держать на диске транскрипты с потенциальными ключами и кодом. Это осознанный обмен - удобство архива против риска. Минимизируй риск: держи архив на зашифрованном диске (FileVault на macOS), не клади его в публичное облако и не коммить в открытый git-репозиторий. Про то, какие данные вообще утекают через Claude Code, я собрал отдельный гайд - «Безопасность данных в Claude Code».

Что сделать сегодня: чек-лист

Собери защиту по шагам:

  1. Задай cleanupPeriodDays: 3650 в ~/.claude/settings.json - остановил удаление.
  2. Создай ~/claude-history-archive вне управляемой папки и сделай первый rsync -a.
  3. Повесь ежедневный запуск через launchd (macOS) или cron (Linux).
  4. Инициализируй git в архиве и добавь git add -A && git commit в тот же запуск.
  5. Проверь, что архив на зашифрованном диске и не уходит в публичное облако.
  6. Раз в неделю убеждайся, что архив пополняется: ls -lt ~/claude-history-archive/.

История сессий - это только один слой контекста, который делает Claude стабильным. Полная схема по вайб-кодингу - ИИ-клон + Второй мозг + Контекст-инжиниринг - собирается за 3 эфира практикума. Записи остаются у тебя.

Источники

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - стек, метод, первый проект
Старт 14–16 июля  ·  2 000 ₽
Записаться →

Новые материалы - дайджестом, без спама

Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

Была инструкция полезна?
Артемий Миллер
Автор
Артемий Миллер
Предприниматель и вайб-кодер

Артемий Миллер - предприниматель и вайб-кодер. Бывший программист, собирает продукты исключительно вместе с ИИ-агентами, без найма разработчиков.

Связанные инструкции

Как проверить код от ИИ, если не умеешь читать код: 7 проверок для непрограммиста в 2026

Пошаговый разбор: как непрограммисту проверить код от ИИ - 7 проверок и готовые промпты, чтобы не выкатить сломанный или дырявый проект.

14 мин

Что выбрать в Claude Code в 2026: Skills, Subagents, MCP или Plugins

Skill, subagent, MCP и plugin - четыре слоя одной архитектуры. Разбираю матрицу выбора, формулу композиции от Anthropic и 7 анти-паттернов с примерами из своих проектов.

20 мин

4 правила Karpathy в CLAUDE.md: разбор файла с 179K звёзд

179K звёзд за полгода. Один CLAUDE.md из 4 правил, который чинит самые частые провалы ИИ-агента. Разбираю каждое правило и показываю, что копировать.

16 мин

Как сделать один файл инструкций для Claude Code, Codex и Cursor в 2026

Каждый инструмент - Claude Code, Codex, Cursor - читает свой файл инструкций. Дублировать в пяти местах - больно. Anthropic в документации даёт прямое решение: один источник правды через `@AGENTS.md`.

15 мин