45 мегабайт сессий Claude Code, которые ты не видишь

от автора

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

И каждый раз при переключении в боковой панели приложения список сессий перестроился, новое лицо, новые проекты. А прошлая сессия, в которой я два дня разбиралась с цветокоррекцией или с генерациями по доскам пропала. Файлы где-то на диске, я знаю. Но в окне приложения её нет. Куда она ушла? Пропущена? Просто скрыта?

Если переключение между аккаунтами это нормальная история, можно ли его автоматизировать так, чтобы старые сессии не терялись из видимости? Хотя бы найти, где они физически живут, и потом думать дальше.

То, что я нашла, оказалось интереснее ожиданий. На жёстком диске 48 мегабайт истории работы с Claude, разбитой по шести папкам accountId. В окне приложения у меня видно 69 сессий из 715. Десять процентов. Остальные на диске, доступны для cat/grep/Python, но через приложение полностью невидимы…

Эта заметка о том где они лежат, как вернуть их, и почему любой инструмент миграции сейчас имеет срок годности.

Где они физически

На macOS сессии Claude desktop живут в ~/Library/Application Support/Claude/claude-code-sessions/<accountId>/<orgId>/local_*.json. Распаковав собранный JS приложения, прошлась по строкам и в .vite/build/index.js на 771-й строке нашла константу const $6t="claude-code-sessions". Значит сессии хранятся в папке с этим именем.

На Windows в C:\Users\<user>\AppData\Roaming\Claude\ лежит обычная Electron-структура: Cache, IndexedDB, leveldb. А папки claude-code-sessions нет. Зато есть два подозрительных пустых каталога: Claude Nest-3p/ и Claude-3p/. Похоже на новую архитектуру в подготовке. Параллельно я прошлась по англоязычному интернету посмотреть что пишут другие пользователи.

Открытых GitHub issues про эту проблему набралось минимум десять, семь активные на 30 апреля 2026. Issue #48511 от 15 апреля: «session history lost when switching accounts». 0 комментариев от команды Anthropic. Issue #26452, открыт с февраля 2026, 40 комментариев от пользователей, 0 ответов от MEMBER/OWNER/COLLABORATOR. Я проверила вручную, ни один комментарий не помечен зелёным значком, сорок жалоб в пустоту.

В комментариях сообщества к issue #29373 (от пользователя mbbender, 27 февраля 2026) нашлась точная цитата: путь восстановили из собранного JS-приложения, .vite/build/index.js строка 771, константа const $6t="claude-code-sessions". Приложение хранит сессии в %APPDATA%\Claude\claude-code-sessions\<accountId>\<orgId>\local_<sid>.json. Структура одинаковая с macOS, отличается только корневая папка. Я повторила ls своей машины, и папка существует. Внутри неё шесть каталогов accountId.

Запустила Python-скрипт для подсчёта:

[372ac280…] sessions=4    size=2K     last=2026-04-13  → тестовый[4d1f33a2…] sessions=330  size=44M    last=2026-04-08  → главный архив (заброшен)[a4ea2866…] sessions=83   size=4.5M   last=2026-04-10  → архив[a9e945b6…] sessions=83   size=252K   last=2026-04-26  → недавний параллельный[be2110e2…] sessions=69   size=203K   last=2026-04-29  → АКТИВНЫЙ СЕЙЧАС[c53acc1e…] sessions=141  size=244K   last=2026-04-26  → недавний параллельный

Шесть аккаунтов, не четыре, как я была уверена. Про два старых я просто забыла. И самый забытый, 4d1f33a2, оказался главным архивом, 44 мегабайта, 330 сессий, пять месяцев работы.

Что лежит в репозитории

Я разбила решение на четыре Python-скрипта, все кросс-платформенные через sys.platform (Mac, Windows, Linux). Лежат в публичном репозитории github.com/AnastasiyaW/claude-code-config, внутри skills/operational/desktop-sessions-discovery/scripts/. Описание ниже не инструкция по ручной установке, это просто карта что куда положено, чтобы понимать как оно устроено перед тем как Claude всё развернёт за тебя.

sessions_registry.py, главная точка входа. Читает все сессии со всех аккаунтов, генерирует один самодостаточный HTML с поиском, сортировкой и кнопкой «Восстановить» на каждой карточке, автоматически открывает в браузере. Внутри HTML весь JavaScript, никаких внешних зависимостей. Активный аккаунт выделен зелёным, у каждой сессии заголовок, дата, число ходов, имя проекта, размер, префикс sessionId. Жмёшь «Восстановить», команда копируется в буфер обмена, вставляешь в чат с Claude или в терминал. Если сессию уже восстановили однажды, она помечается «ВОССТАНОВЛЕНО» по журналу миграций в ~/.claude/desktop-migrations.jsonl. Скрипт читает оба формата сразу: текущий claude-code-sessions/ и устаревший local-agent-mode-sessions/ (его переименовали в феврале 2026).

sessions_inventory.py даёт текстовый отчёт с группировкой по аккаунтам и сводкой по проектам которые встречаются в нескольких аккаунтах сразу.

