SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-09-12

Jak wznowić sesję Claude Code i znaleźć historię

Dowiedz się jak wznawiać sesje Claude Code za pomocą komendy resume oraz gdzie na dysku przechowywane są pliki z historią konwersacji w formacie tekstowym dla celów audytu.

Jak wznowić sesję Claude Code

Aby wznowić sesję Claude Code, należy uruchomić claude --continue dla ostatniej konwersji w bieżącym katalogu lub claude --resume, aby wybrać starszą sesję z listy. Będąc wewnątrz aktywnej sesji, polecenie /resume pozwala przełączyć się na inną konwersję bez przerywania pracy. Skrócone formy to -c oraz -r.

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

Jeśli nazwa lub identyfikator sesji są znane, należy przekazać je jako argument, a Claude Code przejdzie bezpośrednio do sesji, pomijając wybór z listy.

Wszystkie poniższe informacje są zgodne z oficjalną dokumentacją sesji według stanu na sierpień 2026. Claude Code jest często aktualizowany, a nazwy flag oraz skróty klawiszowe mogą ulegać zmianom między wersjami, dlatego w przypadku rozbieżności z terminalem należy traktować claude --help oraz wspomnianą stronę jako wiążące źródło informacji.

Czym w rzeczywistości jest sesja

Sesja to zapisana konwersja powiązana z katalogiem projektu. Przechowuje ona pełną historię wiadomości, w tym wywołania narzędzi wykonane przez Claude oraz wyniki zwrócone przez te wywołania. Claude Code zapisuje dane na dysku w sposób ciągły podczas pracy, a nie jednorazowo po jej zakończeniu, dzięki czemu konwersacja zostaje zachowana po zamknięciu terminala lub zerwaniu połączenia SSH.

Wznowienie sesji przywraca więcej niż tylko tekst. Historia konwersacji powraca w całości, wraz z modelem używanym w sesji oraz subagentem, z którym została ona uruchomiona, jeśli użyto --agent. Tryb uprawnień również zostaje przywrócony, z wyjątkami wprowadzonymi ze względów bezpieczeństwa: tryb planowania (plan mode) oraz tryb pomijania uprawnień (bypass-permissions mode) nigdy nie są przywracane, więc sesja, która była w jednym z nich, wznawia się w trybie domyślnym dla nowej sesji.

Niektóre elementy nie wracają, ponieważ były flagami przekazywanymi przy uruchomieniu, a nie zapisanym stanem. Katalogi dodane za pomocą --add-dir oraz opcje takie jak --mcp-config, --settings i --plugin-dir trzeba przekazać ponownie po wznowieniu. Pliki ustawień, takie jak settings.json, są ponownie odczytywane przy uruchamianiu, dlatego nie trzeba ponownie podawać zawartych w nich ustawień. Dotyczy to również danych uwierzytelniających: Claude Code ustala sposób uwierzytelniania przy uruchomieniu na podstawie danych logowania i środowiska, zamiast przywracać go wraz z konwersacją. Dlatego sesja wznowiona na VPS, w którego powłoce znalazła się przypadkowa wartość ANTHROPIC_API_KEY, zakończy się błędem nieprawidłowego klucza API, mimo że poprzednio działała poprawnie.

Dlaczego historia sesji ma większe znaczenie na VPS

Oto fakt, który zaskakuje użytkowników. Transkrypcja jest zapisywana na maszynie, na której uruchomiono agenta. Nie jest ona przechowywana na koncie użytkownika ani synchronizowana z chmurą. Jest to plik znajdujący się na dysku danego serwera.

Zatem sesja pozostawiona w oknie tmux na VPS nie pojawi się w selektorze na laptopie, a sesja z laptopa nie będzie widoczna na VPS. Dane nie są przenoszone między tymi urządzeniami. Jeśli praca przebiega w sposób typowy dla większości użytkowników, czyli podczas uruchamiania Claude Code w tmux na VPS, to właśnie na serwerze gromadzi się rzeczywista historia konwersacji, podczas gdy lokalnie wyświetlany selektor pokazuje inny, znacznie mniejszy zestaw danych.

