Возобновление сессии
Сессии непрерывно сохраняются в локальные файлы транскриптов по мере работы, поэтому вы можете вернуться к одной из них после выхода или запуска/clear. Используйте эти точки входа:
Возобновление выполняющейся фоновой сессии
Когда диалог, который вы возобновляете с помощьюclaude --resume или /resume, принадлежит фоновой сессии, которая всё ещё выполняется, Claude Code открывает саму выполняющуюся сессию. Если в командной строке указан --bg, возобновление вместо этого становится фоновой отправкой. До версии 2.1.285 Claude Code отказывал и предлагал открыть сессию с помощью claude attach <id> или сначала остановить её с помощью claude stop <id>.
-
Из вашей оболочки:
claude --resume <session>запускаетclaude attachдля этой сессии в том же терминале вместо самостоятельной загрузки транскрипта. Промпт, который вы передаёте в командной строке, как вclaude --resume <session> "check the tests too", сначала отправляется в сессию как её следующий ход, и Claude Code выводитSent your prompt to the background session (<id>); opening it…перед подключением.claude -p --resume <session> "prompt", введённый в терминале, делает то же самое, поэтому-pне делает этот запуск неинтерактивным. Claude Code не открывает сессию, если командная строка содержит что-либо из следующего:- Ввод или вывод через конвейер или перенаправление
- Флаги, которые настраивают сессию, такие как
--permission-mode,--modelили--settings - Флаги, которые читают вывод, такие как
--output-format jsonили--json-schema - Флаги, которые ограничивают или перематывают запуск, такие как
--max-turnsили--max-budget-usd
claude attach <id>, которая её открывает, или предлагая найти её вclaude agents, если не удаётся определить ID. Добавьте--fork-session, чтобы вместо этого возобновить копию диалога. Чтобы продолжить сам диалог в собственной сессии с применением ваших флагов, запуститеclaude stop <id>, а затем повторите команду. Промпт, начинающийся с/или!, не отправляется, как и любой промпт, пока сессия ожидает вашего ответа на вопрос. В обоих случаях Claude Code не открывает сессию, а сообщение содержитYour prompt was not sent to itс указанием причины. -
Изнутри сессии:
/resumeперемещает ваш текущий диалог в фон и подключает этот терминал к выполняющейся сессии, выводяOpening "<title>", running in the background (<id>). Нажмите←в пустом промпте, чтобы вернуться к представлению агентов, где также отображается покинутый вами диалог. Когда текущий диалог нельзя переместить в фон, например потому что вы уже подключены к фоновой сессии или сохранение сессий отключено,/resumeвыводит командуclaude attach, которую нужно запустить вместо этого.
Что восстанавливает возобновлённая сессия
Когда Claude Code загружает диалог из его транскрипта, возобновлённая сессия восстанавливает диалог вместе с сохранённым в нём состоянием:- История диалога: сообщения, вызовы инструментов и результаты. Если к сессии применялось сжатие контекста, диалог открывается на строке
Conversation compacted. Claude продолжает работу со сводкой последнего сжатия, сообщениями, которые это сжатие оставило без сводки, и всеми последующими сообщениями. Сообщения, включённые в сводку последнего сжатия, повторно не загружаются. - Прерванные вызовы инструментов: инструмент, который всё ещё выполнялся, когда предыдущий процесс завершился, например при сбое, не запускается повторно при возобновлении.
- Модель: сессия продолжается на модели, которую она использовала, за исключением случаев, описанных в разделе Выбор модели.
- Агент: сессия, запущенная с помощью
--agentили настройкиagent, продолжается как этот агент, сохраняя его ограничения инструментов и модель. Передайте--agentпри возобновлении, чтобы выбрать другого агента; о системном промпте в обоих случаях см. Флаги системного промпта в возобновлённых диалогах. Claude Code ищет агента в двух местах: в исходном каталоге сессии, при условии что вы доверяете этому рабочему пространству, а затем в каталоге, из которого вы возобновляете сессию, поэтому агент уровня проекта загружается и при возобновлении из другого каталога. Если Claude Code не находит агента ни в одном из этих мест, сессия возобновляется с инструментами по умолчанию и показывает предупреждение с именем агента. - Режим разрешений: если вы возобновляете сессию из терминала с помощью
claude --continue,claude --resume <session-id>илиclaude --resume <name>, когда имя соответствует одной сессии, без-p, Claude Code восстанавливает режим разрешений, в котором находилась сессия, за исключением случаев, описанных в разделе режим разрешений при возобновлении, который также охватывает средство выбора сессий,/resumeи возобновление с помощьюclaude -p. Передайте--permission-modeили--dangerously-skip-permissions, чтобы переопределить восстановленный режим. - Активная цель: цель, которая всё ещё была активна при завершении сессии, переносится; её счётчик ходов, таймер и базовый уровень расхода токенов сбрасываются.
- Запланированные задачи уровня сессии: задачи, срок которых не истёк, восстанавливаются. Фоновые задачи Bash и задачи мониторинга не восстанавливаются.
- Фоновая работа: фоновый субагент, фоновая команда Bash или workflow, завершившиеся вместе с предыдущим процессом, отображаются в возобновлённом транскрипте как примечание о том, что они не завершились. Claude Code не начинает ход по этим примечаниям; Claude читает их вместе с вашим следующим промптом.
--mcp-config, --settings, --plugin-dir, --fallback-model или каталогов, добавленных с помощью --add-dir, передайте их снова при возобновлении; каталоги, добавленные во время сессии с помощью /add-dir, также не восстанавливаются, хотя средство выбора сессий всё ещё использует их для поиска сессии. Стандартные файлы настроек, такие как settings.json и settings.local.json, перечитываются при запуске, поэтому конфигурацию, которая находится в них, не нужно передавать снова. О --system-prompt и --append-system-prompt см. Флаги системного промпта в возобновлённых диалогах.
Режим разрешений при возобновлении
Режим разрешений, в котором Claude Code запускает возобновлённую сессию, зависит от способа возобновления. Описанные ниже случаи применяются, когда Claude Code загружает диалог из его транскрипта; когда вы вместо этого открываете фоновую сессию, которая всё ещё выполняется, эта сессия сохраняет свой текущий режим разрешений.- Терминал:
claude --continue,claude --resume <session-id>илиclaude --resume <name>, когда имя соответствует одной сессии, без-p. Claude Code восстанавливает режим разрешений, в котором находилась сессия, за исключением случаев, указанных в таблице. Передайте--permission-modeили--dangerously-skip-permissions, чтобы переопределить восстановленный режим. - Неинтерактивный:
claude -p --resumeилиclaude -p --continue. Claude Code запускает выполнение в том режиме разрешений, в котором запустился бы новый запускclaude -p, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования при условиях ниже. - VS Code: панель диалога расширения. Таблица охватывает только диалог, завершившийся в режиме планирования; об остальных случаях см. возобновление прошлых диалогов.
- Средство выбора сессий при запуске: сессия, которую вы выбираете в средстве выбора сессий, независимо от того, открыли ли вы его с помощью одного
claude --resume,claude --from-prили имени, соответствующего нескольким сессиям. Claude Code запускает сессию в том режиме разрешений, в котором запустил бы новую сессию из той же командной строки, за исключением того, что сессия, завершившаяся в режиме планирования, возобновляется в режиме планирования. Если вы передаёте--permission-mode,--dangerously-skip-permissionsили--fork-session, Claude Code не восстанавливает режим планирования. Никакой другой сохранённый режим разрешений не восстанавливается. /resumeвнутри сессии, с аргументом или без: диалог, на который вы переключаетесь, продолжается в режиме разрешений вашей текущей сессии, за исключением того, что диалог, завершившийся в режиме планирования, возобновляется в режиме планирования, даже если вы запустили Claude Code с--permission-modeили--dangerously-skip-permissions. Если этот диалог уже открывался ранее в текущем запуске Claude Code, например диалог, с которого вы начали, или диалог, который вы покинули с помощью/clearили/resume, он вместо этого продолжается в вашем текущем режиме разрешений.
ExitPlanMode, Claude не может представить план на утверждение, поэтому Claude Code не восстанавливает режим планирования. Сессия запускается в том режиме разрешений, в котором запустилась бы новая сессия из той же командной строки. При использовании /resume диалог продолжается в вашем текущем режиме разрешений.
Для восстановления режима планирования в неинтерактивном пути и в VS Code требуется Claude Code v2.1.246 или более поздней версии. В каждой строке указаны режим разрешений, в котором завершилась сессия, путь возобновления (терминал, неинтерактивный или VS Code) и режим разрешений, в котором Claude Code запускает возобновлённую сессию.
Возобновление в режиме планирования с -p
Запуск claude -p --resume или claude -p --continue возобновляется в режиме планирования, только если выполняются все следующие условия:
- Вы передаёте
--permission-prompt-toolи не передаёте--permission-prompts none, чтобы Claude Code мог представить план на утверждение - Вы не передаёте
--permission-modeили--dangerously-skip-permissions - Вы не передаёте
--fork-session - Запуск выполняется не через каналы
- Ни одно правило запрета не удаляет инструмент
ExitPlanMode
Диалоговое окно «Resume this conversation?»
Если при возобновлении сессии вы видите диалоговое окно «Resume this conversation?», его оценка показывает долю вашего 5-часового лимита использования, которую израсходует один только сохранённый диалог. Оценка не учитывает то, что вы уже использовали. На планах Pro, Max и Ultra это диалоговое окно может появиться, когда вы возобновляете длинный диалог после длительного перерыва или на другой модели. Расчётный расход происходит, когда вы отправляете первое сообщение после Resume, а не в момент выбора этого варианта. Выбирайте в зависимости от того, нужен ли вашей следующей задаче сохранённый диалог:- Resume: продолжить работу в сохранённом диалоге.
- Start a new conversation: переключиться на работу, которой не нужен сохранённый диалог. Чтобы позже снова открыть его, выполните
/resumeв промпте. Оценка не применяется к вашему первому сообщению в новом диалоге. Если в этом варианте указано, что Claude может найти этот диалог, вы всё равно можете ссылаться на предыдущую работу в новом диалоге.
Где средство выбора сессий ищет сессии
Claude Code хранит сессии для каждого каталога проекта. По умолчанию средство выбора сессий показывает:- Сессии из текущего worktree, включая фоновые сессии, которые отмечены в списке как
bg - Сессии, запущенные в других местах, которые добавили текущий каталог с помощью
/add-dir
Ctrl+W, чтобы расширить список на все worktrees репозитория, или Ctrl+A, чтобы расширить его на все проекты на этой машине.
/loop, -p, Agent SDK и фоновые сессии
Сессии, первым промптом которых была команда /loop, не отображаются в средстве выбора, и claude --continue также их пропускает. Запуск /loop позже в диалоге не скрывает сессию.
Claude Code исключает сессии, созданные с помощью claude -p или Agent SDK, из средства выбора сессий и из claude --continue. Вы всё равно можете возобновить такую сессию, передав её ID в claude --resume <session-id>. Когда вы запускаете claude -p --continue, Claude Code учитывает сессии -p, SDK и /loop.
claude --continue открывает фоновую сессию, которая завершилась, но не ту, которая всё ещё выполняется; для открытия завершённых фоновых сессий требуется Claude Code v2.1.257 или более поздней версии. Если ваш самый последний диалог — это тот, который вы переместили в фон, и он всё ещё там выполняется, Claude Code завершается с сообщением Your most recent conversation is running in the background и ID этой сессии. Подключитесь к сессии из claude agents или запустите claude --resume, чтобы выбрать другую.
Сессии в других worktrees и проектах
Когда вы выбираете сессию из другого worktree того же репозитория, Claude Code возобновляет её на месте; если собственный worktree сессии больше не существует, Claude Code возобновляет её в вашем текущем каталоге. Когда вы выбираете сессию из несвязанного проекта, Claude Code вместо этого копирует в буфер обмена командуcd и команду возобновления. Если каталог этого проекта больше не существует, Claude Code возобновляет сессию в вашем текущем каталоге, а не копирует команду cd, которая завершилась бы ошибкой.
Перемещение сессии с помощью /cd переносит её в хранилище проекта нового каталога, поэтому впоследствии она появляется в средстве выбора этого каталога.
Возобновление по ID сессии или имени
Вы можете запуститьclaude --resume <session-id> из любого каталога, поэтому можно возобновить сессию, которая началась в другом месте или была перемещена с помощью /cd. Claude Code ищет ID в следующем порядке:
- Каталог текущего проекта и его git worktrees
- Все остальные проекты на этой машине
No conversation found with session ID: <session-id>.
Возобновление по имени выполняет поиск в текущем репозитории и его worktrees. Обе формы ищут точное совпадение и возобновляют сессию напрямую, даже если она находится в другом worktree:
Назовите ваши сессии
Дайте сессиям описательные имена, чтобы их было легко найти в средстве выбора сессий и возобновить по имени. Это особенно важно, когда вы работаете над несколькими задачами параллельно.
После того как вы назовете сессию через маршрут CLI или из claude.ai, вернитесь к ней с помощью
claude --resume <name> или /resume <name>; сессия приложения для рабочего стола возобновляется в приложении для рабочего стола. Смотрите Возобновить сессию, чтобы узнать, как разрешение имен работает в worktrees.
Сессии, которые вы не назвали, все еще получают два ярлыка, которые назначает Claude Code. Только сгенерированное название работает как дескриптор возобновления:
-
Имя отображения по умолчанию: интерактивные сессии, которые вы никогда не назвали, все еще получают имя отображения по умолчанию при запуске. Значение по умолчанию объединяет имя рабочего каталога с двухсимвольным суффиксом, например
my-app-3f, и идентифицирует сессию в списках запущенных сессий, таких как представление агента и выводclaude agents --json. Значение по умолчанию не является дескриптором возобновления. Если вы передадите его вclaude --resumeили/resume, Claude Code не найдет сессию. -
Сгенерированное название: если вы не назовете сессию, Claude Code генерирует для неё название сессии. Название — это краткое резюме вашей первой подсказки, написанное фоновым запросом к небольшой/быстрой модели, обычно модели класса Haiku. Запуск
claude -p, который вы запускаете непосредственно из оболочки или скрипта, не получает его. Принятие плана заменяет сгенерированное название на название на основе плана. Вы можете передать любое из названий вclaude --resumeили/resume, и Claude Code разрешит его так же, как имя, которое вы установили.
Использование средства выбора сеансов
Запустите/resume внутри сеанса или claude --resume без аргументов, чтобы открыть интерактивное средство выбора сеансов. Используйте эти сочетания клавиш для навигации, поиска и расширения списка:
Каждая строка показывает имя сессии, если оно установлено, в противном случае сгенерированное ИИ название сессии, сводку диалога или первый промпт, а также время с момента последней активности, ветку git и размер файла.
Сеансы, созданные с помощью
/branch или --fork-session, получают свои собственные идентификаторы сеансов и отображаются как отдельные строки. Когда средство выбора находит более одной записи для одного и того же сеанса, оно группирует их под одной строкой. Нажмите → для развёртывания группы.
Если Claude Code не может загрузить выбранный вами сеанс из средства выбора claude --resume, он выводит Failed to resume the conversation с командой для повтора, а затем завершает работу с кодом 1. Из средства выбора /resume внутри сеанса Claude Code сообщает об ошибке, и ваш текущий диалог продолжает работать.
Создание ветви сеанса
Создание ветви создаёт копию диалога до сих пор и переключает вас в неё, оставляя оригинал нетронутым. Используйте это, чтобы попробовать другой подход без потери пути, на котором вы были. Из активного сеанса запустите/branch с необязательным именем:
--continue или --resume с --fork-session:
/branch выводит два ID сеанса: новую ветвь, в которой вы находитесь, и оригинал. Оригинал остаётся неизменным на диске и остаётся в средстве выбора сеансов; вернитесь к нему с помощью /resume <original-name> или передав его ID в /resume.
/branch копирует стенограмму и переключает запущенный процесс Claude Code на запись в неё. Это различие определяет, что наследует ветвь:
Если вы возобновите один и тот же сеанс в двух терминалах без разветвления, сообщения из обоих будут чередоваться в одной стенограмме. Для перемотки на основе контрольных точек в одном сеансе см. Checkpointing.
Управление контекстом в сеансе
Эти команды управляют тем, что находится в окне контекста, не покидая сеанс:/clear: начать заново с пустым контекстом. Claude Code сохраняет предыдущую сессию; возобновите её с помощью/resume, или, в том же процессе Claude Code, из записи предыдущей сессии в меню перемотки. Без аргумента новая сессия сохраняет имя, которое вы установили с помощью--nameили/rename, но не название сессии, сгенерированное ИИ. Чтобы вместо этого назвать сессию, которую вы покидаете, передайте имя, как в/clear release-prep; новая сессия затем начинается без имени/compact [instructions]: заменить историю сводкой, опционально сосредоточенной на том, что вы указали/context: показать, что в настоящее время потребляет контекст
Экспорт и поиск данных сеанса
Запустите/export, чтобы открыть меню, которое позволяет скопировать текущий диалог в буфер обмена или сохранить его как простой текстовый файл с сообщениями и выводом инструментов, отображаемыми как читаемый текст. Передайте имя файла для прямой записи в этот файл.
Доступ к диалогам из скриптов
/export создает отформатированную стенограмму для чтения человеком. Интерфейсы ниже создают структурированные данные для анализа скриптом: результат JSON из запуска, путь к файлу стенограммы сеанса или живой поток событий. Выбирайте в зависимости от того, что запускает скрипт:
- Запустить Claude один раз и захватить результат: вызовите
claude -pс--output-format jsonилиstream-json, чтобы захватить результат, ID сеанса, использование и стоимость неинтерактивного запуска как структурированный JSON. - Задать вопрос существующему сеансу: передайте ID сеанса в
claude -p --resume, чтобы отправить дополнительный запрос, например запрос на резюме, и захватить структурированный ответ. - Реагировать на события сеанса: прочитайте поле
transcript_path, которое получают hooks и команды строки состояния в качестве входных данных. HookSessionEndможет архивировать стенограмму при завершении сеанса. - Встроить Claude в приложение TypeScript или Python: используйте Agent SDK для получения каждого сообщения программным способом.
jq:
Где хранятся стенограммы
По умолчанию Claude Code хранит стенограммы как JSONL в~/.claude/projects/<project>/<session-id>.jsonl, где <project> — это путь вашего рабочего каталога с заменой не буквенно-цифровых символов на -. Для рабочего каталога, преобразованное имя которого превышает 200 символов, Claude Code усекает имя до 200 символов и добавляет хеш полного пути, чтобы имя каталога оставалось в пределах ограничений файловой системы.
Каждая строка — это объект JSON: сообщение, использование инструмента или его результат, запись о запросе, который Claude Code отправил модели, или запись метаданных. Формат записи является внутренним для Claude Code и изменяется между версиями, поэтому скрипты, которые анализируют эти файлы напрямую, могут сломаться при любом выпуске. Чтобы работать с данными сессии, используйте /export или интерфейсы скриптов вместо этого.
Местоположение, сохранение и поведение записи настраиваются:
Удалить данные сеанса
Транскрипты удаляются в соответствии с правилами очистки сохранения. Чтобы удалить транскрипты проекта и связанное состояние раньше, запуститеclaude purge. Если вы удалите фоновую сессию с помощью claude rm <id>, ее транскрипт остается на диске и остается доступным через claude --resume.
Назвать каталог проекта самостоятельно
По умолчанию Claude Code получает имя<project> из полного пути рабочего каталога. Чтобы выбрать имя самостоятельно, установите CLAUDE_CODE_PROJECT_DIR_NAME вместе с CLAUDE_CONFIG_DIR. Claude Code затем хранит стенограммы этого сеанса и автоматическую память под вашим именем. Это подходит для хоста, который встраивает Claude Code и дает каждому сеансу свой собственный каталог конфигурации. Требуется Claude Code v2.1.234 или позже.
Например, этот запуск хранит данные арендатора A в /srv/tenant-a и называет его каталог проекта work:
/srv/tenant-a/projects/work/ и его автоматическую память в /srv/tenant-a/projects/work/memory/, независимо от того, какой рабочий каталог используется.
При установке применяются три правила:
- Установите
CLAUDE_CONFIG_DIRтакже: имя не зависит от рабочего каталога, поэтому при использовании по умолчанию~/.claudeоно объединит стенограммы и автоматическую память каждого проекта в один каталог. Claude Code игнорируетCLAUDE_CODE_PROJECT_DIR_NAME, когдаCLAUDE_CONFIG_DIRне установлен. - Используйте 1-64 буквы, цифры, дефисы или подчеркивания: не используйте имя устройства Windows, такое как
con. Claude Code игнорирует любое другое значение и использует полученное имя. - Установите его в окружении оболочки, которая запускает
claude: Claude Code читает его один раз при запуске из этого окружения, поэтому блокenvв файле параметров не может его установить.
CLAUDE_CONFIG_DIR, но без CLAUDE_CODE_PROJECT_DIR_NAME, он снова прочитает и запишет полученный каталог. Сеансы, хранящиеся под вашим именем, остаются на диске: нажмите Ctrl+A в средстве выбора сеанса, чтобы перечислить сеансы из каждого каталога проекта под этим каталогом конфигурации, включая закрепленный, и в любом случае claude --resume <session-id> находит сеанс, хранящийся под любым именем.
См. также
На этих страницах рассматриваются связанные механики сеансов и параллелизма:- Worktrees: запуск изолированных параллельных сеансов на отдельных ветвях
- Checkpointing: перемотка кода и диалога к более ранней точке
- Context window: что заполняет контекст и что выживает при уплотнении
- Non-interactive mode: поведение сеанса в
claude -p