sessions_find.py "<запрос>" ищет по подстроке в заголовке или рабочей папке, есть ключи для фильтра по аккаунту и временному окну.

sessions_restore.py <sid8> делает точечную миграцию одной сессии в активный аккаунт: побайтная проверка скопированного файла, запись в журнал, оригинал никогда не удаляется. После перезапуска приложения Claude desktop сессия видна в окне.

Структура репозитория частично: skill подгружается фразой «покажи все сессии для миграции», внутри лежит SKILL.md с триггерами и сценарием использования + scripts/ с этими четырьмя файлами. Triggers документированы для трёх языков (русский, английский) и ловят формулировки типа «потерянные сессии», «show me sessions», «migration from accounts».

Как это выглядит в работе

Я говорю Claude в любом чате: «покажи все сессии на моём компьютере для миграции». Он понимает по триггерной фразе (skill desktop-sessions), запускает sessions_registry.py, у меня открывается браузер с панелью управления. Скроллю карточки, нахожу например 392-шаговую сессию «делаем генерации по доскам» из заброшенного 4d1f33a2, нажимаю «Восстановить», команда оказывается в буфере обмена. Возвращаюсь в чат, вставляю: «восстанови вот эти три», Claude выполняет три команды восстановления, я перезапускаю приложение, сессии появляются в окне.

На Mac бонус: команда mdfind -onlyin ~/Library/Application\ Support/Claude/ "колор чекер" индексирует содержимое файлов JSON через Spotlight, можно искать по тексту прямо в сессиях. На Windows аналога нет, зато sessions_find.py решает ту же задачу за полсекунды через перебор файлов.

Как развернуть у себя: отдай Claude ссылку на репо

Самый простой путь — отдать своему Claude ссылку на мой публичный репозиторий и попросить установить. Открой Claude Code в любой папке и скажи примерно так:

Возьми репозиторий https://github.com/AnastasiyaW/claude-code-config, найди в нём skill desktop-sessions-discovery (он лежит в skills/operational/), поставь его себе в ~/.claude/skills/. Потом запусти sessions_registry.py и покажи мне в браузере панель моих сессий.

Дальше Claude склонит репо, найдёт нужный skill, прочитает SKILL.md чтобы понять как им пользоваться, скопирует к себе, запустит. Я никаких команд git clone или cp -r руками не пишу, не помню структуру репо наизусть, не сверяюсь с версией Python. Это и есть основной режим работы skills: даёшь агенту ссылку на toolkit, он его осваивает и применяет, как человек прочитал бы README.

Если по каким-то причинам Claude не справится все скрипты внутри репо лежат в skills/operational/desktop-sessions-discovery/scripts/, можно скачать вручную и положить в ~/.claude/skills/desktop-sessions-discovery/.

CLI и handoff: соседняя задача того же домена

Сессии на диске, это «как сохранить историю». Но есть соседняя задача, которая всплывает в каждой второй переписке: как продолжить работу там, где остановилась прошлая сессия, особенно если новая в другом аккаунте, на другой машине, или просто после долгого перерыва.

Memory и CLAUDE.md помнят фактологию проекта и правила работы. Но не отвечают на вопрос «что Я делала прямо сейчас в прошлой сессии, какие гипотезы проверила, на каких граблях стояла».

Я решаю это через передачу контекста сессии. В конце каждой длинной сессии Claude пишет файл .claude/handoffs/YYYY-MM-DD_HH-MM_<session-id>.md с шестью полями: цель сессии в одном предложении; что сделано конкретно (файлы, тесты, числа); что НЕ сработало (самая ценная часть, гипотезы которые проверила и отбросила, с причинами); текущее состояние (работает, сломано, заблокировано); один следующий шаг; чеклист проверок только на чтение для следующей сессии.

Хранится по одному файлу на сессию. Никогда не перезаписывается. Дозаписываемый INDEX.md рядом, кто что когда писал.

Когда стартует новая сессия в той же папке проекта, Claude читает INDEX.md, видит свежие передачи, спрашивает «продолжить session X или начать новую?». При подтверждении читает передачу целиком, 1500 токенов вместо 50К токенов истории. Тупики предыдущей сессии не повторяются.

Этот порядок работы задокументирован в публичном репозитории в двух местах: principles/18-multi-session-coordination.md (теоретический фрейм, дозаписываемое состояние против изменяемого общего состояния) и alternatives/session-handoff.md (сравнительная таблица пяти подходов).

Связка с предыдущей секцией такая. Реестр сессий даёт «найти что я делала когда-то». Передача контекста даёт «продолжить ровно там, где остановилась». Обе задачи решаются файлами на твоём компе, и desktop-приложение, и CLI Claude Code хранят их локально, но раскладывают по-разному, и от этой раскладки зависит насколько удобна передача.

Desktop-приложение делит сессии по <accountId>/<orgId>/, каждый аккаунт в своей папке. Переключила аккаунт, окно показывает только сессии этого аккаунта, остальные становятся невидимыми. Писать передачу в файл рядом с такой сессией бессмысленно, потому что новая сессия в другом аккаунте этот файл не увидит, плюс приложение и не умеет открывать рядом лежащие файлы. Идея handoff’а ломается о схему хранения.

