SSD Nodes Learn Hosting plans →
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-09-12

Як відновити сеанс Claude Code та знайти історію

Дізнайтеся, як відновити сеанс Claude Code за назвою або через picker, а також де на машині агента зберігаються його plaintext-транскрипти.

Як відновити сеанс Claude Code

Щоб відновити сеанс Claude Code, виконайте claude --continue для останньої розмови в поточному каталозі або claude --resume, щоб вибрати попередню розмову зі списку. У вже запущеному сеансі команда /resume перемикає вас на іншу розмову без завершення роботи. Скорочені форми: -c і -r.

claude --continue
claude --resume
claude --resume auth-refactor

Якщо ви вже знаєте назву або ID сеансу, передайте його як аргумент, і Claude Code одразу відкриє цей сеанс без відображення списку вибору.

Усе нижче відповідає офіційній документації щодо сеансів станом на August 2026. Claude Code часто випускає нові версії, а назви прапорців і комбінації клавіш можуть змінюватися між версіями. Тому в разі розбіжностей із тим, що показує ваш термінал, керуйтеся claude --help і цією сторінкою.

Що насправді є сеансом

Сеанс — це одна збережена розмова, пов’язана з каталогом проєкту. Він містить всю історію повідомлень, зокрема виклики інструментів, які виконав Claude, і результати цих викликів. Claude Code безперервно записує її на диск під час роботи, а не лише наприкінці. Тому розмова зберігається навіть після закриття термінала або втрати SSH-з’єднання.

Після відновлення повертається не лише текст. Повністю відновлюється історія розмови, а також модель, яку використовував сеанс, і субагент, з яким його було запущено, якщо ви використовували --agent. Режим дозволів також відновлюється, але з міркувань безпеки є винятки: режим планування та режим обходу дозволів ніколи не відновлюються. Тому сеанс, який працював в одному з них, продовжиться в режимі, з якого починається новий сеанс.

Деякі параметри не відновлюються, оскільки їх передають під час запуску, а не зберігають як стан. Каталоги, додані за допомогою --add-dir, і такі параметри, як --mcp-config, --settings та --plugin-dir, потрібно передати знову під час відновлення. Файли налаштувань, як-от settings.json, повторно читаються під час запуску, тому параметри з них не потрібно вказувати повторно. Облікові дані працюють так само: Claude Code визначає спосіб автентифікації під час запуску на основі вашого входу та середовища, а не відновлює його разом із діалогом. Тому під час відновлення сеансу на VPS, де в shell випадково з’явився ANTHROPIC_API_KEY, виникне помилка недійсного API key, навіть якщо минулого разу все працювало.

Чому історія сеансів важливіша на VPS

Ось факт, який дивує багатьох. Транскрипт записується на машині, де працював агент. Він не зберігається у вашому обліковому записі й не синхронізується з хмарою. Це файл на диску цього сервера.

Тому сеанс, який ви залишили у вікні tmux на VPS, не з’явиться у списку вибору на ноутбуці, а сеанс із ноутбука не з’явиться на VPS. Між ними нічого не переміщується. Якщо ви працюєте так, як більшість користувачів, коли запускають Claude Code у tmux на VPS, саме сервер накопичує вашу основну історію розмов, а список вибору, який ви бачите локально, містить інший і значно менший набір сеансів.

Такий самий поділ діє між інтерфейсами. Desktop app і VS Code extension зберігають власну історію сеансів, і жодна з них не є історією CLI. Claude Code у вебі також має власну історію. Cowork працює ще окремо — усередині sandbox Anthropic, а не на обладнанні, яким ви керуєте. Тому, якщо ви порівнюєте Cowork і Claude Code, місце зберігання транскрипту є частиною рішення.

На одній машині пошук охоплює більше, ніж можна очікувати. claude --resume <session-id> спочатку шукає в поточному каталозі проєкту та його git worktrees, а потім — в усіх інших проєктах на цій машині. Запам’ятайте ключову фразу: «на цій машині». ID сеансу з іншого хоста не буде знайдено, і 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 читав, і вивід команд, які 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. Перед встановленням будь-якого з цих параметрів чітко оцініть компроміс. Команда resume читає транскрипти, тому без транскрипту відновлення сеансу неможливе.

Як знайти стару розмову

Відкрийте список за допомогою claude --resume або /resume під час активного сеансу. У кожному рядку відображається назва сеансу, якщо ви її вказали, або згенерований заголовок, якщо ні. Також показуються час від останньої активності, гілка git і розмір файлу.

У списку працює пошук. Натисніть / або просто почніть вводити текст, щоб відфільтрувати список. Варто запам’ятати скорочення, які розширюють область пошуку: Ctrl+A показує сеанси з усіх проєктів на цьому комп’ютері, Ctrl+W — усі worktree поточного репозиторію, а Ctrl+B фільтрує список за поточною гілкою git. Натисніть Space, щоб переглянути вміст сеансу перед його вибором, або Ctrl+R, щоб перейменувати виділений сеанс.

Якщо надавати сеансам назви, працювати зі списком значно простіше. Створіть сеанс за допомогою claude -n auth-refactor або виконайте /rename auth-refactor посеред роботи, коли стане зрозуміло, що розмова перетворилася на окреме робоче завдання. Після цього іменований сеанс можна відновити за назвою безпосередньо з shell.

