Claude Code Oturumu Devam Ettirme ve Geçmişi
Claude Code oturumunu adıyla veya seçim ekranından devam ettirin; aracın çalıştığı makinede oluşturduğu düz metin konuşma dökümlerini bulun.
Claude Code oturumu nasıl devam ettirilir
Claude Code oturumunu devam ettirmek için geçerli dizindeki en son konuşmayı açmak üzere claude --continue, eski oturumlardan birini listeden seçmek üzere claude --resume çalıştırılmalıdır. Hâlihazırda çalışan bir oturumun içindeyken /resume komutu, oturumdan çıkmadan farklı bir konuşmaya geçiş yapar. Kısa biçimler -c ve -r şeklindedir.
claude --continue
claude --resume
claude --resume auth-refactorOturum adı veya kimliği biliniyorsa bu değer bağımsız değişken olarak verilebilir. Bu durumda Claude Code seçim ekranını göstermeden doğrudan ilgili oturuma geçer.
Aşağıdaki bilgilerin tamamı, Ağustos 2026 itibarıyla resmi oturum belgeleri ile uyumludur. Claude Code sık aralıklarla yeni sürümler yayımlar. Bayrak adları ve klavye kısayolları sürümler arasında değişebilir. Bu nedenle burada yer alan bilgiler terminal çıktısıyla eşleşmediğinde claude --help ve ilgili sayfa esas alınmalıdır.
Bir oturumun gerçekte ne olduğu
Bir oturum, bir proje dizinine bağlı olarak kaydedilmiş tek bir konuşmadır. Claude Code tarafından yapılan araç çağrıları ve bu çağrıların döndürdüğü sonuçlar da dahil olmak üzere tüm mesaj geçmişini içerir. Claude Code, konuşmayı yalnızca sonunda değil, çalışma sırasında sürekli olarak diske yazar. Bu nedenle terminalin kapatılması veya SSH bağlantısının kesilmesi sonrasında da konuşma korunur.
Devam ettirme işlemi yalnızca metni geri yüklemez. Konuşma geçmişinin tamamı, oturumun kullandığı model ve --agent kullanıldıysa oturumun başlatıldığı alt aracıyla birlikte geri gelir. İzin modu da geri yüklenir. Ancak güvenlik amacıyla bazı istisnalar vardır: plan modu ve izinleri atlama modu hiçbir zaman geri yüklenmez. Bu modlardan birinde olan bir oturum, yeni bir oturumun başlayacağı modda devam eder.
Bazı bilgiler geri gelmez. Çünkü bunlar kaydedilmiş durum değil, başlatma sırasında verilen flag'lerdir. --add-dir ile eklenen dizinlerin ve --mcp-config, --settings ve --plugin-dir gibi seçeneklerin devam ettirme sırasında yeniden verilmesi gerekir. settings.json gibi ayar dosyaları başlatma sırasında yeniden okunur. Bu nedenle bu dosyalarda bulunan ayarların tekrar belirtilmesi gerekmez.
VPS üzerinde oturum geçmişi neden daha önemlidir?
İnsanları şaşırtan gerçek şudur: Transkript, aracının çalıştığı makineye yazılır. Hesabınızda tutulmaz ve buluta senkronize edilmez. Bu, ilgili makinenin diskindeki bir dosyadır.
Bu nedenle VPS üzerindeki bir tmux penceresinde bıraktığınız oturum, dizüstü bilgisayarınızdaki seçim ekranında görünmez. Dizüstü bilgisayarınızdaki bir oturum da VPS üzerinde görünmez. Oturumlar arasında hiçbir veri aktarılmaz. Çoğu kişinin VPS üzerinde tmux ile Claude Code çalıştırma biçiminde olduğu gibi çalışıyorsanız gerçek konuşma geçmişiniz sunucuda birikir. Yerel olarak gördüğünüz seçim ekranı ise farklı ve çok daha küçük bir küme gösterir.
Aynı ayrım arayüzler arasında da geçerlidir. Masaüstü uygulaması ve VS Code extension kendi oturum geçmişlerini ayrı ayrı tutar. Bunların hiçbiri CLI geçmişi değildir. Claude Code on the web de kendi geçmişini tutar.
Tek bir makine içinde arama kapsamı beklenenden geniştir. claude --resume <session-id> önce geçerli proje dizininde ve git worktree'lerinde, ardından bu makinedeki diğer tüm projelerde arama yapar. Akılda tutulması gereken ifade "bu makinede"dir. Başka bir host'a ait oturum ID'si hiçbir sonuç vermez. Claude Code bunu No conversation found with session ID: <session-id> ile bildirir.
Claude Code oturum geçmişini nereye kaydeder
Varsayılan olarak dökümler, Claude Code yapılandırma dizini altında ~/.claude/projects/<project>/<session-id>.jsonl biçimindeki bir yolda tutulur.
<project>, çalışma dizininizin yolundaki alfasayısal olmayan her karakterin tireyle değiştirilmiş halidir. Bu nedenle /home/deploy/apps/api konumunda başlatılan bir oturum, -home-deploy-apps-api adlı dizin altında saklanır. Dönüştürülmüş ad 200 karakteri aşarsa Claude Code bu adı kısaltır ve tam yolun özetini sonuna ekler. Böylece dizin adı dosya sistemi sınırları içinde kalır.
Dosya JSONL biçimindedir. Her satırda bir JSON nesnesi bulunur. Satırlar bir iletiyi, araç kullanımını veya meta veri girdisini temsil eder. Dosya okunabilir metindir ve okunmasında sakınca yoktur.
Bu dosya biçimine göre parser yazılmamalıdır. Girdi biçimi Claude Code'a özeldir ve sürümler arasında değişir. Bu nedenle bu dosyaları doğrudan okuyan bir script, herhangi bir güncellemeden sonra çalışmayabilir. Anthropic'in kendi dokümantasyonunda bunun yerine /export veya belgelenmiş script arayüzlerinin kullanılması önerilir. Bu öneri tam olarak bu nedenle yerindedir.
İki ayar bu konumu ve saklama süresini değiştirir. CLAUDE_CONFIG_DIR, yapılandırma dizininin tamamını farklı bir konuma taşır. Böylece dökümler ayrı bir birimde veya şifrelenmiş bir birimde tutulabilir. settings.json içindeki cleanupPeriodDays, dökümlerin ne kadar süreyle saklanacağını belirler. Varsayılan değer 30 gündür ve minimum değer 1 gündür.
Bu transcript dosyalarının içinde gerçekte ne bulunur
Her araç sonucu kaydedilir. Bu nedenle bir transcript, Claude'un okuduğu dosyaların içeriğini ve çalıştırdığı komutların çıktısını içerir. Anthropic'in veri kullanımı sayfası bunu açıkça belirtir: Claude Code, oturum transcript'lerini yerel olarak düz metin biçiminde ~/.claude/projects/ altında saklar.
Bunun bir sunucuda ne anlama geldiğini düşünün. Claude bir servisin neden başlatılamadığını anlamak için bir .env dosyasını okuduysa, bu dosyanın içeriği artık home dizininizdeki bir JSONL dosyasında bulunur. Bir komut bir bağlantı dizesi yazdırdıysa, bu dize de aynı dosyada yer alır. Herhangi bir veri sızmadı. Transcript, gerçekleşenleri kaydetti. Amacı da budur. Tam olarak bu nedenle transcript'ler tehdit modelinize dahil edilmelidir.
- Yedekler:
/homeveya/rootdizininin düz bir yedeği, transcript'lerinizi yedeklerin tutulduğu konuma kopyalar. Bir hariç tutma kuralı ekleyin veya prompt'larınızın ve dosya içeriklerinizin kopyalarının artık yedekleme deposunda bulunacağını kabul edin. - Snapshot'lar ve imajlar: Herhangi bir nedenle alınan bir VPS snapshot'ı, dizinin tamamını içerir. İkinci bir sunucu oluşturmak için klonladığınız imaj da aynı şekilde bu içeriği barındırır.
- Sunucudaki diğer hesaplar: İzinlerin yeterince kısıtlı olduğunu varsaymak yerine
ls -ld ~/.claude ~/.claude/projectsile modları kendiniz kontrol edin. - Bilinçli yüklemeler:
/feedbackkomutu konuşma geçmişini kasıtlı olarak Anthropic'e gönderir./bugve/sharede aynı yol üzerinden rapor gönderir. Bunlar sizin seçtiğiniz işlemlerdir. Bu nedenle onaylamadan önce neyi kabul ettiğinizi bilin.
Bir transcript'in hiç oluşturulmamasını istiyorsanız CLAUDE_CODE_SKIP_PROMPT_HISTORY transcript yazılmasını engeller. --no-session-persistence ise tek bir etkileşimsiz claude -p çalıştırması için bunu engeller. Bunlardan herhangi birini ayarlamadan önce bu tercihin sonucunu açıkça değerlendirin. Resume işlemi transcript'leri okur. Bu nedenle transcript yoksa resume de kullanılamaz.
Eski bir konuşma nasıl bulunur
Seçiciyi claude --resume ile veya çalışan bir oturumun içinden /resume ile açın. Her satırda, belirlediyseniz oturum adı; belirlemediyseniz oluşturulan başlık; ayrıca son etkinlikten bu yana geçen süre, git branch'i ve dosya boyutu gösterilir.
Seçicide arama yapılabilir. Listeyi filtrelemek için / tuşuna basın veya yazmaya başlayın. Öğrenmeye değer kısayollar, arama kapsamını genişleten kısayollardır: Ctrl+A bu makinedeki tüm projelerin oturumlarını, Ctrl+W geçerli repository'nin tüm worktree'lerini gösterir ve Ctrl+B listeyi geçerli git branch'i ile sınırlar. Bir oturumu seçmeden önce içeriğini önizlemek için Space, vurgulanan oturumu yeniden adlandırmak için Ctrl+R tuşuna basın.
Oturumları adlandırmak bu işlemleri çok daha kolay hale getirir. Bir oturumu claude -n auth-refactor ile başlatın veya konuşmanın gerçek bir çalışma haline geldiğini fark ettiğiniz noktada /rename auth-refactor komutunu çalıştırın. Adlandırılmış bir oturum, doğrudan shell üzerinden adıyla sürdürülebilir.
Adlandırılmamış bir oturum da oluşturulan bir başlık alır. Bu başlık, ilk prompt'unuzu özetleyen küçük ve hızlı bir modelle yapılan arka plan isteği sonucunda yazılır. Başlık, seçicideki satırı tanımanıza yardımcı olur; ancak oturumu sürdürmek için kullanılan bir tanımlayıcı değildir. claude --resume <name> yalnızca sizin belirlediğiniz adlarla eşleşir.
Doğru oturumu bulmak için transcript kayıtlarında arama
Bazen yalnızca bir ifadeyi hatırlarsınız ve başka hiçbir şey hatırlamazsınız. Transcript kayıtları metin biçimindedir; bu nedenle bunlarda arama yapılabilir.
grep -rl "nftables" ~/.claude/projects/Bu komut, eşleşen transcript kayıtlarının yollarını yazdırır. .jsonl uzantısı çıkarılmış dosya adı oturum kimliğidir ve claude --resume <session-id> bu kimliği kabul eder. Hangi oturumu istediğinizi belirlemek için grep kullanın. Ardından oturumu sürdürün veya gerçekten okumak için dışa aktarın.
İki önemli sınırlama vardır. İçerik JSON biçiminde escape edildiği için tırnak karakteri içeren veya satır sonuna bölünmüş bir ifade, gerçek bir dize olarak eşleşmeyebilir. Ayrıca bir tool sonucundaki eşleşme, Claude'un bu metni gördüğünü gösterir; metnin bir kişi tarafından yazıldığını göstermez.
Bir konuşmayı okuma ve dışa aktarma
/export mevcut konuşmayı, mesajları ve araç çıktısını JSON yerine okunabilir düz metin olarak oluşturur. Bağımsız değişken verilmezse pano veya dosya seçeneği sunan bir menü açar. Dosya adı verildiğinde /export handover.txt çıktıyı doğrudan bu yola yazar. Bir konuşmayı sunucudan dizüstü bilgisayara aktarmanın veya bir destek kaydına eklemenin doğru yolu budur.
Otomasyon için kararlı olması amaçlanan arayüzler kullanılmalıdır. Hook'lar ve durum satırı komutları girdiyi transcript_path alanı olarak alır. Böylece SessionEnd hook'u oturum sona erdiğinde bir transkripti arşivleyebilir. Kayıtlı bir oturuma açmadan da soru gönderilebilir:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'Bu işlem eski konuşmaya bir takip istemi gönderir ve yapılandırılmış JSON döndürür. Değişkenlik gösterebilen bir sonraki sürümde değiştirilebilecek JSONL biçimini ayrıştırmak yerine, otomasyon için çok daha sağlam bir temel sağlar.
Yeni bir oturum başlatmanın devam etmekten daha iyi olduğu durumlar
Devam etmek tüm geçmişi geri getirir ve sonraki her istekte taşınan içerik de bu geçmişin tamamıdır. Dün dört saat süren bir konuşmayı bugün sürdürmek maliyetlidir. Uzun bir oturumda token kullanımının nasıl biriktiği bu maliyetin gerçekte nereden kaynaklandığını açıklar.
Claude Code bazen ara bir seçenek sunar. Pro veya Max planında, yaklaşık bir saattir boşta olan ve 100,000 tokendan fazla içeren bir oturuma devam edildiğinde, ilk mesaj gönderilmeden önce bir iletişim kutusu açılır. Bu sırada prompt cache süresi dolmuş olur. Bu nedenle hangi seçenek seçilirse seçilsin, sonraki istek tam geçmişi bir kez yeniden işler.
- Özetten devam etme hemen bir sıkıştırma işlemi başlatır. Böylece sonraki isteklerde tam geçmiş yerine özet taşınır. İstek başına maliyet daha düşüktür. Ancak özetten çıkarılan bilgiler artık kullanılamaz.
- Tam oturuma olduğu gibi devam etme konuşmayı değiştirmeden yükler. Tüm ayrıntılar korunur. İstek başına maliyet konuşmanın boyutuna göre artar.
Üçüncü seçenek oturuma tam olarak devam eder ve sonraki devam işlemlerinde bu iletişim kutusunun açılmasını engeller.
Karar vermek göründüğünden daha kolaydır. Yazılacak sonraki içerik daha önce söylenenlere bağlıysa devam edilmelidir. Bağlı değilse yeni bir oturum başlatılmalıdır. Bağlamın güncelliğini yitirmesi, buna dikkat edildiğinde kolayca fark edilir: Claude bir saat önce sildiğiniz bir dosyadan söz edebilir veya oturumun başında karara bağladığınız bir konuyu yeniden tartışabilir. Bu durum güncelliğini yitirmiş bağlamdır. Bu bağlamı taşımak aynı anda hem token hem de doğruluk kaybına yol açar.
Eski bir konuşmanın yararlı kısmı yeniden ihtiyaç duyulacak bir karar veya bilgiyse, bunu taşımak için devam etme işlemine güvenilmemelidir. Bilgi, her oturumun erişebileceği bir yere yazılmalıdır. Claude Code bellek dosyaları bunun için kullanılır.
/branch burada da bilinmelidir. Konuşmayı mevcut noktaya kadar kopyalar ve özgün oturumu değiştirmeden, kopyaya geçirir. Özgün oturum seçicide görünmeye devam eder. İlk yaklaşımı kaybetmeden ikinci bir yaklaşımı denemek için kullanılabilir.
Resume ile compaction ve memory arasındaki fark
Bu kavramlar sürekli karıştırılır, ancak farklı sorunları çözer.
Resume, çıkış yaptıktan, sistemi yeniden başlattıktan veya başka bir göreve geçtikten sonra bir konuşmayı yeniden açmakla ilgilidir. Compaction ise etkin bir konuşmanın içindeki context window ile ilgilidir: /compact, Claude'un taşıdığı içeriği bir özetle değiştirir. Böylece sonraki isteklerde daha az token gönderilir. Sorun context window'un dolmasıysa kullanılacak araç compaction'dır. Claude Code context window'unu yönetme konusu bunu ayrıntılı olarak açıklar.
Memory ise farklıdır. CLAUDE.md dosyaları ve auto memory, her session başlangıcında yüklenen talimatları ve bilgileri içerir. Bu nedenle geri dönülen bir konuşma değildir. Bunlar, bir konuşmaya tekrar dönme gereksinimini ortadan kaldırmak için yazılan bilgilerdir.
Aynı anda çalışan ve koordinasyon sağlayan iki konuşma isteniyorsa bunun için ayrı bir mekanizma kullanılır. Claude Code session'ları birbirlerine mesaj gönderebilir. Her iki session da etkin durumdayken bu iletişim sürdürülebilir. Bu, dünkü session'ı diskten yeniden açma sorunundan farklıdır.
FAQ
Claude Code oturum geçmişini nereye kaydeder?
Varsayılan olarak yapılandırma dizininizde, ~/.claude/projects/<project>/<session-id>.jsonl konumunda saklar. Burada <project>, alfasayısal olmayan karakterlerin kısa çizgilerle değiştirilmiş çalışma dizini yoludur. Her dosya JSONL biçimindedir: her satırda bir mesaj, araç kullanımı veya meta veri girdisi için bir JSON nesnesi bulunur. CLAUDE_CONFIG_DIR yapılandırma dizinini başka bir konuma taşır. cleanupPeriodDays içindeki settings.json, dökümlerin ne kadar süreyle saklanacağını belirler. Varsayılan değer 30 gündür ve minimum değer 1 gündür.
Dizüstü bilgisayarımda VPS oturumumu seçicide neden göremiyorum?
Çünkü dökümler, agent'ın çalıştığı makinenin diskine yazılır ve makineler arasında eşitlenmez. VPS üzerindeki tmux içinde yaptığınız bir görüşme yalnızca VPS üzerinde bulunur. SSH üzerinden orada devam edin. Yerel bir kayıt istiyorsanız, oturumun içinde /export komutunu çalıştırın ve metin dosyasını kopyalayın.
Farklı bir dizinde başlattığım oturuma devam edebilir miyim?
Evet, oturum kimliğine sahipseniz devam edebilirsiniz. claude --resume <session-id> önce geçerli proje dizininde ve git worktree'lerinde, ardından aynı makinedeki diğer tüm projelerde arama yapar. Seçici içinde Ctrl+A, listeyi makinedeki tüm projeleri kapsayacak şekilde genişletir. Ctrl+W ise listeyi geçerli repository'nin tüm worktree'lerini kapsayacak şekilde genişletir. Eşleşme bulunamazsa Claude Code, No conversation found with session ID: <session-id> bildirimini gösterir.
Eski bir oturuma devam mı etmeli, yoksa yeni bir oturum mu başlatmalıyım?
Sonraki mesajınız aynı görüşmede daha önce söylenenlere bağlıysa oturuma devam edin. Bağlı değilse yeni bir oturum başlatın. Çünkü oturuma devam etmek tüm geçmişi yeniden yükler ve sonraki her istek bu geçmişi taşır. Bağlam kaymasına dikkat edin: daha önce sildiğiniz dosyalara atıfta bulunmayı sürdüren bir oturum, eski bağlam taşır. Bu bağlam her turda token tüketir ve doğruluğu düşürür.
Claude Code'un dökümleri diske yazmasını durdurabilir miyim?
Evet. CLAUDE_CODE_SKIP_PROMPT_HISTORY döküm yazılmasını engeller. --no-session-persistence ise etkileşimli olmayan tek bir claude -p çalıştırması için bunu engeller. Önce bu tercihin sonucunu değerlendirin. Çünkü resume işlemi dökümleri okur. Bu nedenle yazmayı devre dışı bırakmak, --continue ve --resume öğelerinin yüklenecek hiçbir veriye sahip olmamasına neden olur. Endişeniz dosyaların varlığı değil, nerede tutulduğuysa CLAUDE_CONFIG_DIR öğesini şifrelenmiş bir volume'a yönlendirin ve bunun yerine cleanupPeriodDays değerini düşürün.