CLI Claude Code хранит всё в одном ~/.claude/projects/<slug>/, независимо от аккаунта. Переключила аккаунт, переписался только .credentials.json, сессии в ~/.claude/projects/ остались доступны всем. Передачу пишешь в .claude/handoffs/ той же папки проекта. Любая новая сессия которая откроется в этой папке (в любом аккаунте) увидит передачу и подхватит контекст. Это плавный переход к моей долгосрочной рекомендации.

Что я не делала и почему

Не сливала все 715 сессий в активный аккаунт одним проходом. Список из 700+ записей в боковой панели становится нечитаемым, особенно когда там штук пятьдесят пустых автозапусков «Morning digest 10am» и «Observer daily analysis». Плюс есть реальный риск, что новая проверка (та самая, про которую гипотеза в issue #18645) отвергнет пакет. Точечное восстановление работает лучше: нужна конкретная сессия под конкретную задачу, восстановила её одну.

Не делала автомиграцию через перехватчики при старте. VM bundle это сейчас инструмент, прибитый гвоздями к текущему формату хранения, превратится в тыкву в любой момент. Лучше поиск вместо автомата, выборочное восстановление вместо массового, и постепенный сдвиг работы в CLI.

Симлинки между папками аккаунтов я не люблю. У меня в глобальном CLAUDE.md правило: никаких симлинков. Они ломаются при первом же изменении пути, создают невидимые зависимости и плодят странные баги через полгода. Только копирование.

Исходный файл local_<sid>.json после восстановления не удаляется. Лежит в исходном accountId как резервная копия. Если новая проверка когда-нибудь отвергнет копию, или если придётся повторять, оригинал на месте.

Что дальше?

Честно говоря, инструмент миграции сессий который я описала выше, это решение конкретной сегодняшней проблемы. Я не уверена что он будет работать через релиз-два. Anthropic за последний год меняла формат хранения сессий три раза: local-agent-mode-sessions/claude-code-sessions/ (issue #29373) → сейчас на macOS у части пользователей едет переезд на формат образа диска vm_bundles/claudevm.bundle/ (issue #54428). Каждый раз самодельные инструменты восстановления ломаются. Тот что я описала тоже сломается, вопрос только когда.

Поэтому моя реальная долгосрочная стратегия другая: передача контекста (handoff) после каждой важной сессии. Хандоф не зависит от того, в каком формате Anthropic хранит свою историю чатов. Это просто markdown-файл который Claude пишет сам в мою папку проекта, в .claude/handoffs/YYYY-MM-DD_HH-MM_<session-id>.md. Anthropic перенесёт сессии в SQLite, в зашифрованный образ диска, в облако с DRM, мне всё равно. Мой хандоф лежит в моём репозитории, рядом с моим проектом, в открытом markdown-формате. Любая новая сессия которая откроется в этой папке (на любой архитектуре, в любом аккаунте, через год) его прочитает.

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

Цифры

  • 715 сессий на диске у меня (Windows 11)

  • 48 МБ суммарно

  • 6 каталогов accountId, главный заброшенный архив 44 МБ / 330 сессий

  • Видно в окне приложения: 69 сессий (10% от total)

  • 10+ открытых GitHub issues про эту проблему, 7+ open на 30 апреля 2026

Что не работает

Официальной документации этих путей нет. Anthropic нигде их не описывает. https://code.claude.com/docs/en/desktop говорит только «each conversation is a session: it has its own chat history, project folder, and code changes, independent of any other session». Где сессия физически лежит, ни слова. Всё что я знаю, собрала по коду из бинарника или из пользовательских сообщений об ошибках.

Установка из Microsoft Store сломана отдельно. Это про MSIX, формат пакетов в магазине Windows. Issue #48362: атомарное переименование local_<sid>.json.tmplocal_<sid>.json падает с ошибкой EXDEV внутри MSIX-песочницы. Виртуальная файловая система рассматривает источник и цель как разные устройства, ядро отказывается переименовывать. Сессии не сохраняются вообще. К счастью, у меня обычная установка через .exe, не из магазина.

В версии 2.1.9 что-то закрутили. Issue #18645: пользователь fpelliccioni пишет, что в 2.1.9 копирование сессий между машинами перестало работать. Гипотеза автора в том, что Anthropic добавили проверку «сессия создана на этой машине». Сам issue, кстати, закрыт, это пожелание новой возможности на нормальный экспорт/импорт. Межаккаунтная миграция на той же машине пока работает, но проверку явно ужесточают.

И самое неприятное. Issue #54428 от 28 апреля 2026: следующая архитектура desktop уже переезжает на формат VM bundle. На macOS Claude Desktop 1.4758.0 у части пользователей уже появились файлы ~/Library/Application Support/Claude/vm_bundles/claudevm.bundle/ с rootfs.img, sessiondata.img, efivars.fd. Это disk-image, не обычный JSON. После полного релиза копирование local_*.json файлами, скорее всего перестанет работать совсем . Инструмент имеет срок годности. Сейчас работает а через релиз может перестать.

Источники

ссылка на оригинал статьи https://habr.com/ru/articles/1030216/