Блог

Как сохранить историю Claude Code: срок хранения сессий и архив

Markdown

Разбираем, где Claude Code хранит сессии и как работает cleanupPeriodDays. Настройте срок хранения и создайте внешний автоматический архив истории.

Читать статью полностью

Документация Ailoot доступна на сайте.

Действительно ли Claude Code удаляет историю сессий?

Главное

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

Вы запускаете Claude Code, чтобы продолжить работу над сессией двухмесячной давности, но файла уже нет. Такое поведение предусмотрено механизмом очистки и само по себе не означает сбой.

Срок хранения задаёт параметр cleanupPeriodDays. Значение по умолчанию — 30; при запуске Claude Code проверяет файлы истории и удаляет те, что старше установленного срока. Если настройка не указана в ~/.claude/settings.json, действует значение по умолчанию.

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

Главное

Файлы сессий обычно находятся в ~/.claude/projects/<путь-проекта>/<id-сессии>.jsonl. Каталог проекта отражает путь к рабочей папке, в которой запускался Claude Code: разделители пути заменяются дефисами. В файлах .jsonl хранится диалог в формате JSON Lines. Именно эти файлы затрагивает очистка.

Проверить, какие проектные каталоги есть в истории, можно в терминале:

ls ~/.claude/projects/

Каждая подпапка соответствует проектному пути. Например, путь /Users/you/dev/shop кодируется как -Users-you-dev-shop. Посмотреть файлы сессий можно так:

ls -lt ~/.claude/projects/-Users-you-dev-shop/
# 3f8a1c2e-....jsonl   ← одна сессия хранится в отдельном файле
# a91b7d40-....jsonl

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

Почему Anthropic ограничивает срок хранения транскриптов?

Главное

Документация Anthropic описывает настройку срока хранения транскриптов через cleanupPeriodDays. Файлы на компьютере могут содержать исходный код и другие чувствительные данные, поэтому длительное хранение требует учитывать риски доступа к устройству и диску. Значение по умолчанию составляет 30 дней.

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

Anthropic предоставляет настройку срока хранения истории в документации Claude Code. Выбирая более длительный срок, учитывайте необходимость защищать сохранённые файлы и ограничивать доступ к ним.

Может ли резервное копирование повлиять на очистку?

Главное

При настройке резервного копирования не изменяйте содержимое исходных файлов истории без необходимости. Копируйте их в отдельное место, чтобы архив хранился независимо от каталога ~/.claude/projects/ и автоматической очистки Claude Code.

Для резервной копии используйте отдельное расположение. Сервисы синхронизации, rsync, редакторы и другие программы могут менять метаданные файлов при копировании или восстановлении. Не полагайтесь на дату изменения как на точное отражение того, когда вы в последний раз работали с сессией.

Например, при восстановлении файла из облачной копии могут измениться его метки времени. Поэтому безопаснее держать отдельную копию истории за пределами ~/.claude/projects/, а не считать синхронизацию управляемого каталога единственным способом защиты.

Резервная копия должна находиться вне ~/.claude/projects/. Тогда встроенная очистка Claude Code не удалит архив вместе с исходными файлами. Далее настроим копирование именно в отдельный каталог.

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

Главное

В ~/.claude/settings.json можно задать большой срок хранения с помощью cleanupPeriodDays, например 3650 дней. Это сохранит сессии в пределах установленного срока. Настройка влияет только на ещё существующие файлы и не возвращает уже удалённые записи.

Чтобы изменить срок хранения:

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

3650 дней — примерно десять лет. Если достаточно хранить историю в течение года, укажите 365. Проверить значение в файле можно командой:

grep cleanupPeriodDays ~/.claude/settings.json

Увеличение срока хранения не восстанавливает то, что уже удалено. Настройте параметр до очередной очистки, если хотите сохранить имеющиеся сессии. Другие рекомендации по защите проекта при работе с Claude Code собраны в руководстве по безопасной настройке.

Как автоматически сохранять историю в отдельный архив?

Главное

Копируйте файлы сессий в каталог за пределами ~/.claude/projects/. Команда rsync -a позволяет переносить новые файлы, сохраняя структуру каталогов и метки времени. Запланируйте её ежедневный запуск через launchd в macOS или cron в Linux, чтобы архив регулярно обновлялся.

Отдельный архив позволит сохранить копии независимо от очистки в Claude Code. Настройте его так:

  1. Создайте каталог вне управляемой папки:
mkdir -p ~/claude-history-archive
  1. Скопируйте туда текущие файлы сессий. Ключ -a сохраняет структуру каталогов и метки времени:
rsync -a ~/.claude/projects/ ~/claude-history-archive/
  1. Настройте ежедневный запуск. В macOS для этого можно использовать launchd. Создайте файл ~/Library/LaunchAgents/com.example.claudearchive.plist:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.example.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. Загрузите задание, чтобы оно выполнялось в фоне:
