Sesi Claude Code: Melanjutkan, Bercabang, dan Menamai

Pakai flag continue untuk sesi terbaru di direktori saat ini, flag resume tanpa argumen untuk membuka picker sesinya, atau flag resume dengan nama atau session ID untuk langsung ke sana. Di dalam sesi, perintah resume berpindah ke percakapan lain. Melanjutkan lewat session ID bekerja dari direktori mana pun di mesin itu.
Flag peluncuran tidak dipulihkan, jadi berikan lagi konfigurasi MCP, settings, direktori plugin, model cadangan, dan direktori tambahan mana pun. Mode plan dan mode bypass-permissions tidak pernah dipulihkan. Perintah Bash latar dan task monitor juga tidak, meski scheduled task yang belum kedaluwarsa dipulihkan.
Keduanya menyalin percakapan sejauh ini. Perintah branch memindahkan proses yang sedang berjalan ke salinannya, jadi izin yang Anda setujui untuk sesi itu tetap berlaku. Fork dari shell memulai proses terpisah, yang mulai tanpa izin-izin itu, jadi Anda menyetujuinya lagi di sana. Sesi aslinya tetap utuh di kedua cara.
Sebagai file JSONL di bawah direktori konfigurasi Anda, satu per sesi, dalam folder yang dinamai dari path direktori kerja dengan karakter non-alfanumerik diganti tanda hubung. Format entrinya internal dan berubah antar rilis, jadi pakai perintah export atau antarmuka skripnya ketimbang mem-parsing file-nya langsung.
Hanya kalau itu nama yang Anda setel atau judul yang dihasilkan. Nama tampilan bawaan, yang menggabungkan nama direktori dengan sufiks dua karakter, mengidentifikasi sesi di daftar sesi yang berjalan tapi bukan pegangan untuk melanjutkan — memberikannya melaporkan sesi tidak ditemukan. Menamai sesinya menggantikan bawaannya di mana-mana.

