Aynı anda birkaç Claude Code oturumu çalıştırdığınızda, düz bir "Claude ilginizi bekliyor" bildirimi yeterli olmaz, çünkü hangi oturumun gönderdiğini anlayamazsınız. Çözüm, her bildirime oturumun projesini veya klasörünü eklemektir. Her hook, oturumun cwd ve session_id değerlerini JSON olarak alır; böylece hook'unuz bunları okuyup proje adını bildirime ekleyebilir. Oturumlara claude -n <name> veya /rename ile anlaşılır isimler verin ve aynı repository üzerindeki paralel oturumların her birinin kendi klasörü olması için claude --worktree <name> kullanın; bu klasör de bildirimde görünür.
01Paralel oturumlar neden kafa karıştırır
İki üç Claude Code oturumunu yan yana çalıştırmak artık olağan bir çalışma şekli: biri bug düzeltir, biri test yazar, biri bir refactor'ı dener. Her oturum kendi hızında durur. Sorunlar hep aynıdır:
- bir bildirim gelir ve hangi terminal sekmesinden geldiğini bilemezsiniz;
- siz başka birini izlerken bir oturum yirmi dakikadır bir izin prompt'unda bekliyordur;
- yanlış pencerede yanıt verirsiniz.
Üçü de kimlik tespitine dayanır. Her bildirim nereden geldiğini söylemeli, her yanıt da soran oturuma geri gitmelidir.
02Önce oturumları düzgünce ayırın
Aynı repository için worktree kullanın
Aynı checkout'u düzenleyen iki oturum birbirinin değişikliklerini bozar. Claude Code'un --worktree flag'i (kısaca -w) izole bir git worktree oluşturur ve oturumu onun içinde başlatır:
claude --worktree feature-auth
claude --worktree fix-login
Varsayılan olarak her worktree, repository kökünde .claude/worktrees/<name>/ altında, worktree-<name> adlı yeni bir branch üzerinde oluşturulur. Her komutu kendi terminalinde çalıştırın. Worktree'lerin untracked dosya olarak görünmemesi için .claude/worktrees/ yolunu .gitignore dosyanıza ekleyin.
Çıkış yaptığınızda Claude Code worktree'yi kontrol eder. Worktree temizse ve oturuma hiç isim vermediyseniz, Claude Code worktree'yi ve branch'ini siler; aksi halde saklanıp saklanmayacağını sorar. Saklanan bir worktree'ye daha sonra dönmek için çıkışta yazdırdığı claude --worktree <name> --resume komutunu çalıştırın. Worktree'leri kendiniz yönetmeyi tercih ederseniz git worktree add ../project-feature-a -b feature-a da işe yarar; claude'u o klasörün içinde başlatın.
Bildirimler açısından faydalı bir yan etki: artık her oturumun feature-auth gibi kendi klasör adı vardır ve bildirimde görmek istediğiniz şey tam olarak budur.
Oturumlarınıza isim verin
İsimler oturumları bulmayı ve devam ettirmeyi kolaylaştırır:
claude -n auth-refactor
Çalışan bir oturumun içinde /rename auth-refactor aynı işi yapar ve isim prompt çubuğunda görünür. Daha sonra claude --resume auth-refactor sizi doğrudan oraya geri götürür. Oturum seçicide (isim vermeden claude --resume), Ctrl+W listeyi repository'nin tüm worktree'lerini kapsayacak şekilde genişletir.
03Kendi yazdığınız her bildirime projeyi ekleyin
Her command hook, standart girdiden tüm event'lerde ortak olan alanları içeren bir JSON alır; bunlar arasında session_id, cwd, transcript_path ve hook_event_name vardır. Worktree oturumunda cwd worktree köküdür ve Claude dizin değiştirirse onu takip eder. Hook'unuzda bunu okuyun ve yolun son kısmını etiket olarak kullanın.
Mac ve Linux'ta bunu ~/.claude/hooks/notify-session.sh olarak kaydedin ve chmod +x ile çalıştırılabilir yapın. jq gerektirir.
#!/bin/sh
input=$(cat)
project=$(basename "$(printf '%s' "$input" | jq -r '.cwd')")
event=$(printf '%s' "$input" | jq -r '.hook_event_name')
case "$event" in
Stop) msg="Claude has finished" ;;
*) msg="Claude needs you" ;;
esac
notify-send "Claude Code: $project" "$msg"
Mac'te son satırı, macOS rehberinde gösterildiği gibi bir osascript bildirimiyle değiştirin. Windows'ta aynı JSON'u PowerShell'de ConvertFrom-Json ile okuyun; Windows rehberinde tam bir örnek bulabilirsiniz.
Ardından ilgilendiğiniz event'ler için ~/.claude/settings.json dosyasına kaydedin:
{
"hooks": {
"Stop": [
{ "hooks": [{ "type": "command", "command": "~/.claude/hooks/notify-session.sh" }] }
],
"Notification": [
{ "matcher": "permission_prompt", "hooks": [{ "type": "command", "command": "~/.claude/hooks/notify-session.sh" }] }
]
}
}
Yollarla ilgili iki not. Klasör adları boşluk içerebileceğinden "$input" gibi değişkenleri tırnak içine alın. Bir script'e ${CLAUDE_PROJECT_DIR} ile başvuruyorsanız, Claude bir worktree'ye geçse bile bu değerin oturumun başladığı klasörde kaldığını unutmayın. Geçerli klasöre ihtiyacınız olduğunda input'tan cwd değerini okuyun.
tmux içinde çalışıyorsanız, pane veya window çoğu zaman klasörden daha iyi bir etikettir. tmux rehberi, doğru pane'i nasıl bulup ona geçeceğinizi gösterir.
04Zor kısım: doğru oturuma yanıt vermek
Etiketli bir bildirim, hangi oturumun sizi beklediğini söyler. Ama yanıt vermek için yine de o terminale gitmeniz gerekir. Üç oturumla bu, doğru sekmeyi bulmak, prompt'a kaydırmak ve yazmak demektir. Kendi yazdığınız bir hook yanıtınızı kolayca geri gönderemez, çünkü Claude Code'a karar döndürebilen tek şey o oturumun içinde bekleyen hook'tur.
Claude Code Notifier tam bu boşluğu doldurur. Anthropic tarafından yapılmamış, bağımsız bir araçtır. Komut satırı aracı ccn, Mac, Windows ve Linux üzerinde Claude Code hook'ları olarak kurulur; böylece başlattığınız her oturum, hangi terminalde olursa olsun, oturum başına ayar gerekmeden kapsanır. Her bildirim projenin adını ve klasörünü taşır, bu sayede iPhone veya Android telefonunuzda hangi oturumun gönderdiğini görebilirsiniz. İsteği gönderen hook yanıtınızı bekleyen hook olduğu için, telefondan verdiğiniz onay, seçim veya ek talimat soruyu soran oturuma geri gider.
Birden fazla oturumla önemli olan birkaç ayrıntı:
- Birden fazla bilgisayar. Bir telefon birden fazla bilgisayarla, bir bilgisayar da birden fazla telefonla eşleşebilir.
ccn devicesbu bilgisayarla eşleşmiş telefonları listeler. - Varlık algılama. Son 30 saniye içinde yazdıysanız hiçbir şey telefonu beklemez ve terminal her zamanki gibi sorar. Uzaktaysanız oturum, seçtiğiniz bir üst sınıra (
hold_ceiling_seconds) kadar telefondan yanıt bekler ve klavyeye dokunduğunuz anda beklemeyi bırakır. - Telefonsuz masaüstü bildirimleri. Bir telefon eşleştirmeden önce de
ccn, herhangi bir oturum bittiğinde, izin gerektiğinde veya soru sorduğunda bilgisayarda masaüstü bildirimi gösterir.
Aynı anda yalnızca bir oturum çalıştırıyor ve masanızda oturuyorsanız, etiketli bir masaüstü bildirimi muhtemelen yeterlidir. Karşılaştırma rehberi seçenekleri yan yana sunar.
05SSS
Bir bildirimi hangi Claude Code oturumunun gönderdiğini nasıl anlarım?
Hook'un JSON input'undaki cwd alanını okuyun ve klasör adını bildirim başlığına koyun. Worktree kullanıldığında her oturumun kendi klasörü olur, dolayısıyla ad her oturum için farklıdır. Claude Code Notifier gibi araçlar proje adını ve klasörünü her bildirime sizin için ekler.
Aynı repository'de iki Claude Code oturumu çalıştırabilir miyim?
Evet, ancak düzenlemeleri çakışmasın diye her birine kendi worktree'sini verin. claude --worktree <name>, yeni bir branch üzerinde .claude/worktrees/<name>/ altında bir worktree oluşturur ve oturumu orada başlatır.
Bir Claude Code oturumuna nasıl ad veririm?
Oturumu claude -n <name> ile başlatın veya oturum içinde /rename <name> çalıştırın. Daha sonra claude --resume <name> ile devam edebilirsiniz.
Hook'lar her oturum için ayrı mı çalışır?
Evet. Her oturum, kendi event'leri tetiklendiğinde kendi hook'larını çalıştırır ve input'ta o oturumun session_id ve cwd değerlerini iletir. ~/.claude/settings.json içindeki hook'lar başlattığınız her oturuma uygulanır.
Farklı bilgisayarlardan gelen bildirimler karışır mı?
ccn ile karışmaz. Her bilgisayar telefonunuzla ayrı ayrı eşleşir ve kendi adına sahiptir; her bildirim de geldiği projeyi taşır.