launchctl load ~/Library/LaunchAgents/com.example.claudearchive.plist

В Linux добавьте задание в crontab с помощью crontab -e:

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

Архив вне ~/.claude/projects/ защищён от этого механизма очистки только для успешно скопированных файлов. Он всё ещё уязвим к отказу диска, случайному удалению и ошибке копирования. Исходники остаются на месте; копию проверяйте отдельно.

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

Главное

Репозиторий Git в каталоге архива позволит отслеживать изменения и искать по сохранённым файлам. Для истории версий выполните git init, а при обновлении архива добавляйте изменившиеся файлы и создавайте коммиты. Поиск по тексту можно делать через grep, а извлекать данные из .jsonl — через jq.

Само по себе накопление файлов не всегда удобно. Добавьте версионирование и поиск.

Сначала создайте 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:

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

Так архив становится доступной для поиска коллекцией истории сессий. О работе с контекстом и расходом токенов в Claude Code читайте в отдельном руководстве.

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

Главное

Встроенной функции восстановления удалённых сессий нет. Вернуть файл можно только из внешней копии, созданной до удаления: например, из Time Machine, истории версий OneDrive или Dropbox либо из ручного резервного копирования. Если копий не сохранилось, восстановить сессию штатными средствами Claude Code нельзя.

У Claude Code нет отдельной корзины или функции отката для удалённых транскриптов. Если файл удалён, проверьте, были ли заранее настроены резервные копии:

  1. Time Machine в macOS — если снимок включает ~/.claude/projects/, откройте версию за дату до удаления.
  2. История версий OneDrive или Dropbox — если каталог синхронизировался с включённым журналом версий, проверьте сохранённые копии. Имейте в виду, что синхронизация может менять метаданные файлов.
  3. Ручные копии — проверьте каталоги, куда вы ранее копировали данные с помощью rsync или cp.

Если резервных копий нет, средствами Claude Code вернуть сессию не получится. Поэтому настройте срок хранения и внешний архив заранее, пока нужные файлы доступны.

Какое значение задать для cleanupPeriodDays?

Главное

Выберите срок с учётом того, как долго вам нужна история и какие данные в ней могут храниться. 30 дней — значение по умолчанию, 365 — примерно год, 3650 — примерно десять лет. Для полного отказа от сохранения истории можно использовать CLAUDE_CODE_SKIP_PROMPT_HISTORY или параметр --no-session-persistence, если это соответствует вашему сценарию.

Параметр задаёт период хранения. Сопоставьте варианты со своими требованиями:

ЗначениеРезультатПодходящий сценарий
30 (по умолчанию)Удаление сессий, срок которых превышает 30 днейИстория не нужна; важно ограничить срок хранения чувствительных данных
365Хранение в течение годаНужна история недавней работы без длительного архива
3650Хранение примерно десять летТребуется длительный срок; дополнительно настройте внешний архив
CLAUDE_CODE_SKIP_PROMPT_HISTORYОтключает запись истории промптов на дискИсторию не нужно сохранять, приоритет — минимизация локальных данных

Длительное хранение означает, что транскрипты с потенциально конфиденциальными данными остаются на устройстве. Защитите диск шифрованием, например FileVault в macOS, ограничьте доступ к архиву и не размещайте его в общедоступном облаке или открытом Git-репозитории. Дополнительные рекомендации по защите данных приведены в руководстве по безопасности Claude Code.

Что сделать сегодня: список действий

Главное

Увеличьте хранение через cleanupPeriodDays: 3650, копируйте сессии вне ~/.claude/projects/ и сохраняйте версии. От очистки защищены только успешно скопированные файлы. При успешном ежедневном расписании до суток последних изменений остаются без архива; пропуски и ошибки увеличивают разрыв. Копия на том же диске не защищает от его отказа.

Настройте сохранение по пунктам:

  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. Проверяйте успех каждого запуска копирования, просматривайте свежую сессию и периодически восстанавливайте пример в отдельную временную папку, проверяя читаемость.
  7. Для защиты от потери устройства или диска храните независимую резервную копию с подходящим доступом и испытывайте её восстановление. Git на том же диске не является независимой копией.

История сессий — один из способов сохранять контекст работы с Claude Code. Другие материалы Ailoot доступны на сайте.

Познакомиться с Ailoot.

Подробнее

Вопросы и ответы

Гарантирует ли ежедневный архив сохранность любой сессии?

Нет. От очистки управляемой папки защищены только успешно скопированные файлы. При ежедневном успехе могут отсутствовать последние сутки изменений; ошибки увеличивают разрыв. Копия на том же диске может погибнуть вместе с оригиналом.

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

Подтвердите успех расписания, просмотрите свежую сессию и периодически восстанавливайте пример в отдельную временную папку. Для защиты от потери устройства или диска также испытайте независимо хранимую резервную копию.

Все статьи