Управление сеансами
Назовите, возобновите, создавайте ветви и переключайтесь между диалогами Claude Code. Охватывает
--continue,--resume,--from-pr, средство выбора/resume, именование сеансов, экспорт стенограмм и место хранения стенограмм.
Сессия — это сохранённый диалог, привязанный к каталогу проекта. Claude Code сохраняет его локально по мере работы, поэтому вы можете возобновить работу с того же места, создать ветку для попытки другого подхода или переключаться между задачами.
Настольное приложение, Claude Code в веб-версии и расширение VS Code каждое ведёт собственную историю сеансов, а настольное приложение также может возобновить сеанс CLI. На этой странице рассматривается CLI.
Возобновление сессии
Сессии непрерывно сохраняются в локальные файлы транскриптов по мере работы, поэтому вы можете вернуться к одной из них после выхода или запуска /clear. Используйте эти точки входа:
| Команда | Что она делает |
|---|---|
claude --continue |
Повторно открывает самую последнюю сессию в текущем каталоге |
claude --resume |
Открывает средство выбора сессий |
claude --resume <name> |
Возобновляет именованную сессию напрямую |
claude --resume <transcript-path> |
Возобновляет сессию, сохранённую в файле транскрипта .jsonl по этому абсолютному пути |
claude --from-pr <number> |
Открывает средство выбора сессий, отфильтрованное по сессиям, связанным с этим pull request |
/resume |
Переключается на другую сессию из активной сессии |
Возобновление выполняющейся фоновой сессии
Когда диалог, который вы возобновляете с помощью 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 Code ничего не отправляет и завершается со статусом 1, выводя сообщение о том, что сессия выполняется в фоне, вместе с командой
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 загружает диалог из его транскрипта, возобновлённая сессия восстанавливает диалог вместе с сохранённым в нём состоянием:
- История диалога: полная история, включая вызовы инструментов и их результаты. Инструмент, который всё ещё выполнялся, когда предыдущий процесс завершился, например при сбое, не завершается и не запускается снова при возобновлении. Claude видит вызов, помеченный как прерванный до записи его результата, и получает указание проверить, сработал ли он, прежде чем запускать его снова, если только не установлена переменная
CLAUDE_CODE_RESUME_INTERRUPTED_TURN. - Модель: сессия продолжается на модели, которую она использовала, за исключением случаев, описанных в разделе Выбор модели.
- Агент: сессия, запущенная с помощью
--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 запускает возобновлённую сессию.
| Сессия завершилась в | Как вы возобновляете | Режим разрешений после возобновления |
|---|---|---|
bypassPermissions |
Терминал | Режим разрешений, в котором запустилась бы новая сессия. Чтобы снова обходить разрешения, включите этот режим при запуске с помощью одного из его флагов запуска или permissions.defaultMode: "bypassPermissions" в пользовательских настройках, --settings или управляемых настройках |
plan |
Терминал | Режим планирования. С --fork-session — режим разрешений, в котором запустилась бы новая сессия |
plan |
Терминал, когда правило запрета удаляет ExitPlanMode |
Режим разрешений, в котором запустилась бы новая сессия |
auto |
Терминал | auto, только если ваша учётная запись всё ещё соответствует требованиям авторежима |
| Manual | Терминал | Manual, если новая сессия запустилась бы в авторежиме согласно встроенному значению по умолчанию. Когда вступает в силу defaultMode из файла настроек, Claude Code вместо этого запускает возобновлённую сессию в этом режиме |
plan |
Неинтерактивный, при условиях ниже | Режим планирования |
| Любой режим | Неинтерактивный, в любом другом случае | Режим разрешений, в котором запустился бы новый запуск claude -p |
plan |
VS Code | Режим планирования, с исключениями, описанными на странице VS Code |
Возобновление в режиме планирования с `-p`
Запуск claude -p --resume или claude -p --continue возобновляется в режиме планирования, только если выполняются все следующие условия:
- Вы передаёте
--permission-prompt-toolи не передаёте--permission-prompts none, чтобы Claude Code мог представить план на утверждение - Вы не передаёте
--permission-modeили--dangerously-skip-permissions - Вы не передаёте
--fork-session - Запуск выполняется не через каналы
- Ни одно правило запрета не удаляет инструмент
ExitPlanMode
Возобновление из сводки
На плане Pro или Max, когда вы возобновляете сессию, которая была неактивна примерно более часа и превышает 100 000 токенов, Claude Code восстанавливает диалог и затем открывает диалоговое окно до отправки вашего первого сообщения. К этому моменту кэш промптов сессии уже истёк, поэтому следующий запрос один раз обрабатывает полную историю независимо от того, какой вариант в диалоговом окне вы выберете.
Диалоговое окно предлагает три способа продолжить сессию:
- Resume from summary: немедленно запускает
/compact. Последующие запросы содержат сводку вместо полной истории. - Resume full session as-is: загружает диалог без изменений.
- Don't ask me again: возобновляет полную сессию и больше не показывает это диалоговое окно при будущих возобновлениях.
Возобновление как есть сохраняет доступными все детали диалога, но стоимость каждого запроса растёт с размером диалога. Возобновление из сводки обходится дешевле при каждом последующем запросе, поскольку передаётся сводка вместо полной истории, однако всё, что не вошло в сводку, больше не находится в контексте 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
- Все остальные проекты на этой машине
Поиск по проектам находит ID только тогда, когда ровно один другой проект содержит транскрипт с сообщениями для него, поэтому вручную скопированный дубликат приводит к тому, что Claude Code сообщает об отсутствии сессии, а не возобновляет произвольную копию. Если ни одна сохранённая сессия не соответствует ID, Claude Code сообщает No conversation found with session ID: <session-id>.
Возобновление по имени выполняет поиск в текущем репозитории и его worktrees. Обе формы ищут точное совпадение и возобновляют сессию напрямую, даже если она находится в другом worktree:
| Команда | Точное совпадение | Неоднозначное имя |
|---|---|---|
claude --resume <name> |
Возобновляет напрямую | Открывает средство выбора сессий с именем, предварительно заполненным в качестве поискового запроса |
/resume <name> |
Возобновляет напрямую | Сообщает об ошибке; запустите /resume без аргумента, чтобы открыть средство выбора сессий |
Назовите ваши сессии
Дайте сессиям описательные имена, чтобы их было легко найти в средстве выбора сессий и возобновить по имени. Это особенно важно, когда вы работаете над несколькими задачами параллельно.
| Когда | Как установить имя |
|---|---|
| При запуске | claude -n auth-refactor |
| Во время сессии | /rename auth-refactor. Имя также отображается на панели подсказок |
| Из средства выбора сессий | Выделите сессию и нажмите Ctrl+R |
| При принятии плана | Принятие плана в режиме плана дает сессии сгенерированное название на основе плана, если вы еще не назвали её |
| Из claude.ai или приложения Claude | Переименуйте сессию удаленного управления; Claude Code применяет то же имя в CLI. Требуется Claude Code v2.1.221 или позже |
| Из приложения для рабочего стола | Переименуйте сессию в приложении для рабочего стола |
После того как вы назовете сессию через маршрут CLI или из claude.ai, вернитесь к ней с помощью claude --resume <name> или /resume <name>; сессия приложения для рабочего стола возобновляется в приложении для рабочего стола. Смотрите Возобновить сессию, чтобы узнать, как разрешение имен работает в worktrees.
Сессии, которые вы не назвали, все еще получают два ярлыка, которые назначает Claude Code. Только сгенерированное название работает как дескриптор возобновления:
-
Имя отображения по умолчанию: интерактивные сессии, которые вы никогда не назвали, все еще получают имя отображения по умолчанию при запуске. Требуется Claude Code v2.1.196 или позже. Значение по умолчанию объединяет имя рабочего каталога с двухсимвольным суффиксом, например
my-app-3f, и идентифицирует сессию в списках запущенных сессий, таких как представление агента и выводclaude agents --json. Значение по умолчанию не является дескриптором возобновления. Если вы передадите его вclaude --resumeили/resume, Claude Code не найдет сессию. -
Сгенерированное название: если вы не назовете сессию, Claude Code генерирует для неё название сессии. Название — это краткое резюме вашей первой подсказки, написанное фоновым запросом к небольшой/быстрой модели, обычно модели класса Haiku. Запуск
claude -p, который вы запускаете непосредственно из оболочки или скрипта, не получает его.Принятие плана заменяет сгенерированное название на название на основе плана. Вы можете передать любое из названий в
claude --resumeили/resume, и Claude Code разрешит его так же, как имя, которое вы установили.
Использование средства выбора сеансов
Запустите /resume внутри сеанса или claude --resume без аргументов, чтобы открыть интерактивное средство выбора сеансов. Используйте эти сочетания клавиш для навигации, поиска и расширения списка:
| Сочетание клавиш | Действие |
|---|---|
↑ / ↓ или k / j |
Навигация между сессиями |
→ / ← |
Развёртывание или свёртывание сгруппированных сеансов |
Enter |
Возобновление выделенного сеанса |
1–9 |
Возобновление сессии на соответствующей позиции в списке |
Space |
Предпросмотр содержимого сеанса. Ctrl+V также работает на терминалах, которые не захватывают его как вставку |
Ctrl+R |
Переименование выделенного сеанса |
/ или любой печатный символ, кроме Space, j, k или цифры |
Вход в режим поиска и фильтрация сессий. Вставьте URL pull или merge request GitHub, GitHub Enterprise, GitLab или Bitbucket, чтобы найти сессию, которая его создала |
Ctrl+A |
Показать сеансы из всех проектов на этой машине. Нажмите снова, чтобы вернуться к текущему репозиторию |
Ctrl+W |
Показать сеансы из всех worktrees текущего репозитория. Нажмите снова, чтобы вернуться к текущему worktree. Отображается только в репозиториях с несколькими worktrees |
Ctrl+B |
Фильтр к сеансам из текущей ветви git. Нажмите снова, чтобы показать все ветви |
Esc |
Выход из средства выбора сеансов или режима поиска |
Каждая строка показывает имя сессии, если оно установлено, в противном случае сгенерированное ИИ название сессии, сводку диалога или первый промпт, а также время с момента последней активности, ветку git и размер файла.
Сеансы, созданные с помощью /branch или --fork-session, получают свои собственные идентификаторы сеансов и отображаются как отдельные строки. Когда средство выбора находит более одной записи для одного и того же сеанса, оно группирует их под одной строкой. Нажмите → для развёртывания группы.
Если Claude Code не может загрузить выбранный вами сеанс из средства выбора claude --resume, он выводит Failed to resume the conversation с командой для повтора, а затем завершает работу с кодом 1. Из средства выбора /resume внутри сеанса Claude Code сообщает об ошибке, и ваш текущий диалог продолжает работать.
Создание ветви сеанса
Создание ветви создаёт копию диалога до сих пор и переключает вас в неё, оставляя оригинал нетронутым. Используйте это, чтобы попробовать другой подход без потери пути, на котором вы были.
Из активного сеанса запустите /branch с необязательным именем:
/branch try-streaming-approach
Если вы опустите имя, Claude Code назовёт новую ветку по первому промпту в диалоге.
Из командной строки объедините --continue или --resume с --fork-session:
claude --continue --fork-session
Подтверждение /branch выводит два ID сеанса: новую ветвь, в которой вы находитесь, и оригинал. Оригинал остаётся неизменным на диске и остаётся в средстве выбора сеансов; вернитесь к нему с помощью /resume <original-name> или передав его ID в /resume.
/branch копирует стенограмму и переключает запущенный процесс Claude Code на запись в неё. Это различие определяет, что наследует ветвь:
| Состояние | После /branch |
|---|---|
| История диалога | Скопирована в ветвь до момента, когда вы запустили /branch |
| Разрешения "Allow for this session" | Перенесены; ветвь работает в том же процессе, поэтому ваши существующие разрешения по-прежнему применяются. Если вы разветвляетесь в отдельный процесс с помощью --fork-session, новый процесс запускается без них, и вы повторно одобряете их там |
| Выполняющиеся фоновые подагенты и фоновые команды Bash | Продолжают работать. Их вывод появляется в новой ветви, в которую вы переключились, а не в исходном сеансе |
| Соединение Remote Control | Остаётся подключённым. Телефон или браузер, подключённый к сеансу, следует за вами в ветвь и продолжает получать там новые сообщения |
Если вы возобновите один и тот же сеанс в двух терминалах без разветвления, сообщения из обоих будут чередоваться в одной стенограмме. Для перемотки на основе контрольных точек в одном сеансе см. Checkpointing.
Управление контекстом в сеансе
Эти команды управляют тем, что находится в окне контекста, не покидая сеанс:
/clear: начать заново с пустым контекстом. Claude Code сохраняет предыдущую сессию; возобновите её с помощью/resume, или, в том же процессе Claude Code, из записи предыдущей сессии в меню перемотки. Без аргумента новая сессия сохраняет имя, которое вы установили с помощью--nameили/rename, но не название сессии, сгенерированное ИИ. Чтобы вместо этого назвать сессию, которую вы покидаете, передайте имя, как в/clear release-prep; новая сессия затем начинается без имени/compact [instructions]: заменить историю сводкой, опционально сосредоточенной на том, что вы указали/context: показать, что в настоящее время потребляет контекст
О том, как уплотнение взаимодействует с CLAUDE.md, skills и правилами, см. руководство по окну контекста. Для стратегий о том, когда очищать или уплотнять, см. Best practices.
Экспорт и поиск данных сеанса
Запустите /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 -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'
Где хранятся стенограммы
По умолчанию Claude Code хранит стенограммы как JSONL в ~/.claude/projects/<project>/<session-id>.jsonl, где <project> — это путь вашего рабочего каталога с заменой не буквенно-цифровых символов на -. Для рабочего каталога, преобразованное имя которого превышает 200 символов, Claude Code усекает имя до 200 символов и добавляет хеш полного пути, чтобы имя каталога оставалось в пределах ограничений файловой системы.
Каждая строка — это объект JSON для сообщения, использования инструмента или записи метаданных. Формат записи является внутренним для Claude Code и изменяется между версиями, поэтому скрипты, которые анализируют эти файлы напрямую, могут сломаться при любом выпуске. Чтобы работать с данными сеанса, используйте /export или интерфейсы скриптов вместо этого.
Местоположение, сохранение и поведение записи настраиваются:
| Для | Установить | Где |
|---|---|---|
Переместить хранилище с ~/.claude |
CLAUDE_CONFIG_DIR |
Переменная окружения |
Назвать каталог <project> самостоятельно |
CLAUDE_CODE_PROJECT_DIR_NAME |
Переменная окружения |
| Изменить сохранение на 30 дней | cleanupPeriodDays |
settings.json |
| Установить ограничение по возрасту для стенограмм Claude Desktop и Cowork | desktopSessionCleanupPeriodDays |
Пользовательские параметры, управляемые параметры или --settings |
Ограничить рост размера файла транскрипта сессии -p или Agent SDK |
CLAUDE_CODE_TRANSCRIPT_LOCAL_GC |
Переменная окружения |
| Подавить запись стенограмм во всех режимах | CLAUDE_CODE_SKIP_PROMPT_HISTORY |
Переменная окружения |
| Подавить запись для одного неинтерактивного запуска | --no-session-persistence |
Флаг CLI с claude -p |
Удалить данные сеанса
Транскрипты удаляются в соответствии с правилами очистки сохранения. Чтобы удалить транскрипты проекта и связанное состояние раньше, запустите 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:
CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude
Claude Code записывает стенограммы сеанса в /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 Code с тем же CLAUDE_CONFIG_DIR, но без CLAUDE_CODE_PROJECT_DIR_NAME, он снова прочитает и запишет полученный каталог. Сеансы, хранящиеся под вашим именем, остаются на диске: нажмите Ctrl+A в средстве выбора сеанса, чтобы перечислить сеансы из каждого каталога проекта под этим каталогом конфигурации, включая закрепленный, и в любом случае claude --resume <session-id> находит сеанс, хранящийся под любым именем.
См. также
На этих страницах рассматриваются связанные механики сеансов и параллелизма:
- Worktrees: запуск изолированных параллельных сеансов на отдельных ветвях
- Checkpointing: перемотка кода и диалога к более ранней точке
- Context window: что заполняет контекст и что выживает при уплотнении
- Non-interactive mode: поведение сеанса в
claude -p