Ten sam podział dotyczy różnych interfejsów. Aplikacja desktopowa oraz rozszerzenie VS Code przechowują własną historię sesji i żadna z nich nie jest tożsama z historią CLI. Claude Code w wersji webowej również posiada własną historię. Cowork znajduje się jeszcze dalej, ponieważ działa wewnątrz piaskownicy Anthropic, a nie na sprzęcie należącym do użytkownika. Dlatego, jeśli porównujesz Cowork z Claude Code, miejsce przechowywania transkrypcji jest istotnym elementem decyzji.

W obrębie jednej maszyny zakres wyszukiwania jest szerszy, niż można by oczekiwać. claude --resume <session-id> przeszukuje najpierw bieżący katalog projektu i jego drzewa robocze git, a następnie każdy inny projekt na tej maszynie. Kluczową zasadą jest stwierdzenie „na tej maszynie”. Identyfikator sesji z innego hosta nie zostanie rozpoznany, o czym Claude Code informuje za pomocą No conversation found with session ID: <session-id>.

Gdzie Claude Code przechowuje historię sesji

Domyślnie transkrypty znajdują się w katalogu konfiguracyjnym Claude Code, w ścieżce o formacie ~/.claude/projects/<project>/<session-id>.jsonl.

<project> to ścieżka do katalogu roboczego, w której każdy znak niebędący znakiem alfanumerycznym został zastąpiony myślnikiem. Sesja rozpoczęta w /home/deploy/apps/api jest zatem przechowywana w katalogu o nazwie -home-deploy-apps-api. Jeśli przekonwertowana nazwa przekroczyłaby 200 znaków, Claude Code skraca ją i dodaje skrót pełnej ścieżki, dzięki czemu nazwa katalogu mieści się w limitach systemu plików.

Plik ma format JSONL: jeden obiekt JSON w linii, gdzie każda linia to wiadomość, użycie narzędzia lub wpis metadanych. Jest to tekst czytelny dla człowieka i można go przeglądać.

Nie należy jednak tworzyć własnych parserów dla tych plików. Format wpisów jest wewnętrzny dla Claude Code i zmienia się między wersjami, więc skrypt odczytujący te pliki bezpośrednio może przestać działać po każdej aktualizacji. Dokumentacja Anthropic zaleca korzystanie z /export lub udokumentowanych interfejsów skryptowych, co jest słuszną praktyką właśnie z tego powodu.

Dwa ustawienia zmieniają sposób przechowywania danych. CLAUDE_CONFIG_DIR zmienia lokalizację całego katalogu konfiguracyjnego, co pozwala na przeniesienie transkryptów na oddzielny lub zaszyfrowany wolumin. cleanupPeriodDays w pliku settings.json określa czas przechowywania historii; wartość domyślna to 30 dni, a minimalna to 1 dzień.

Co faktycznie znajduje się w plikach transkrypcji

Każdy wynik działania narzędzia jest rejestrowany, co oznacza, że transkrypcja zawiera zawartość plików odczytanych przez Claude oraz dane wyjściowe poleceń wykonanych przez Claude. Strona dotycząca wykorzystania danych firmy Anthropic stwierdza to jasno: Claude Code przechowuje transkrypcje sesji lokalnie w formacie tekstowym w ~/.claude/projects/.

