SSD Nodes Learn 🎉 VPS від $5.50/міс
Посібники Matt ConnorВід Matt Connor

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

Дізнайтеся, як відновити сеанс Claude Code за назвою або через список, і де на диску зберігаються його текстові транскрипти.

Як відновити сеанс 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 Code, і результати цих викликів. Claude Code безперервно записує її на диск під час роботи, а не лише наприкінці, тому розмова зберігається навіть після закриття термінала або розриву SSH-з’єднання.

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

Деякі параметри не відновлюються, оскільки це прапорці, задані під час запуску, а не збережений стан. Каталоги, додані за допомогою --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 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. Перед встановленням будь-якого з цих параметрів чітко оцініть компроміс. Для відновлення сеансу потрібні транскрипти, тому без транскрипту відновлення неможливе.

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

Відкрийте список вибору за допомогою 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 і команди status line отримують поле transcript_path як вхідні дані, тому SessionEnd hook може архівувати транскрипт після завершення сесії. Також можна поставити запит збереженій сесії, не відкриваючи її:

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

Це надсилає додатковий 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.