Перенос 275 сессий Claude Code на второй аккаунт
Содержание
У меня два аккаунта Anthropic. Первый упёрся в лимиты, и я перевёл работу на второй (почему выбрал такой путь: какую подписку Claude выбрать для работы).
Залогинился в Claude desktop на маке. В пикере сессий 4 штуки, все новые. А где 275 старых?
Вердикт: история целая. Claude desktop хранит список сессий в локальном сторе (внутренней базе приложения) с ключом «аккаунт + организация». Новый логин переключает приложение на другую папку, старые записи остаются лежать на диске. Лечится копированием файлов local_*.json из папки старого аккаунта в папку новой организации при полностью закрытом приложении. На выходе 279 сессий в пикере, группировка по проектам сохранилась.
Почему сессии пропадают
Кейс: macOS, Claude Code 2.1.286, октябрь 2026.
Все сессии Claude Code в desktop-приложении лежат в одной папке: ~/Library/Application Support/Claude/claude-code-sessions/. Внутри папки-UUID аккаунтов (имена папок: длинные случайные идентификаторы), в каждой папке-UUID организаций, и уже там записи local_<id>.json, по файлу на сессию.
Поля аккаунта внутри записи нет. Разобрали расшифровку полей в #58670.
Приложение при запуске листит ровно одну папку: текущий аккаунт + текущая организация. Переключил аккаунт. Пикер пуст. Ключ стора сменился (#85294).
Как устроен этот каталог, описывает и официальный док data-storage.
Агент отличил папки по содержимому: в папке нового аккаунта лежат ровно те 4 свежие сессии, в старой все 275 файлов с историей.
Сами разговоры лежат отдельно: транскрипты ~/.claude/projects/, общие для всех аккаунтов компьютера. Запись из пикера цепляется к транскрипту полем cliSessionId. Что у агента где лежит вообще: слои контекста.
Сначала сделал неправильно
Первым делом попросил агента скопировать папку старого аккаунта целиком. Открыл приложение: в пикере те же 4 сессии.
Причину агент увидел сразу. Второй уровень пути это UUID организации старого аккаунта. Приложение читает пару «текущий аккаунт + текущая организация», в папку старой орги оно не заглядывает. Копируешь структуру как есть, и файлы попадают в папку, которую пикер игнорирует.
Переносить надо содержимое: файлы записей в папку текущей организации.
Перенос
Готовый промпт для повтора:
Агент заглянул на первый уровень, нашёл UUID обоих аккаунтов, скопировал 275 файлов local_*.json в папку текущей организации. По промпту вместе с записями переехали archived-sessions.idx и маркеры deleted_*.
Зачем они нужны. archived-sessions.idx хранит флаги архивации: без него архивные сессии встанут в общий список. Маркеры deleted_* помечают удалённые: без них сессии, которые я сносил, воскреснут в пикере.
Открыл Claude. В пикере 279 сессий: 275 старых и 4 новых. Группировка по репозиториям на месте. Мой случай совпадает с #88607, там тот же рецепт: полностью закрыть приложение, скопировать записи, запустить.
Почему именно Cmd+Q
Закрыть окно на маке мало. Приложение продолжает висеть в памяти, держит кэш списка сессий (
LSS-cached-sessionsво внутреннем хранилище) и переписывает открытые записи из памяти. Скопированное при живом приложении может затереться при следующем запуске.
Если пикер не нужен, есть обходной путь в терминале: claude --resume видит все локальные сессии при любом логине, потому что читает транскрипты напрямую, минуя стор.
Грабли
Первая: у части старых записей транскрипта на диске уже нет. Агент насчитал таких 37 из 275: запись в пикере вернётся, сессия откроется пустой, вернуть историю нечем. Перед переносом попроси агента проверить, что транскрипты живы в ~/.claude/projects/.
Вторая: копия оставляет дубли в двух аккаунтах. Дальше записи расходятся: в одном аккаунте сессию переименуешь и продолжишь, во втором останется старая копия. Поэтому claude-transplant переносит записи целиком и держит резерв источника на откат, дубли не возникают.
Похожий инструмент restore-desktop-sessions решает смежную задачу восстановления. Оба нашёл уже после своего переноса, сам не гонял.
Альтернативы
С 27 августа 2026 в приложении есть /resume: подтягивает терминальные сессии этого компьютера. Помогает продолжить конкретную сессию прямо сейчас, без разбора папок.
Рядом лежит Help → Troubleshooting → Import Claude Code CLI sessions. Пересоздаёт записи из транскриптов: пригодится, когда записи потерялись при живых транскриптах. Оба пути работают с транскриптами, им всё равно, в какой ты организации.
Официальной миграции между аккаунтами нет: #48511 закрыт со статусом not planned. Перенос записей силами агента пока единственный прямой путь.
Частые вопросы
Сессии удалились после смены аккаунта? Нет. Они лежат в папке старого аккаунта, приложение её перестало читать.
Транскрипты тоже переносить?
Транскрипты в ~/.claude/projects/ общие для всех аккаунтов компьютера. Переносить нечего.
Где посмотреть UUID своей организации? В интерфейсе приложения его не показывают. Агент найдёт нужную папку по содержимому: в текущей организации лежат сессии, созданные после входа в новый аккаунт.
Сработает на Windows? Кейс с macOS. Похоже, механика та же (ключ «аккаунт + организация»), но на Windows я не проверял, путь к папке будет другим.
Это безопасно? Копирование файлов при закрытом приложении. Аккаунты и подписки оно не трогает.
Весь фикс выглядел так: нашёл стор, дал агенту промпт из callout выше, проверил пикер. Файлов руками я не открывал. Таким workflow я живу каждый день и учу ему в Кружке Вайбкодинга: вайбкодеры без программерского бэкграунда. Если хочешь так же: в Кружке разбираем это на практике, с агентами и вживую.