Należy rozważyć, co to oznacza w kontekście serwera. Jeśli Claude odczytał plik .env, aby ustalić, dlaczego usługa nie startuje, zawartość tego pliku znajduje się teraz w pliku JSONL w katalogu domowym użytkownika. Jeśli polecenie wyświetliło ciąg połączeniowy, ten ciąg również tam jest. Nie doszło do wycieku. Transkrypcja zarejestrowała przebieg zdarzeń, co jest jej głównym celem, i właśnie dlatego należy uwzględnić ją w modelu zagrożeń.

  • Kopie zapasowe: zwykła kopia zapasowa /home lub /root przenosi transkrypcje do miejsca przechowywania kopii zapasowych. Należy dodać wykluczenie lub zaakceptować fakt, że kopie zapytań oraz zawartość plików znajdują się teraz w magazynie kopii zapasowych.
  • Migawki i obrazy: migawka VPS wykonana z dowolnego powodu zawiera cały katalog. Podobnie jest w przypadku obrazu, który jest klonowany w celu utworzenia drugiego serwera.
  • Inne konta na serwerze: należy samodzielnie sprawdzić uprawnienia za pomocą ls -ld ~/.claude ~/.claude/projects, zamiast zakładać, że są one wystarczająco restrykcyjne.
  • Świadome przesyłanie danych: polecenie /feedback wysyła historię konwersacji do Anthropic w sposób celowy, a /bug oraz /share raportują przez tę samą ścieżkę. Są to działania podejmowane świadomie, dlatego należy wiedzieć, na co wyraża się zgodę przed potwierdzeniem.

Jeśli transkrypcje nie powinny być tworzone, CLAUDE_CODE_SKIP_PROMPT_HISTORY wyłącza ich zapisywanie, a --no-session-persistence wyłącza je dla pojedynczego, nieinteraktywnego uruchomienia claude -p. Przed ustawieniem którejkolwiek z tych opcji należy zrozumieć konsekwencje. Transkrypcje są odczytywane przez funkcję wznawiania sesji, więc brak transkrypcji oznacza brak możliwości wznawiania.

Jak odnaleźć dawną konwersację

Otwórz selektor za pomocą claude --resume lub używając /resume wewnątrz trwającej sesji. Każdy wiersz wyświetla nazwę sesji, jeśli została nadana, lub wygenerowany tytuł w przeciwnym razie, a także czas od ostatniej aktywności, gałąź git oraz rozmiar pliku.

Selektor posiada funkcję wyszukiwania. Naciśnij / lub po prostu zacznij pisać, aby przefiltrować listę. Warto opanować skróty rozszerzające zakres wyszukiwania: Ctrl+A wyświetla sesje ze wszystkich projektów na tej maszynie, Ctrl+W pokazuje każde drzewo robocze (worktree) bieżącego repozytorium, a Ctrl+B ogranicza listę do bieżącej gałęzi git. Naciśnij Space, aby wyświetlić podgląd zawartości sesji przed jej wybraniem, oraz Ctrl+R, aby zmienić nazwę podświetlonego elementu.

Nadawanie nazw sesjom znacznie ułatwia zarządzanie nimi. Rozpocznij sesję za pomocą claude -n auth-refactor lub uruchom /rename auth-refactor w trakcie pracy, w momencie gdy konwersacja przekształca się w konkretne zadanie. Nazwaną sesję można następnie wznowić po nazwie bezpośrednio z poziomu powłoki.

Sesja bez nazwy otrzymuje wygenerowany tytuł, tworzony przez żądanie w tle do niewielkiego, szybkiego modelu, który podsumowuje pierwszy prompt. Tytuł ten pomaga rozpoznać wiersz w selektorze, ale nie służy jako identyfikator do wznawiania. claude --resume <name> dopasowuje tylko nazwy nadane samodzielnie.

Przeszukiwanie transkrypcji w celu znalezienia właściwej sesji

Czasami pamięta się tylko konkretną frazę. Transkrypcje są plikami tekstowymi, więc można je przeszukiwać.

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

Polecenie to wyświetla ścieżki do pasujących transkrypcji. Nazwa pliku bez rozszerzenia .jsonl stanowi identyfikator sesji, który jest akceptowany przez claude --resume <session-id>. Należy użyć grep, aby ustalić, która sesja jest potrzebna, a następnie wznowić ją lub wyeksportować w celu odczytania zawartości.

Dwie istotne uwagi. Zawartość jest sformatowana jako JSON-escaped, więc fraza zawierająca znaki cudzysłowu lub podzielona znakiem nowej linii może nie zostać dopasowana jako ciąg dosłowny. Ponadto dopasowanie wewnątrz wyniku działania narzędzia oznacza, że tekst ten został przetworzony przez Claude, a nie wpisany przez użytkownika.

Odczyt i eksport konwersacji

