Каждый день в 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 хранит историю сессий?
Найти свою историю просто. Открой терминал и посмотри содержимое папки:
ls ~/.claude/projects/Каждая подпапка - это отдельный проект. Имя кодирует путь: например, проект в /Users/artemii/dev/shop превращается в папку -Users-artemii-dev-shop. Внутри - файлы сессий:
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/. Логика очистки действует только внутри этой папки. Копия, которая лежит снаружи, ей уже неподвластна. Дальше собираю решение именно на этом принципе.
Как остановить удаление истории прямо сейчас?
Останови удаление в три шага:
- Открой файл настроек:
~/.claude/settings.json(если файла нет - создай его). - Добавь параметр
cleanupPeriodDaysс большим значением:
{
"cleanupPeriodDays": 3650
}- Сохрани файл. Настройка применится при следующем старте Claude Code.
Значение 3650 - это десять лет: на практике удаление больше не сработает. Если хочешь оставить очистку, но с запасом, поставь 365 (год) - тогда исчезать будут только сессии старше года. Проверить, что параметр подхватился, можно командой:
grep cleanupPeriodDays ~/.claude/settings.jsonОдна оговорка, которую легко пропустить: расширение срока НЕ восстанавливает уже удалённое. Очистка идёт при старте, и то, что стёрлось на прошлых запусках, ушло навсегда. Поэтому эту настройку ставят первым делом - она останавливает потери на будущее, но не возвращает то, что уже стёрлось. Если тебе важно не терять историю Claude Code, как и не терять сам проект от случайной команды, посмотри и гайд «Как настроить Claude Code, чтобы он не сломал твой проект».
Твоя история сессий - это часть второго мозга проекта: там логика решений, которую ты нигде больше не записал. cleanupPeriodDays спасает файлы, но не превращает их в систему, из которой ты сможешь достать нужное через полгода. На практикуме за 3 эфира собираешь всю связку целиком: ИИ-клон + Второй мозг + Контекст-инжиниринг - именно она превращает Claude из «помощника, который всё забыл» в предсказуемый инструмент.
Как сохранить историю навсегда и автоматически?
Идея простая: пусть Claude Code делает что хочет со своей папкой, а у тебя есть отдельный несгораемый архив снаружи. Собери его так:
- Создай папку для архива за пределами управляемой директории:
mkdir -p ~/claude-history-archive- Скопируй туда текущую историю. Флаг
-aсохраняет структуру и метки времени,--ignore-existingне трогает уже скопированное:
rsync -a ~/.claude/projects/ ~/claude-history-archive/- Автоматизируй запуск раз в день. На macOS - через launchd. Создай файл
~/Library/LaunchAgents/ru.smyslokod.claudearchive.plist:
<?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>- Загрузи агент, чтобы он работал в фоне:
launchctl load ~/Library/LaunchAgents/ru.smyslokod.claudearchive.plistНа Linux то же самое делает одна строка в crontab (crontab -e):
0 3 * * * rsync -a ~/.claude/projects/ ~/claude-history-archive/Почему это работает там, где ломается синхронизация из прошлого раздела: архив лежит СНАРУЖИ ~/.claude/projects/, поэтому очистка его не видит в принципе. Копирование идёт в одну сторону (из живой папки в архив), и mtime живых файлов мы не трогаем - значит mtime-баг не срабатывает. Даже если Claude Code завтра удалит сессию у себя, её копия останется в архиве.
Как превратить архив сессий в поисковый второй мозг?
Просто копить файлы мало - к ним нужен доступ. Два шага превращают архив в рабочий инструмент.
Первое - версионирование через git. Инициализируй репозиторий прямо в папке архива:
cd ~/claude-history-archive
git init
git add -A && git commit -m "Первый снимок истории Claude Code"Добавь git add -A && git commit в тот же ежедневный запуск, что и rsync. Теперь у тебя история версий: видно, что и когда появилось, а случайная перезапись откатывается одной командой.
Второе - поиск. Файлы .jsonl это построчный JSON, поэтому по ним работают привычные инструменты. Найти, в какой сессии обсуждали конкретную тему:
grep -rl "миграция базы" ~/claude-history-archive/Вытащить только текст своих промптов из сессии (через jq, раз это JSON):
jq -r 'select(.type=="user") | .message.content' session.jsonlВот на этом шаге история сессий начинает работать как второй мозг проекта: база, из которой ты за секунды достаёшь «как мы это решили в марте». Про то, куда внутри сессии уходит контекст и как им управлять, есть отдельный разбор - «Куда уходят токены в Claude Code».
Можно ли восстановить уже удалённые сессии?
Честный ответ: скорее всего, нет. У Claude Code нет функции восстановления, нет корзины и нет журнала отмены для удалённых транскриптов. Файл просто исчезает с диска.
Остаётся один путь - системные бэкапы, если они были включены заранее:
- macOS Time Machine - если снапшот захватил
~/.claude/projects/до удаления, файл можно достать из бэкапа за нужную дату. - OneDrive / Dropbox version history - если папка была под синхронизацией с версионированием, ищи файл в истории версий облака (но помни про mtime-ловушку: синхронизация тоже могла спровоцировать удаление).
- Ручные копии - любой
rsync/cp, который ты запускал руками, наружу от управляемой папки.
Если ничего из этого не было - сессия ушла. И это не редкость: у одного из авторов бага в репозитории Anthropic битыми оказались 26 из 38 записей, месяцы работы. Единственная надёжная защита - та, что стоит ДО потери. Настрой cleanupPeriodDays и авто-архив сегодня, пока есть что спасать.
Какое значение cleanupPeriodDays выбрать?
Настройка одна, а смыслов у неё несколько. Сравни варианты и выбери под свой сценарий:
| Значение | Что делает | Кому подходит |
|---|---|---|
30 (по умолчанию) | Удаляет сессии старше 30 дней при старте | Не нужна история; важнее не хранить чувствительные данные на диске |
365 | Хранит год, чистит раз в год | Нужна недавняя история, но не бесконечный архив |
3650 | На практике удаление отключено | Хочешь сохранять всё + внешний архив (рекомендую) |
CLAUDE_CODE_SKIP_PROMPT_HISTORY | Вообще не пишет историю на диск | Максимальная приватность, история не нужна совсем |
Важная оговорка про безопасность: если ты выставляешь 3650 и хранишь всё, ты соглашаешься держать на диске транскрипты с потенциальными ключами и кодом. Это осознанный обмен - удобство архива против риска. Минимизируй риск: держи архив на зашифрованном диске (FileVault на macOS), не клади его в публичное облако и не коммить в открытый git-репозиторий. Про то, какие данные вообще утекают через Claude Code, я собрал отдельный гайд - «Безопасность данных в Claude Code».
Что сделать сегодня: чек-лист
Собери защиту по шагам:
- Задай
cleanupPeriodDays: 3650в~/.claude/settings.json- остановил удаление. - Создай
~/claude-history-archiveвне управляемой папки и сделай первыйrsync -a. - Повесь ежедневный запуск через launchd (macOS) или cron (Linux).
- Инициализируй git в архиве и добавь
git add -A && git commitв тот же запуск. - Проверь, что архив на зашифрованном диске и не уходит в публичное облако.
- Раз в неделю убеждайся, что архив пополняется:
ls -lt ~/claude-history-archive/.
История сессий - это только один слой контекста, который делает Claude стабильным. Полная схема по вайб-кодингу - ИИ-клон + Второй мозг + Контекст-инжиниринг - собирается за 3 эфира практикума. Записи остаются у тебя.
Источники
- The Register - Claude Code users complain their chat records are being wiped out (30.06.2026)
- Hacker News - Beware, Claude Code deletes >30 day old transcripts. Anthropic won't fix it
- Hacker News - Claude Code deletes conversations after 30 days
- GitHub Issue #59248 - Silent retention cleanup deletes session transcripts
- GitHub Issue #62476 - Claude Code silently deletes conversation history
- GitHub Issue #62959 - Session transcripts silently auto-deleted after 30 days
- Claude Code Docs - настройки settings.json (cleanupPeriodDays)
- ITdaily - Claude Code deletes conversation history after 30 days by default
- DevelopersIO - storage location and retention period of Claude Code history
- Claude Code Docs - что нового
Новые материалы - дайджестом, без спама
Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