Ringkasan Utama
Sesi Claude Code adalah percakapan yang disimpan terus-menerus ke transkrip JSONL lokal dan terikat pada sebuah direktori proyek. Melanjutkannya memulihkan riwayat, model, agent, mode izin, dan goal yang aktif, tapi bukan flag yang Anda pakai saat meluncurkannya. Branch menyalin percakapannya di tempat; fork memulai proses terpisah tanpa izin sesi yang sudah Anda berikan.
Saya pernah kehilangan empat puluh menit karena melanjutkan sebuah sesi di terminal lain, di direktori lain, tanpa direktori tambahan yang saya sertakan saat meluncurkannya — dan sepuluh menit pertamanya saya yakin modelnya lupa proyeknya, bukan bahwa saya yang lupa memberi flag. Sesi memulihkan banyak hal. Daftar yang tidak dipulihkannya pendek, spesifik, dan layak dihafal.
Tulisan ini membahas lima jalan kembali ke sebuah percakapan dan apa yang dilewati masing-masing, apa persisnya yang dipulihkan sebuah resume, dialog ringkasan yang muncul di sesi yang lama menganggur, tiga label yang dibawa sebuah sesi dan mana yang benar-benar bisa dipakai melanjutkan, branch lawan fork, serta di mana transkripnya tinggal ketika Anda perlu memindah atau mengedaluwarsakannya.
Sesi disimpan sambil Anda bekerja, jadi keluar atau membersihkan layar tidak menghilangkan satu pun. Rute mana yang Anda pakai penting karena penyaringannya berbeda: run non-interaktif dan sesi Agent SDK ditinggalkan dari picker dan dari continue, sesi latar dilewati continue, dan sesi yang prompt pertamanya perintah loop disembunyikan dari keduanya.
claude --continue # most recent in THIS directory
claude --resume # the picker
claude --resume auth-refactor # by name
claude --resume 5fbea6f3-… # by session ID, from ANY directory
claude --from-pr 4821 # picker, filtered to that PR
/resume # switch from inside a session
# Name it, so it is findable later:
claude -n auth-refactor
/rename auth-refactor
# Ctrl+R on a row in the picker renames it too.
# Two names collide on one machine? The existing session keeps
# the name and yours becomes auth-refactor-graceful-unicorn.Melanjutkan lewat session ID adalah pintu daruratnya ketika sebuah sesi sudah berpindah. Claude Code melihat di proyek saat ini dan worktree-nya lebih dulu, lalu setiap proyek lain di mesin itu — menyelesaikannya hanya ketika persis satu proyek lain memegang transkrip untuk ID itu, jadi salinan yang disalin tangan melaporkan tidak ditemukan ketimbang melanjutkan salinan sembarang.
Percakapannya kembali utuh, panggilan tool dan hasilnya termasuk. Begitu pula beberapa potong keadaan sesi, masing-masing dengan catatan yang lebih enak dipelajari sekarang ketimbang saat sedang ada insiden.
Keadaan saat resume:
| Apa | Bagaimana ia kembali |
|---|---|
| Model | Yang dipakai sesi itu — kecuali ia sudah dipensiunkan, tidak diizinkan, atau sebuah flag model atau environment variable memilihkan satu saat peluncuran |
| Agent | Sesi yang dimulai sebagai sebuah agent berlanjut sebagai agent itu. Claude Code melihat di direktori asal sesinya lalu di direktori tempat Anda melanjutkan, dan memperingatkan dengan menyebut namanya kalau tak menemukan keduanya |
| Mode izin | Dipulihkan, kecuali plan dan bypass-permissions yang tidak pernah, serta auto yang hanya ketika akun Anda masih memenuhi syarat |
| Goal yang aktif | Terbawa, dengan hitungan giliran, timer, dan baseline token-nya di-reset. Goal yang sudah tercapai atau dibersihkan tidak dipulihkan |
| Flag peluncuran | Tidak dipulihkan. Berikan lagi konfigurasi MCP, settings, direktori plugin, model cadangan, dan direktori tambahannya — file settings dibaca ulang sendiri |
Satu hal lagi yang menjebak orang: melanjutkan sesi yang sama di dua terminal tanpa fork menyelang-nyelingkan kedua percakapannya ke satu transkrip. Tidak ada peringatan dan tidak ada konflik, cuma riwayat yang terbaca seperti dua orang bicara bersamaan. Kalau Anda mau dua jalur kerja dari titik awal yang sama, fork salah satunya.
Di Pro atau Max, melanjutkan sesi yang diam sekitar satu jam dan lebih dari 100.000 token membuka sebuah dialog sebelum pesan pertama Anda. Cache prompt-nya sudah kedaluwarsa saat itu, jadi permintaan berikutnya memproses ulang seluruh riwayatnya apa pun pilihan Anda — pilihannya soal setiap permintaan sesudah yang itu:
Sebuah sesi bisa membawa nama yang Anda setel, judul yang dihasilkan, dan nama tampilan bawaan — dan bedanya jadi penting begitu Anda mencoba melanjutkan dengan mengetik apa yang Anda lihat. Nama tampilan bawaan, semacam my-app-3f, mengidentifikasi sesi di daftar sesi yang sedang berjalan tapi bukan pegangan untuk melanjutkan: berikan ia dan Claude Code tidak akan menemukan sesinya. Judul yang dihasilkan, ringkasan singkat prompt pertama Anda, adalah pegangan.
Menamainya menggantikan keduanya. Setel saat peluncuran, dengan perintah rename di tengah sesi, atau dengan Ctrl+R pada sebuah baris di picker; menerima sebuah plan juga menghasilkan judul dari plan-nya. Kalau sesi hidup di mesin yang sama sudah memegang nama itu, punya Anda menjadi varian bersufiks dua kata dan Anda diberi tahu — yang lebih ramah ketimbang perilaku lama yang membiarkan dua sesi berbagi satu nama.
Branch menyalin percakapan sejauh ini lalu memindahkan Anda ke salinannya, meninggalkan yang asli utuh di picker. Fork dari shell melakukan penyalinan yang sama tapi di proses baru. Satu perbedaan itu menentukan apa yang ikut bersama Anda, dan izin yang sudah diberikan adalah bagian yang orang rasakan.
# Branch: copy the conversation, keep working in the copy.
/branch try-streaming-approach
# The confirmation prints TWO session IDs — the branch you are
# now in, and the original, which is untouched on disk.
# From the shell instead, a separate process:
claude --continue --fork-session
# What the branch inherits — and this is where the two differ:
#
# conversation history copied up to the /branch point
# "allow for this session" KEPT by /branch (same process),
# LOST by --fork-session (new one)
# background subagents keep running; output lands in the
# and background shells branch, not the original
# Remote Control follows you into the branchPicker-nya alat pencarian, bukan sekadar daftar. Karakter cetak apa pun memulai penyaringan, Ctrl+W melebar ke setiap worktree repository-nya, Ctrl+A melebar ke setiap proyek di mesin itu, dan Ctrl+B menyaring ke branch git saat ini. Paling enak, menempelkan URL pull atau merge request dari GitHub, GitLab atau Bitbucket menemukan sesi yang membuatnya.
Transkrip berupa JSONL di bawah direktori konfigurasi Anda, satu file per sesi, dalam folder yang diturunkan dari path direktori kerjanya. Bacalah dengan perintah export atau antarmuka skripnya ketimbang mem-parsing-nya: format entrinya internal dan berubah antar rilis, jadi skrip yang membacanya langsung adalah skrip yang rusak saat upgrade.
# Transcripts are JSONL, one object per line:
~/.claude/projects/<project>/<session-id>.jsonl
# <project> = the working directory path with every
# non-alphanumeric character replaced by a hyphen
# The entry format is INTERNAL and changes between releases.
# Parse /export output or the script interfaces instead:
/export # menu, or a filename
claude -p --resume <id> --output-format json "summarize what we
changed" | jq -r '.result'
# Where it lives and how long it stays:
CLAUDE_CONFIG_DIR=/srv/tenant-a # move it off ~/.claude
CLAUDE_CODE_PROJECT_DIR_NAME=work # name <project> yourself
CLAUDE_CODE_SKIP_PROMPT_HISTORY=1 # write nothing, ever
{ "cleanupPeriodDays": 30 } # settings.json, default 30
claude -p --no-session-persistence "…" # one run, no traceCLI, aplikasi desktop, web, dan ekstensi VS Code masing-masing menyimpan riwayat sesinya sendiri, jadi sebuah sesi tidak otomatis ada di mana-mana. Dua jembatan tersedia dan gampang terlupa: flag teleport melanjutkan sesi web di terminal lokal Anda, dan mengganti nama sesi Remote Control dari claude.ai menerapkan nama yang sama di CLI.
Namai sesi sejak awal dan berdasarkan tugas, bukan berdasarkan niat — auth-refactor ketimbang coba-coba-sesuatu. Seminggu kemudian picker-nya berisi empat puluh baris dan yang bisa Anda temukan hanya yang namanya menggambarkan pekerjaan yang Anda ingat lakukan. Biayanya satu perintah di awal dan menghemat arkeologi kecil mengintip baris demi baris dengan spasi untuk menebak mana yang mana.
Pelajari tiga hal yang tidak dipulihkan — flag peluncuran, mode plan dan bypass, serta task latar — dan melanjutkan sesi berhenti menghasilkan kejutan. Fork sebelum menjelajah, supaya jalur yang tadi Anda tempuh masih ada ketika eksperimennya tidak jalan. Dan kalau Anda menjalankan Claude Code di dalam sesuatu yang menanamkannya, setel direktori konfigurasi dan nama direktori proyeknya dengan sengaja, karena bawaannya menurunkan sebuah folder dari path direktori kerja dan itu jarang yang diinginkan sebuah host.
Sumber & bacaan lanjutan