Неіменований сеанс також отримує згенерований заголовок. Фоновий запит до невеликої швидкої моделі створює його на основі короткого опису вашого першого запиту. Цей заголовок допомагає знайти потрібний рядок у списку, але не є ідентифікатором для відновлення сеансу. claude --resume <name> знаходить лише назви, які ви вказали самостійно.

Пошук потрібного сеансу в транскрипціях

Іноді ви пам’ятаєте лише фразу. Тоді виконайте пошук у текстових транскрипціях.

grep -rl "nftables" ~/.claude/projects/

Команда виводить шляхи до транскрипцій, що відповідають запиту. Ім’я файлу без розширення .jsonl — це ідентифікатор сеансу, який приймає claude --resume <session-id>. За допомогою grep визначте потрібний сеанс, а потім відновіть його або експортуйте, щоб прочитати транскрипцію.

Є два важливі застереження. Вміст екрановано у форматі JSON, тому фраза з лапками або фраза, розділена переносом рядка, може не збігтися з літеральним рядком. Збіг у результаті роботи інструмента означає, що Claude побачив цей текст, а не те, що його хтось увів.

Читання та експорт розмови

/export відображає поточну розмову як звичайний текст. Повідомлення та вивід інструментів подаються у зручному для читання форматі, а не як JSON. Без аргументів команда відкриває меню, у якому можна вибрати буфер обміну або файл. Якщо вказати ім’я файлу, /export handover.txt записує дані безпосередньо за цим шляхом. Це правильний спосіб перенести розмову із сервера на ноутбук або додати її до заявки.

Для автоматизації використовуйте інтерфейси, призначені для стабільної роботи. Hooks і команди рядка стану отримують поле transcript_path як вхідні дані, тому SessionEnd hook може архівувати transcript після завершення сесії. Також можна поставити запит збереженій сесії, не відкриваючи її:

claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'

Ця команда надсилає follow-up prompt у стару розмову та повертає структурований JSON. Це значно надійніша основа, ніж обробка формату JSONL, який може змінитися в наступному релізі.

Коли почати нову сесію краще, ніж відновлювати стару

Відновлення повертає всю історію, і саме всю цю історію містить кожен наступний запит. Продовжувати сьогодні розмову, яка вчора тривала чотири години, дорого, а в поясненні як накопичується використання токенів у довгій сесії описано, звідки насправді виникають ці витрати.

Claude Code іноді пропонує проміжний варіант. На тарифному плані Pro або Max відновлення сесії, яка не використовувалася близько години і містить понад 100,000 токенів, відкриває діалогове вікно перед першим повідомленням. До цього моменту кеш промпту вже завершився, тому наступний запит повторно обробить всю історію один раз, незалежно від вибраного варіанта.

  • Resume from summary одразу виконує compaction, тому наступні запити містять summary замість повної історії. Вартість кожного запиту нижча, але все, що було вилучено із summary, більше недоступне.
  • Resume full session as-is завантажує розмову без змін і зберігає всі деталі, але вартість кожного запиту зростає відповідно до обсягу розмови.

Третій варіант відновлює повну сесію та вимикає показ цього діалогового вікна під час наступних відновлень.

Визначитися простіше, ніж здається. Відновлюйте сесію, якщо те, що ви збираєтеся написати далі, залежить від попередньої розмови. Починайте нову сесію, якщо це не так. Ознаки застарілого контексту легко помітити: Claude посилається на файл, який ви видалили годину тому, або знову обговорює рішення, прийняте на початку сесії. Такий контекст одночасно збільшує витрати токенів і знижує точність.

Якщо корисна частина старої розмови — це рішення або факт, який вам знадобиться знову, не покладайтеся на відновлення сесії. Запишіть це там, де кожна сесія матиме доступ до інформації. Саме для цього призначені файли пам’яті Claude Code.

/branch тут також варто знати. Він копіює розмову до поточного моменту та перемикає вас у цю копію, залишаючи оригінал без змін і доступним у списку вибору. Використовуйте його, щоб випробувати інший підхід і не втратити перший.

Як resume відрізняється від compaction і memory

Ці поняття часто плутають, але вони вирішують різні завдання.

Resume потрібен, щоб знову відкрити розмову після виходу з неї, перезавантаження системи або переходу до іншого завдання. Compaction стосується контекстного вікна в активній розмові: /compact замінює контекст, який Claude зберігає, підсумком, тому наступні запити надсилають менше токенів. Якщо проблема полягає в тому, що контекстне вікно заповнене, використовуйте compaction. Докладний опис наведено в матеріалі керування контекстним вікном Claude Code.

Memory працює інакше. Файли CLAUDE.md і auto memory містять інструкції та факти, які завантажуються на початку кожної сесії. Тому вони не є розмовою, до якої ви повертаєтеся. Це записи, які ви створюєте, щоб більше не повертатися до однієї й тієї самої інформації.

Якщо потрібно одночасно запустити дві розмови та організувати їхню взаємодію, це окремий механізм. Сесії 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.