Как возобновить сессию Claude Code: команды и история
Узнайте, как продолжить работу в Claude Code через команду resume или выбор из списка. Где найти текстовые логи сессий и как переключаться между диалогами в терминале.
Как возобновить сессию Claude Code
Чтобы возобновить сессию Claude Code, выполните claude --continue для последней беседы в текущем каталоге или claude --resume, чтобы выбрать более старую сессию из списка. Находясь внутри уже запущенной сессии, используйте команду /resume для переключения на другую беседу без выхода из программы. Сокращенные формы команд — -c и -r.
claude --continue
claude --resume
claude --resume auth-refactorЕсли вы уже знаете имя или ID сессии, передайте его в качестве аргумента, и Claude Code сразу перейдет к ней, не открывая меню выбора.
Вся информация ниже соответствует официальной документации по сессиям по состоянию на август 2026 года. Claude Code обновляется часто, а названия флагов и сочетания клавиш могут меняться от версии к версии, поэтому при расхождениях с тем, что вы видите в терминале, ориентируйтесь на claude --help и указанную страницу.
Что такое сессия на самом деле
Сессия — это сохраненный диалог, привязанный к директории проекта. Она содержит всю историю сообщений, включая вызовы инструментов, выполненные Claude, и результаты этих вызовов. Claude Code записывает данные на диск непрерывно в процессе работы, а не один раз по завершении, поэтому диалог сохраняется при закрытии терминала или разрыве SSH-соединения.
Возобновление сессии восстанавливает не только текст. История диалога возвращается в полном объеме вместе с моделью, которая использовалась в сессии, и субагентом, с которым она была запущена, если вы использовали --agent. Режим разрешений также восстанавливается, за исключением случаев, предусмотренных для безопасности: режимы plan mode и bypass-permissions mode никогда не восстанавливаются, поэтому сессия, находившаяся в одном из них, возобновляется в том режиме, в котором запускается новая сессия.
Некоторые параметры не восстанавливаются, так как они являются флагами запуска, а не сохраненным состоянием. Директории, добавленные с помощью --add-dir, и опции, такие как --mcp-config, --settings и --plugin-dir, необходимо указывать повторно при возобновлении. Файлы настроек, такие как settings.json, считываются заново при запуске, поэтому все, что в них содержится, повторно вводить не нужно.
Почему история сессий важнее на VPS
Вот факт, который удивляет многих. Транскрипт записывается на той машине, где был запущен агент. Он не хранится в вашей учетной записи и не синхронизируется с облаком. Это файл на диске конкретного сервера.
Поэтому сессия, оставленная вами в окне tmux на VPS, не появится в списке выбора на вашем ноутбуке, а сессия с ноутбука не отобразится на VPS. Данные не перемещаются между ними. Если вы работаете так, как большинство пользователей при запуске Claude Code в tmux на VPS, то именно на сервере накапливается ваша реальная история диалогов, а список, который вы видите локально, содержит другой и гораздо меньший набор данных.
То же разделение применимо и к интерфейсам. Десктопное приложение и расширение для VS Code хранят собственную историю сессий, и ни одна из них не является историей CLI. Claude Code в веб-интерфейсе также ведет свою собственную историю.
В рамках одной машины поиск работает шире, чем вы могли ожидать. claude --resume <session-id> сначала выполняет поиск в текущем каталоге проекта и его git-рабочих деревьях, а затем во всех остальных проектах на этой машине. Главное, что нужно запомнить — «на этой машине». Идентификатор сессии с другого хоста ни к чему не приведет, и Claude Code сообщит вам об этом с помощью No conversation found with session ID: <session-id>.
Где Claude Code хранит историю сессий
По умолчанию транскрипты находятся в директории конфигурации Claude Code, по пути вида ~/.claude/projects/<project>/<session-id>.jsonl.
<project> — это путь к вашей рабочей директории, в котором все небуквенно-цифровые символы заменены на дефис. Таким образом, сессия, запущенная в /home/deploy/apps/api, сохраняется в директории с именем -home-deploy-apps-api. Если преобразованное имя превышает 200 символов, Claude Code обрезает его и добавляет хеш полного пути, чтобы имя директории не выходило за рамки ограничений файловой системы.
Файл имеет формат JSONL: один JSON-объект на строку, каждая строка — это сообщение, использование инструмента или запись метаданных. Это читаемый текст, и его можно просматривать.
Писать парсер для этих файлов не рекомендуется. Формат записей является внутренним для Claude Code и меняется от версии к версии, поэтому скрипт, считывающий эти файлы напрямую, может сломаться при любом обновлении. В документации Anthropic указано, что следует использовать /export или документированные программные интерфейсы, что является правильным подходом именно по этой причине.
Две настройки меняют правила игры. CLAUDE_CONFIG_DIR перемещает всю директорию конфигурации; это позволяет размещать транскрипты на отдельном или зашифрованном томе. Параметр cleanupPeriodDays в settings.json определяет срок хранения записей; по умолчанию он составляет 30 дней, минимальное значение — 1 день.
Что на самом деле содержится в этих файлах транскриптов
Результат работы каждого инструмента записывается, а это значит, что транскрипт содержит содержимое файлов, которые читал Claude, и вывод команд, которые он выполнял. На странице использования данных Anthropic это прямо указано: Claude Code сохраняет транскрипты сессий локально в виде обычного текста в ~/.claude/projects/.
Подумайте, что это означает на сервере. Если Claude прочитал файл .env, чтобы выяснить, почему сервис не запускается, содержимое этого файла теперь находится в файле JSONL в вашей домашней директории. Если команда вывела строку подключения, эта строка тоже там есть. Утечки нет. Транскрипт записал то, что произошло, — в этом и заключается его основная задача, и именно поэтому он должен быть включен в вашу модель угроз.
- Резервные копии: обычное резервное копирование
/homeили/rootкопирует ваши транскрипты туда, где хранятся бэкапы. Добавьте исключение или примите тот факт, что копии ваших промптов и содержимого файлов теперь живут в вашем хранилище резервных копий. - Снапшоты и образы: снапшот VPS, сделанный по любой причине, содержит всю директорию. То же самое касается образа, который вы клонируете для создания второго сервера.
- Другие учетные записи на сервере: проверьте права доступа самостоятельно с помощью
ls -ld ~/.claude ~/.claude/projects, вместо того чтобы предполагать, что они настроены строго. - Намеренная отправка данных: команда
/feedbackотправляет историю диалога в Anthropic намеренно, а/bugи/shareпередают данные по тому же пути. Это действия, которые вы совершаете осознанно, поэтому знайте, на что вы соглашаетесь, прежде чем подтвердить выполнение.
Если вы предпочитаете, чтобы транскрипты не создавались, CLAUDE_CODE_SKIP_PROMPT_HISTORY отключает их запись, а --no-session-persistence отключает их для одного неинтерактивного запуска claude -p. Четко осознавайте последствия этого решения перед настройкой любого из этих параметров. Транскрипты — это то, что считывает функция возобновления сессии, поэтому отсутствие транскрипта означает невозможность возобновления работы.
Как найти старую беседу
Откройте средство выбора с помощью claude --resume или используйте /resume во время активной сессии. В каждой строке отображается имя сессии, если вы его задали, или сгенерированный заголовок, если нет, а также время с момента последней активности, ветка git и размер файла.
Средство выбора поддерживает поиск. Нажмите / или просто начните вводить текст, чтобы отфильтровать список. Полезно изучить сочетания клавиш для расширения области поиска: Ctrl+A показывает сессии из всех проектов на этой машине, Ctrl+W отображает все рабочие деревья (worktrees) текущего репозитория, а Ctrl+B фильтрует список по текущей ветке git. Нажмите Space для предварительного просмотра содержимого сессии перед переключением на неё, и Ctrl+R для переименования выбранного элемента.
Именование сессий значительно упрощает работу. Начните сессию с помощью claude -n auth-refactor или выполните /rename auth-refactor в процессе работы, когда поймете, что беседа переросла в полноценную задачу. Именованную сессию можно возобновить по её названию прямо из командной оболочки.
Безымянной сессии всё равно присваивается сгенерированный заголовок; он создается фоновым запросом к небольшой быстрой модели, которая резюмирует ваш первый запрос. Этот заголовок помогает распознать строку в списке, но не является идентификатором для возобновления. claude --resume <name> находит только те имена, которые вы задали самостоятельно.
Поиск нужной сессии через grep по транскриптам
Иногда вы помните только фразу, но не помните ничего больше. Транскрипты хранятся в текстовом виде, поэтому их можно искать.
grep -rl "nftables" ~/.claude/projects/Эта команда выводит пути к соответствующим транскриптам. Имя файла без расширения .jsonl является идентификатором сессии, который принимает claude --resume <session-id>. Используйте grep, чтобы определить, какая именно сессия вам нужна, а затем возобновите её или экспортируйте для чтения.
Два важных замечания. Содержимое экранировано в формате JSON, поэтому фраза, содержащая кавычки или разбитая переносом строки, может не совпасть при поиске как обычная строка. Кроме того, совпадение внутри результата работы инструмента означает, что этот текст видел Claude, а не то, что его кто-то вводил вручную.
Чтение и экспорт диалога
/export преобразует текущий диалог в обычный текст, где сообщения и вывод инструментов записываются в читаемом виде, а не в формате JSON. Без аргументов команда открывает меню с выбором: буфер обмена или файл. При указании имени файла /export handover.txt записывает данные непосредственно по этому пути. Это оптимальный способ переноса диалога с сервера на локальный компьютер или для прикрепления его к тикету.
Для автоматизации используйте интерфейсы, предназначенные для стабильной работы. Хуки и команды строки состояния получают поле transcript_path в качестве входных данных, поэтому хук SessionEnd может архивировать транскрипт по завершении сессии. Вы также можете задать вопрос сохраненной сессии, не открывая её:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'Эта команда отправляет дополнительный запрос в старый диалог и возвращает структурированный JSON. Это гораздо более надежная основа, чем парсинг формата JSONL, структура которого может измениться в следующем релизе.
Начинать с чистого листа лучше, чем возобновлять сессию
Возобновление сессии возвращает всю историю переписки, и эта история включается в каждый последующий запрос. Продолжать сегодня диалог, который длился четыре часа вчера, — дорогое удовольствие, и в том, как расход токенов накапливается в длинной сессии объясняется, откуда именно берется эта стоимость.
Claude Code иногда предлагает промежуточный вариант. На тарифах Pro или Max при возобновлении сессии, которая была неактивна около часа и содержит более 100,000 токенов, перед отправкой вашего первого сообщения появится диалоговое окно. К этому моменту кэш промптов (prompt cache) уже истекает, поэтому следующий запрос в любом случае один раз обработает всю историю целиком, независимо от выбранного варианта.
- Возобновление с кратким содержанием (Resume from summary) немедленно запускает сжатие истории, поэтому последующие запросы будут содержать краткую выжимку вместо полной истории. Это дешевле в пересчете на запрос, но информация, отброшенная при создании выжимки, становится недоступной.
- Возобновление полной сессии (Resume full session as-is) загружает диалог без изменений, сохраняя все детали, при этом стоимость каждого запроса растет пропорционально размеру истории.
Третий вариант позволяет возобновить сессию полностью и отключить появление этого диалога при последующих возобновлениях.
Принять решение проще, чем кажется. Возобновляйте сессию, если то, что вы собираетесь написать дальше, зависит от уже сказанного. Начинайте с чистого листа, если это не так. Отклонение от темы легко заметить, если следить за ним: Claude может ссылаться на файл, который вы удалили час назад, или заново спорить о решении, которое было принято в начале сессии. Это устаревший контекст, и его перенос увеличивает расход токенов и одновременно снижает точность ответов.
Если полезная часть старого диалога — это решение или факт, который вам понадобится снова, не полагайтесь на возобновление сессии для его сохранения. Запишите это там, где информация будет доступна в любой сессии; именно для этого предназначены файлы памяти Claude Code.
Также полезно знать о /branch. Эта команда копирует диалог до текущего момента и переключает вас на копию, оставляя оригинал нетронутым в списке сессий. Используйте её, чтобы попробовать другой подход, не теряя при этом результаты первого.
Чем возобновление отличается от сжатия и памяти
Эти понятия часто путают, так как они решают разные задачи.
Возобновление (resume) нужно для того, чтобы вернуться к диалогу после выхода из программы, перезагрузки или переключения на другую задачу. Сжатие (compaction) работает с контекстным окном внутри активного диалога: /compact заменяет текущий контекст Claude на краткое резюме, чтобы последующие запросы потребляли меньше токенов. Если проблема заключается в переполнении контекстного окна, используйте сжатие; подробнее об этом написано в управлении контекстным окном Claude Code.
Память (memory) — это другой механизм. Файлы CLAUDE.md и автоматическая память хранят инструкции и факты, которые загружаются в начале каждой сессии, поэтому они не являются диалогом, к которому нужно возвращаться. Это записи, которые вы делаете, чтобы вам больше не приходилось возвращаться к старым сессиям.
Если вам нужно, чтобы два диалога работали одновременно и взаимодействовали друг с другом, для этого существует отдельный механизм. Сессии Claude Code могут обмениваться сообщениями, пока обе активны; это принципиально иная задача, чем восстановление вчерашней сессии с диска.
FAQ
Где Claude Code хранит историю сессий?
По умолчанию в директории конфигурации, по пути ~/.claude/projects/<project>/<session-id>.jsonl, где <project> — это путь к рабочей директории, в котором все небуквенно-цифровые символы заменены дефисами. Каждый файл имеет формат JSONL: один JSON-объект на строку для сообщения, вызова инструмента или записи метаданных. Переменная CLAUDE_CONFIG_DIR позволяет переместить директорию конфигурации в другое место, а cleanupPeriodDays в settings.json задает срок хранения транскриптов (по умолчанию 30 дней, минимум 1 день).
Почему я не вижу сессию с VPS в списке выбора на своем ноутбуке?
Потому что транскрипты записываются на диск той машины, где был запущен агент, и никакие механизмы не синхронизируют их между устройствами. Диалог, который вы вели внутри tmux на VPS, существует только на этом VPS. Возобновите его там через SSH или выполните внутри него /export и скопируйте текстовый файл, если вам нужна локальная копия.
Можно ли возобновить сессию, начатую в другой директории?
Да, если у вас есть идентификатор сессии. claude --resume <session-id> сначала ищет в текущей директории проекта и его git-worktrees, а затем во всех остальных проектах на этой же машине. В меню выбора Ctrl+A расширяет список до всех проектов на машине, а Ctrl+W — до всех worktrees текущего репозитория. Если совпадений нет, Claude Code сообщает No conversation found with session ID: <session-id>.
Что лучше: возобновить старую сессию или начать новую?
Возобновляйте сессию, если ваше следующее сообщение зависит от того, что уже было сказано в этом диалоге. Начинайте новую, если это не так, поскольку возобновление перезагружает всю историю, и каждый последующий запрос будет нести её в себе. Следите за «дрейфом» контекста: сессия, которая продолжает ссылаться на уже удаленные файлы, содержит устаревшие данные, а этот контекст расходует токены и снижает точность на каждом шаге.
Можно ли запретить Claude Code записывать транскрипты на диск?
Да. CLAUDE_CODE_SKIP_PROMPT_HISTORY отключает запись транскриптов, а --no-session-persistence отключает её для одного неинтерактивного запуска claude -p. Сначала оцените последствия: транскрипты используются для возобновления работы, поэтому при их отключении --continue и --resume будет нечего загружать. Если вас беспокоит не сам факт существования файлов, а их расположение, укажите CLAUDE_CONFIG_DIR на зашифрованный том и уменьшите значение cleanupPeriodDays.