/export renderuje bieżącą konwersację jako tekst zwykły, w którym wiadomości oraz dane wyjściowe narzędzi są zapisane w sposób czytelny, zamiast w formacie JSON. Bez argumentu otwiera menu oferujące zapis do schowka lub pliku. Z podaną nazwą pliku /export handover.txt zapisuje dane bezpośrednio pod wskazaną ścieżką. Jest to właściwy sposób przenoszenia konwersacji z serwera na laptopa lub dołączania jej do zgłoszenia serwisowego.

W przypadku automatyzacji należy korzystać z interfejsów, które mają zapewnioną stabilność. Hooki oraz polecenia linii statusu otrzymują pole transcript_path jako dane wejściowe, dzięki czemu hook SessionEnd może archiwizować transkrypcję po zakończeniu sesji. Można również zadać pytanie zapisanej sesji bez jej otwierania:

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

Polecenie to wysyła dodatkowe zapytanie do starej konwersacji i zwraca ustrukturyzowany format JSON. Jest to znacznie lepsza podstawa niż parsowanie formatu JSONL, który może ulec zmianie w kolejnym wydaniu.

Rozpoczęcie od nowa zamiast wznawiania

Wznawianie przywraca całą historię, a cała historia jest tym, co zawiera każde kolejne żądanie. Kontynuowanie dzisiaj rozmowy, która trwała wczoraj cztery godziny, jest kosztowne, a sposób, w jaki zużycie tokenów sumuje się w długiej sesji wyjaśnia, skąd faktycznie bierze się ten koszt.

Claude Code czasami oferuje rozwiązanie pośrednie. W planie Pro lub Max wznowienie sesji, która była nieaktywna przez około godzinę i zawiera ponad 100 000 tokenów, otwiera okno dialogowe przed wysłaniem pierwszej wiadomości. Pamięć podręczna promptu (prompt cache) wygasła w tym czasie, więc kolejne żądanie przetworzy pełną historię niezależnie od wybranej opcji.

  • Wznów z podsumowaniem (Resume from summary) natychmiast uruchamia kompresję, dzięki czemu późniejsze żądania zawierają podsumowanie zamiast pełnej historii. Jest to tańsze w przeliczeniu na żądanie, ale informacje usunięte przez podsumowanie stają się niedostępne.
  • Wznów pełną sesję bez zmian (Resume full session as-is) ładuje rozmowę w niezmienionej formie, zachowując każdy szczegół przy koszcie jednostkowym żądania, który rośnie wraz z rozmiarem rozmowy.

Trzecia opcja wznawia sesję w całości i blokuje wyświetlanie okna dialogowego przy kolejnych wznowieniach.

Decyzja jest prostsza, niż się wydaje. Wznawiaj sesję, gdy kolejna czynność, którą chcesz wykonać, zależy od tego, co już powiedziano. Rozpoczynaj od nowa, gdy tak nie jest. Dryf kontekstu łatwo zauważyć, jeśli zwraca się na niego uwagę: Claude odwołuje się do pliku usuniętego godzinę temu lub ponownie kwestionuje decyzję ustaloną na początku sesji. Jest to nieaktualny kontekst, a jego przenoszenie kosztuje zarówno tokeny, jak i precyzję.

Jeśli użyteczną częścią starej rozmowy jest decyzja lub fakt, który będzie potrzebny ponownie, nie polegaj na wznawianiu sesji w celu ich zachowania. Zapisz to w miejscu dostępnym dla każdej sesji, do czego służą pliki pamięci Claude Code.

Warto również znać /branch. Kopiuje ono rozmowę do bieżącego punktu i przełącza użytkownika na kopię, pozostawiając oryginał nienaruszony w selektorze. Użyj tego, aby wypróbować drugie podejście bez utraty pierwszego.

Czym różni się wznawianie od kompresji i pamięci

Pojęcia te są stale mylone, mimo że rozwiązują odmienne problemy.

Wznawianie dotyczy przywrócenia dostępu do konwersacji po jej opuszczeniu, restarcie systemu lub przejściu do innego zadania. Kompresja odnosi się do okna kontekstowego wewnątrz aktywnej konwersacji: /compact zastępuje dane przechowywane przez Claude podsumowaniem, dzięki czemu późniejsze żądania zużywają mniej tokenów. Jeśli problemem jest zapełnienie okna kontekstowego, należy użyć kompresji, co szczegółowo opisano w zarządzaniu oknem kontekstowym Claude Code.

Pamięć działa w jeszcze inny sposób. Pliki CLAUDE.md oraz pamięć automatyczna przechowują instrukcje i fakty, które są ładowane na początku każdej sesji, więc nie stanowią one konwersacji, do której się powraca. Są to informacje zapisywane w celu uniknięcia konieczności powracania do poprzednich sesji.

Jeśli celem jest prowadzenie dwóch jednoczesnych i współpracujących ze sobą konwersacji, służy do tego osobny mechanizm. Sesje Claude Code mogą przesyłać między sobą wiadomości, gdy obie są aktywne, co stanowi problem odmienny od przywracania wczorajszej sesji z dysku.

FAQ

Gdzie Claude Code przechowuje historię sesji?

Domyślnie w katalogu konfiguracyjnym pod adresem ~/.claude/projects/<project>/<session-id>.jsonl, gdzie <project> to ścieżka do katalogu roboczego, w której znaki niebędące alfanumerycznymi zastąpiono myślnikami. Każdy plik ma format JSONL: jeden obiekt JSON w linii dla wiadomości, użycia narzędzia lub wpisu metadanych. CLAUDE_CONFIG_DIR pozwala przenieść katalog konfiguracyjny w inne miejsce, a cleanupPeriodDays w settings.json określa czas przechowywania transkrypcji; domyślnie jest to 30 dni, przy czym minimum wynosi 1 dzień.

Dlaczego nie widzę sesji z VPS w selektorze na moim laptopie?

Ponieważ transkrypcje są zapisywane na dysku maszyny, na której uruchomiono agenta, i nie są synchronizowane między urządzeniami. Konwersacja przeprowadzona wewnątrz tmux na VPS istnieje tylko na tym VPS. Należy ją wznowić przez SSH lub uruchomić w niej /export i skopiować plik tekstowy, jeśli wymagana jest lokalna kopia.

Czy mogę wznowić sesję rozpoczętą w innym katalogu?

Tak, jeśli znasz identyfikator sesji. claude --resume <session-id> przeszukuje najpierw bieżący katalog projektu i jego drzewa robocze git, a następnie wszystkie inne projekty na tej samej maszynie. Wewnątrz selektora Ctrl+A rozszerza listę na wszystkie projekty na maszynie, a Ctrl+W na wszystkie drzewa robocze bieżącego repozytorium. Jeśli nie znaleziono dopasowania, Claude Code zgłosi No conversation found with session ID: <session-id>.

Czy powinienem wznowić starą sesję, czy rozpocząć nową?

Wznawiaj, gdy kolejna wiadomość zależy od tego, co zostało powiedziane wcześniej w danej konwersacji. Rozpoczynaj od nowa, gdy nie ma takiej zależności, ponieważ wznowienie ładuje całą historię, a każde kolejne żądanie ją uwzględnia. Monitoruj zjawisko dryfu: sesja, która wciąż odwołuje się do usuniętych plików, zawiera nieaktualny kontekst, co zwiększa zużycie tokenów i obniża precyzję odpowiedzi w każdej turze.

Czy mogę zablokować zapisywanie transkrypcji przez Claude Code na dysku?

Tak. CLAUDE_CODE_SKIP_PROMPT_HISTORY wyłącza zapisywanie transkrypcji, a --no-session-persistence wyłącza je dla pojedynczego, nieinteraktywnego uruchomienia claude -p. Należy pamiętać, że transkrypcje są odczytywane podczas wznawiania, więc ich wyłączenie sprawi, że --continue oraz --resume nie będą miały danych do załadowania. Jeśli problemem jest lokalizacja plików, a nie sam fakt ich istnienia, należy skierować CLAUDE_CONFIG_DIR na zaszyfrowany wolumen i zmniejszyć wartość cleanupPeriodDays.