Claude Code'da Cross-Session Messaging: SendMessage ve ListAgents Rehberi

Claude Code v2.1.224 ile birlikte oturumlar artık birbirleriyle doğrudan konuşabiliyor: bir terminaldeki Claude, başka bir terminalde -- hatta başka bir makinede -- çalışan Claude'a mesaj gönderebiliyor. Bu özelliğin adı cross-session messaging ve iki araç üzerine kurulu: hangi oturumlara ulaşılabildiğini bulan ListAgents ve mesajı ileten SendMessage. Aynı SendMessage aracı zaten subagent'ları ve agent team üyelerini de mesajlamak için kullanılıyordu; yenilik, bunun artık sizin başlattığınız bağımsız oturumlar arasında da çalışması. Bu yazıda özelliğin tamamını -- ne zaman kullanılacağından teslimat kurallarına, izin sınırlarından makineler arası mesajlaşmaya kadar -- tamamen resmi Claude Code dokümantasyonuna (code.claude.com/docs) ve değişiklik kayıtlarına dayanarak anlatıyorum. Birden çok ajanı aynı anda koordine etmenin diğer yollarını merak ediyorsanız workflows rehberime de göz atabilirsiniz.

Cross-Session Messaging Nedir?

Cross-session messaging, Claude Code oturumlarınızdan birinin bir mesajı diğerine teslim etmesini sağlar. Bir oturumda yaptığınız bir değişiklik başka bir oturumun üzerinde çalıştığı şeyi bozuyorsa, Claude siz fark etmeden önce o oturumu uyarabilir. Bir oturum, diğerinin takıldığı bir soruyu çözdüyse cevabı karşıya geçirebilir. Önemli bir sınır şu: bir mesaj, bir Claude'un diğerine yazdığı düz bir metin parçasıdır -- asla konuşma geçmişi ya da dosya değildir. Bütün bir konuşmayı ya da bağlamını taşımak isterseniz onun yerini /resume ile oturum devretme alır.

Özellik, karşılandığında hiçbir şey açmanıza gerek kalmadan kendiliğinden aktif olur -- Claude Code v2.1.224 veya üzerinde, desteklenen bir platformda çalışan bir oturumda mesajlaşma varsayılan olarak açıktır. Kapsamı ve kısıtlamalarını bu yazının Kullanılabilirlik bölümünde ayrıntılı ele alıyorum.

İki Araç: ListAgents ve SendMessage

Claude bu iş için iki araç kullanır:

  • ListAgents — hangi ajanlara ulaşılabildiğini keşfeder: aynı oturumdaki subagent'lar, aynı makinedeki diğer yerel oturumlarınız (arka plan oturumları dahil) ve Remote Control bağlıyken başka makinelerdeki ya da Claude Code on the web'deki oturumlarınız.
  • SendMessage — keşfedilen hedeflerden birine, isimle, mesajı teslim eder.

Siz bu iki aracı doğrudan çağırmazsınız; Claude hedefi kendisi bulur ve mesajı kendisi yazar. Kendi başına, size hiçbir şey sormadan mesaj gönderme kararı da alabilir -- örneğin başka bir oturumun üzerinde çalıştığı alanı etkileyen bir değişiklik yaptıktan sonra. Siz de doğrudan bir mesaj isteyebilirsiniz; bu durumda yazdığınız istek Claude'un gönderdiği mesajın kendisi değil, ona verdiğiniz bir talimattır:

Diğer terminalimde çalışan oturuma migration'ın bitip bitmediğini sor

İçeriği tamamen Claude'a bırakan bir istek de verebilirsiniz; bu durumda gönderilen metin her seferinde farklılaşabilir:

Az önce yaptığımız değişikliği payments API üzerinde çalışan oturuma özetle

Ne Zaman Kullanılır?

Resmi dokümantasyon dört yaygın kullanım durumu sayıyor:

Durum Ne oluyor
Bir bulguyu devretmek Bir oturum kırıcı bir değişiklik keşfettiğinde veya bir karar aldığında, Claude bunu ilgili alanda çalışan oturuma özetler -- siz oraya gidip yeniden anlatmanıza gerek kalmaz.
Paralel worktree'leri koordine etmek Aynı depoyu ayrı worktree'lerde çalışan oturumlar varsa Claude, birinde ne birleştiğini diğerlerine bildirebilir.
Uzun süren işten durum almak Bir migration ya da test koşusu, izlediğiniz oturuma geri rapor verebilir; ya da siz o oturumdan doğrudan sorabilirsiniz.
Makineler arası yanıt vermek Başka bir makinedeki ya da web'deki bir oturumdan gelen mesajı yanıtlamak. Makineler arasında Claude yalnızca yanıt verebilir, konuşmayı oradan başlatamaz.

Cross-session messaging'i, kendi başlatıp kendi yönlendirdiğiniz bağımsız oturumlar arasında kullanın. Claude Code'un birden çok oturumu çalıştırmanın veya birbirine ulaştırmanın başka yolları da var, her biri ayrı bir amaca hizmet ediyor:

  • Aynı konuşmayı başka bir terminalde sürdürmek ya da bağlamını yeni bir oturumla paylaşmak için session resume (/resume) kullanın.
  • Claude'un kendisinin başlatıp gözettiği koordineli bir oturum ekibi için agent teams kullanın.
  • Birçok oturumu tek bir yerden izlemek ve yönlendirmek için agent view kullanın.
  • Bir oturumu telefonunuzdan ya da başka bir cihazdan siz yönlendirmek istiyorsanız (oturumların birbirine mesaj göndermesi değil) Remote Control kullanın.
  • CI sonuçları ya da sohbet mesajları gibi dış olayları bir oturuma itmek için channels kullanın.

Mesaj Teslimatı: Delivered, Held, Refused

Alıcı Claude, mesajı bir tur ortasındaysa çalışan araçları kesintiye uğratmadan araç çağrıları arasında okur; oturum boştaysa Claude Code yeni bir tur başlatır. Varsayılan ayarlarla iki sıradan interaktif oturum arasında mesaj teslim edilir, ama her yapılandırmada teslimat garanti değildir. Alıcı oturum, gelen her mesajı kendi inbound kurallarına göre kontrol eder ve sonuç üç şekilden biri olur:

  • Delivered (teslim edildi): Claude Code mesajı doğrudan alıcı Claude'a geçirir.
  • Held (bekletildi): Claude Code mesajı teslim etmeden kenara koyar. Bekletilen bir mesaj, siz onaylamadıkça ya da sonradan bir mod/ayar değişikliği izin vermedikçe Claude'a ulaşmaz.
  • Refused (reddedildi): Claude Code mesajı hiç teslim etmeden düşürür.

Teslim edilen bir mesaj, tıpkı sizin yazdığınız bir prompt gibi kullanım hesabına dahil olur; alıcı Claude, tek yönlü makineler arası durum hariç, gönderene aynı şekilde yanıt verebilir. İzin sınırları oturum bazlıdır: Claude, kendi oturumunda reddedilmiş ya da izin ayarlarının engelleyeceği bir işlemi başka bir oturumdan istemez, bunun yerine o işi size geri yönlendirir. Alıcı tarafta ise mesajın istediği şey için alıcı oturumun kendi izin istemleri ve kuralları yine geçerlidir.

Diğer Oturumları Görme: /list-agents

Claude, bir mesajın hedefini kendi başına bulur; siz göndermeden önce bir şey çalıştırmanıza gerek yoktur. Kendiniz görmek isterseniz /list-agents komutunu (kısa adıyla /peers) çalıştırabilirsiniz. Bu komut her oturumu, Claude'un mesaj adreslerken kullandığı isimle birlikte listeler:

  • Subagent'lar: mevcut oturum içinde çalışan ajanlar. Agent team üyeleri burada listelenmez; Claude onlarla ekibin kendi listesi üzerinden konuşur.
  • Diğer yerel oturumlarınız: aynı makinede çalışan, arka plan oturumları dahil Claude Code oturumları. Bir oturum, ancak bir inbox soketi bağladığında listede görünür.
  • Bu makinenin ötesindeki oturumlar: Remote Control bağlıyken görünür ve Remote Control etiketiyle işaretlenir -- başka makinelerinizdeki oturumlarınız ve Claude Code on the web oturumlarınız. Claude bunlarla yeni bir konuşma başlatamaz, yalnızca gelen bir mesajı yanıtlayabilir.

Bir oturum, /rename komutuyla ya da --name bayrağıyla verdiğiniz isme yanıt verir; siz bir isim belirlemezseniz Claude Code kendisi isim üretir -- interaktif bir oturuma, çalışma dizininin klasör adından türetilen myapp-3f gibi bir isim verilir. İki oturum aynı isme sahip olabilir; /list-agents çıktısı her yerel oturumun çalışma dizinini gösterdiğinden farklı klasörlerdeki aynı isimli oturumlar birbirinden ayırt edilebilir, isimler çakıştığında Claude'un kendi listesi her satıra kısa bir tanımlayıcı ekler.

Makineler Arası Mesajlaşma

Diğer oturumun nerede çalıştığı, mesajın nasıl yolculuk ettiğini ve buradaki Claude'un neyi gönderebileceğini belirler:

Diğer oturum nerede çalışıyor Mesaj nasıl gidiyor Buradaki Claude ne gönderebilir
Bu makinede Oturuma özel bir soket üzerinden, hiç Anthropic sunucusundan geçmeden Yeni mesajlar ve yanıtlar
Başka bir makinenizde Anthropic sunucuları üzerinden, o makinenin Remote Control bağlantısına ulaşarak Yalnızca yanıtlar
Claude Code on the web'de Anthropic sunucuları üzerinden, doğrudan bulut oturumuna Yalnızca yanıtlar

Aynı makinedeki teslimat, özellik etkin olan her yerde çalışır. Her oturum kendini diskteki dosyalara kaydeder ve inbox soketini orada bağlar; Claude yerel oturumlarınızı listelerken ya da mesajlarken bu dosyaları okur, yani iki oturum ancak aynı dosyaları görebiliyorsa birbirine ulaşabilir. Bir konteynerin kendi dosya sistemi olduğundan konteyner içindeki bir oturum ile host'taki bir oturum birbirine ulaşamaz; aynı konteyner içindeki iki oturum ise -- bir self-hosted runner üzerinde olsalar bile -- birbirine mesaj gönderebilir.

v2.1.225'ten itibaren SendMessage, Remote Control'e bağlı başka makinelerdeki oturumlara isimle yeni bir konuşma da başlatabiliyor (ListAgents bunları isim [ref] olarak gösteriyor); önceki davranış yalnızca gelen bir mesaja yanıt vermeye izin veriyordu. Bir yanıtın gidebilmesi için bir yanıt adresi gerekir ve neredeyse her mesaj bunu taşır. Yanıtlayan oturum Remote Control'e bağlı değilken bu makinenin ötesindeki bir oturuma yazılan bir yanıt, yine doğrudan Anthropic sunucularına bir istek olarak gider ama yanıt adresi taşımaz, yani alıcı ona cevap veremez -- Claude gönderirken bu durumdan haberdar edilir. Herhangi bir mesajın bu makinenin dışına çıkmadan önce onayınızı zorunlu kılmak için isolatePeerMachines ayarını kullanabilirsiniz (aşağıda anlatıyorum).

Gelen Bir Mesaj Alıcı Tarafta Nasıl İşlenir?

A oturumu B oturumuna mesaj gönderdiğinde, Claude Code B'nin Claude'una mesajın sizden değil başka bir oturumdan geldiğini bildirir ve mesajın yapabileceklerini sınırlar:

  • Hiçbir şeyi onaylayamaz: başka bir oturumdan gelen bir mesaj asla sizin onayınız sayılmaz, bekleyen bir izin istemini sizin yerinize yanıtlayamaz.
  • Yapılandırmayı değiştiremez: Claude Code, alıcı Claude'a başka bir oturum istedi diye izin ayarlarını, CLAUDE.md'yi ya da başka bir yapılandırmayı asla değiştirmemesini söyler.
  • Komutlar çalışmaz: mesajın metnindeki bir komut (örneğin /compact) düz metin olarak gelir; Claude Code onu hiçbir zaman çalıştırmaz.
  • İzin istemleri yine çıkar: mesajdaki bir isteği yerine getirmek alıcı oturumun sahip olmadığı bir izin gerektiriyorsa, başka herhangi bir iş için görecğiniz aynı istem çıkar.

Mesaj geldiğinde konuşmada gönderenle birlikte görünür -- Claude tur ortasındaysa kuyruğa alınır, boştaysa hemen yeni bir tur başlatılır. Claude mesajı okuduktan sonra Claude Code onu tek satırlık bir Message from satırına indirger; Ctrl+O ile genişletilebilir. Şuna benzer bir mesaj, alıcı oturumun gördüğü haliyle:

Schema migration bitti: yeni kolon tenant_id, main'e rebase etmek artık güvenli.

crossSessionInbound Ayarı

Diğer oturumlarınızdan gelen mesajlarla bir oturumun ne yapacağını crossSessionInbound ayarıyla seçersiniz:

Değer Davranış
accept Claude Code gelen her mesajı doğrudan Claude'a teslim eder.
hold Her mesaj için bir bildirim gösterir, teslim etmez. Sonradan bir accept geçerli hale gelirse bekleyen mesajlar serbest bırakılır.
refuse Gelen her mesajı teslim etmeden düşürür.

Hiçbir değer geçerli olmadığında Claude Code, gönderen ve alıcı oturumun izin modundan karar verir. İzin isteklerini atlayan (bypassPermissions) oturumları bir sınıfa, geri kalan her oturumu diğer sınıfa koyar; plan modu, izin isteklerini atlayabilen oturumlarda atlama sınıfına sayılır, auto/acceptEdits/dontAsk ise istem sınıfına sayılır:

  • Alıcı oturum izin istiyorsa: Claude Code her mesajı teslim eder; yalnızca gönderen oturum izin istemlerini atladığını bildiriyorsa bir mesajı onayınız için bekletir.
  • Alıcı oturum izin istemlerini atlıyorsa: Claude Code her mesajı onayınız için bekletir; yalnızca gönderen de atladığını bildiriyorsa teslim eder.

Varsayılan bir mesajı bekletiğinde, alıcı oturumda bir onay diyaloğu açılır: gönderen ve bir önizleme gösterilir. Onayla o mesajı Claude'a teslim eder; Reddet ya da diyaloğu kapatmak onu düşürür; dialogExpiry süresi (varsayılan beş dakika) dolana kadar yanıtlanmazsa diyalog kapanır ve mesaj düşer. Claude Code en fazla 100 bekleyen mesaj tutar, bu teslimat kuyruğundan ayrıdır; bu sınırın ötesinde en eski mesaj düşer.

isolatePeerMachines: Makineler Arası Onay Zorunluluğu

Bu makinenin ötesine giden her mesaj için açık onayınızı zorunlu kılmak isterseniz isolatePeerMachines'i true yapın:

{
  "isolatePeerMachines": true
}

Bu ayarla, izin istemlerini atlayan bypassPermissions modunda bile, Claude'un bu makinenin ötesindeki bir oturuma yanıtı gitmeden önce Claude Code onayınızı ister. Herhangi bir ayar kapsamından gelen bir true geçerlidir, yani depoya eklenmiş bir proje dosyası bu zorunluluğu açabilir ama kapatamaz. Aynı makinedeki oturumlar arası mesajlar hiçbir zaman bu istemi tetiklemez.

Cross-Session Messaging'i Kapatmak

Alma ve gönderme ayrı kontrollerdir; ihtiyacınız olan yönü ya da her ikisini de kapatabilirsiniz:

  • Almayı durdurmak: crossSessionInbound'u refuse yapın. Proje ya da yerel ayarlardan gelen refuse her şeyin üzerine geçer; kullanıcı ayarlarından geleni ise yönetilen ayarlar ya da --settings bayrağı bir değer belirlemediği sürece geçerlidir.
  • Göndermeyi ve listelemeyi durdurmak: SendMessage ve ListAgents adlarını hedefleyen izin reddi (deny) kuralları ekleyin. İkisi de belirteçsiz, çıplak araç adını kabul eder.

Yöneticiler, organizasyon genelinde her iki yönü de yönetilen ayarlarla kapatabilir:

{
  "permissions": {
    "deny": ["SendMessage", "ListAgents"]
  },
  "crossSessionInbound": "refuse"
}

Bu ayarla Claude Code her oturum için inbox soketini yine bağlar, ama üzerine gelen her mesajı Claude'a hiçbir şey teslim etmeden düşürür. SendMessage'ı reddetmek, aynı araç ikisine de hizmet ettiğinden subagent'lara ve agent team üyelerine mesajlaşmayı da kaldırır. Reddeden bir oturum, kendi /status'unda ya da diğer oturumların listelerinde görünür bir değişiklik göstermez, yani ayarı oturumun yapılandırmasından doğrulamanız gerekir.

Non-Interactive (-p) Oturumlar

Claude Code, bir claude -p oturumu için de interaktif bir oturum gibi inbox soketi bağlar; böylece uzun süren bir -p işçisi mesaj alabilir ve listede görünür. Bir oturumu bare mode'da başlattığınızda ise Claude Code soketi bağlamaz, o oturum mesaj alamaz ve ajan listesinde görünmez.

Bir -p oturumu onay diyaloğunu gösteremez; orada bekletilen bir mesaj bekletilmiş kalır, ancak sonraki bir mod/ayar değişikliği aynı kurallar altında izin verirse teslim edilir. Denetimsiz bir -p işçisinin mesajları kabul etmesini istiyorsanız, onu --settings değerinde crossSessionInbound'u accept yaparak başlatın; kullanıcı ayarlarınızdaki bir accept de işe yarar ama bu, çalıştırdığınız her oturuma uygulanır.

Oturumun Inbox Soketi

Bekleyen bir oturum ajan listesinde görünmüyorsa, bir betiğin ya da hook'un bir oturuma yazı göndermesini istiyorsanız, ya da sandbox'lı bir komut soketi bulamıyorsa bu bölüm size yardımcı olur. Claude Code, cross-session messaging etkin her oturum için bir inbox soketi bağlar; diğer makinedeki oturumlar mesajları buraya teslim eder. Soket, işletim sistemi kullanıcınızla sınırlıdır, yani paylaşımlı bir makinede başka bir kullanıcının oturumları ona ulaşamaz. Yolunu iki yerde bulabilirsiniz:

  • /status, Peer address satırında gösterir; yol uds: önekiyle başlar.
  • Claude Code onu hook'lara ve Bash komutlarına CLAUDE_CODE_MESSAGING_SOCKET ortam değişkeni olarak dışa aktarır -- bu dışa aktarım SessionStart dahil herhangi bir hook çalışmadan önce gerçekleşir. Her oturum kendi soketini dışa aktarır, üst oturumdan devralınan bir soketi asla kullanmaz.

Soket üzerinden gelen mesajlar, diğer eş mesajlarıyla aynı gelen kural setinden geçer; bir istisna ve bir ön koşul dışında: kendi çocuk süreç mesajları (bir hook ya da kendi oturumunun soketine geri yazan bir Bash komutu) için, hiçbir crossSessionInbound değeri geçerli değilken Claude Code bunun gerçekten oturumun kendi çocuk sürecinden geldiğini doğrulayabildiği durumda mesajı teslim eder. Doğrulama, Linux'ta (WSL 2 dahil) süreç çoktan çıkmış olsa bile mümkündür; macOS'ta yalnızca gönderen süreç hâlâ çalışırken mümkündür; Claude Code'un süreç kimliği 1 olarak çalıştığı konteynerlerde ise hiç mümkün değildir -- doğrulanamadığında, hiçbir izin sınıfı iddia etmeyen sıradan bir mesaj gibi işlenir, yani izin istemlerini atlayan bir oturum onu onayınız için bekletir. Sandbox'lı oturumlarda bir Bash komutunun soketine ulaşıp ulaşamayacağı, sandbox'ın sandbox.network.allowAllUnixSockets ve sandbox.network.allowUnixSockets ayarlarıyla kontrol edilir.

Kullanılabilirlik

Cross-session messaging Claude Code v2.1.224 veya üzerini gerektirir. Kapsamı ayrıca platforma, sağlayıcıya ve yapılandırmaya bağlıdır:

  • İşletim sistemi: macOS ve Linux'ta (WSL 2 içindeki Linux dahil) kullanılabilir; native Windows'ta cross-session messaging sunulmaz.
  • Sağlayıcı: Amazon Bedrock, Claude Platform on AWS, Google Cloud'un Agent Platform'u ya da Microsoft Foundry üzerinde kullanılamaz.
  • Feature-flag değerlendirmesi: CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, DISABLE_TELEMETRY, DO_NOT_TRACK ya da DISABLE_GROWTHBOOK değişkenlerinden biri özelliğin dayandığı feature-flag değerlendirmesini kapatıyorsa, cross-session messaging da kapalı kalır. Bu değişkenler kabuğunuzdan, bir ayar dosyasının env haritasından ya da yönetilen ayarlardan gelebilir.

Bir oturumu kontrol etmek için /list-agents yazın (/peers olarak da çalışır). Sonuç, özelliği hiç olmayan bir oturum ile bir mesajın daha dar bir nedenle engellendiği bir oturumu ayırt eder:

  • /list-agents tanınmıyor: oturumda cross-session messaging yok. Önce claude --version ile sürüm gereksinimini kontrol ederek yukarıdaki gereksinimleri gözden geçirin.
  • /list-agents çalışıyor ama bir gönderim ulaşmadı: mesajlaşma açık, daha dar bir şey devrede. Bir izin reddi kuralı SendMessage ve ListAgents araçlarını kaldırmış olabilir, alıcı oturumun gelen kuralları mesajı bekletiyor ya da düşürüyor olabilir, ya da bu makinenin ötesindeki bir oturum yalnızca yanıt kabul ediyor olabilir.

Mesajlaşması olan bir oturumda /status, oturumun kendi inbox adresini gösteren bir Peer address satırı da içerir.

Sınırlamalar

Aşağıdaki sınırlar mesajlaşma kanalının kendi özelliğidir, özelliğin çalıştığı her yerde geçerlidir:

  • Yalnızca düz metin: Claude, oturumlar arası yalnızca düz metin gönderir. Yapılandırılmış agent team protokol mesajları bir ekibin içinde kalır.
  • Mesaj döngüleri kısılır: Claude Code, gönderen başına tekrarlanan mesajları hız sınırlar, kısa bir pencere içinde gelen birebir aynı tekrarları düşürür ve bir oturumda Claude'un okumasını bekleyen kabul edilmiş mesajları 50 ile sınırlar. İki oturum arasındaki bir mesaj döngüsü bu yüzden kendiliğinden durur.

Pratik Bir Senaryo: Paralel Worktree'lerde Koordinasyon

Aynı depoyu iki ayrı worktree'de, iki ayrı terminalde çalıştığınızı düşünün: biri kimlik doğrulama akışını (auth), diğeri ödeme entegrasyonunu (payments) değiştiriyor. auth oturumundaki Claude, oturum token'ının şemasını değiştiren bir migration'ı birleştirdiğinde, payments oturumunun bu token'ı okuyan kodu olduğunu fark edip kendiliğinden -- ya da siz "bunu payments oturumuna haber ver" dediğinizde -- bir mesaj gönderebilir:

Session token şeması değişti: artık `sub` yerine `tenant_id` alanı
kullanılıyor. Payments tarafındaki token doğrulama kodu bunu
henüz beklemiyor olabilir, kontrol etmek isteyebilirsiniz.

payments oturumu boştaysa bu mesajla yeni bir tur başlar; bir tur ortasındaysa mevcut araç çağrısı kesilmeden, turlar arasında okunur. Her iki oturum da izin istekleriyle çalışan sıradan interaktif oturumlarsa mesaj doğrudan teslim edilir, siz araya girmeden. Böylece iki oturumu manuel olarak senkronize etmek -- bir terminaldeki çıktıyı kopyalayıp diğerine yapıştırmak -- yerine, bilgi oturumlar arasında otomatik akar.

Sık Karşılaşılan Sorunlar

Belirti Olası neden ve çözüm
/list-agents komutu tanınmıyor Oturumda cross-session messaging yok. claude --version ile v2.1.224+ olduğunu, macOS/Linux'ta çalıştığınızı ve Bedrock/Vertex/Foundry gibi desteklenmeyen bir sağlayıcı kullanmadığınızı doğrulayın.
Diğer oturum listede yok Bir oturum ancak inbox soketi bağladığında görünür; bare mode'da başlatılmış bir -p oturumu soket bağlamaz. Ayrıca iki oturumun birbirini görebilmesi için aynı dosya sistemini paylaşması gerekir -- bir konteynerdeki oturum host'taki bir oturumu göremez.
Mesaj gönderildi ama karşıya ulaşmadı Alıcının crossSessionInbound ayarı mesajı bekletiyor ya da reddediyor olabilir; alıcı tarafta bir onay diyaloğu bekliyor olabilir ya da dialogExpiry süresi dolmuş olabilir.
Bekletilen mesaj hiç onay diyaloğu göstermedi Alıcı bir -p oturumuysa onay diyaloğu gösteremez; mesaj bekletilmiş kalır, ancak sonraki bir mod/ayar değişikliği izin verirse teslim edilir.
Başka bir makineye gönderilen yanıt karşı tarafa ulaşmadı Yanıtlayan oturum Remote Control'e bağlı değilse, makineler arası yanıt yanıt adresi taşımadan gider ve alıcı ona cevap veremez. Remote Control bağlantısını kontrol edin.
Hook/Bash komutundan soketine yazamıyor Sandbox'lı bir oturumda sandbox.network.allowAllUnixSockets ya da allowUnixSockets ayarlarını kontrol edin; ayrıca CLAUDE_CODE_MESSAGING_SOCKET değişkeninin doğru dışa aktarıldığını doğrulayın.

Sıkça Sorulan Sorular

Cross-session messaging'i kullanmak için ne gerekiyor?

Claude Code v2.1.224 veya üzeri gerekir; özellik macOS ve Linux'ta (WSL 2 içindeki Linux dahil) çalışır, native Windows'ta sunulmaz. Amazon Bedrock, Claude Platform on AWS, Google Cloud'un Agent Platform'u ve Microsoft Foundry üzerinde kullanılamaz. Ek olarak CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, DISABLE_TELEMETRY, DO_NOT_TRACK veya DISABLE_GROWTHBOOK ortam değişkenlerinden biri özelliğin dayandığı feature-flag değerlendirmesini kapatıyorsa mesajlaşma da kapalı kalır.

SendMessage ve ListAgents araçlarını ben mi çağırıyorum?

Hayır. Claude hedefi ListAgents ile kendisi keşfeder ve SendMessage ile kendisi gönderir; siz bu araçları doğrudan çağırmazsınız. Diğer oturuma ne bilmesini istediğinizi söylemeniz yeterlidir, mesajın metnini Claude kendisi yazar. Kendi elinizle hangi oturumlara ulaşılabildiğini görmek isterseniz /list-agents (diğer adıyla /peers) komutunu çalıştırabilirsiniz.

Bir mesaj oturumun konuşma geçmişini veya dosyalarını taşır mı?

Hayır. Bir mesaj, bir Claude'un diğerine yazdığı düz bir metin parçasıdır; konuşma geçmişini, dosyaları ya da izinleri asla taşımaz. Bütün bir konuşmayı ya da bağlamını başka bir yere taşımak isterseniz bunun yerine session resume kullanmanız gerekir.

Gelen bir mesaj bekleyen bir izin isteğini onaylayabilir mi?

Hayır. Başka bir oturumdan gelen bir mesaj asla sizin onayınız sayılmaz, bekleyen bir izin istemini yanıtlayamaz. Claude Code, alıcı Claude'a mesajın sizden değil başka bir oturumdan geldiğini bildirir; alıcı taraf, mesajın istediği bir şey için izne ihtiyaç duyarsa yine normal izin istemi çıkar. Mesaj içindeki bir komut (örneğin /compact) da düz metin olarak gelir, hiçbir zaman çalıştırılmaz.

crossSessionInbound ayarının accept, hold, refuse değerleri ne yapar?

accept, gelen her mesajı doğrudan Claude'a iletir. hold, her mesaj için bir bildirim gösterir ama teslim etmez; sonradan accept geçerli hale gelirse bekleyen mesajlar serbest bırakılır. refuse, gelen her mesajı teslim etmeden düşürür. Hiçbir değer geçerli değilse Claude Code, gönderen ve alıcı oturumun izin modu sınıfına (izin isteklerini atlayan bypassPermissions ile geri kalan modlar) göre otomatik karar verir.

Başka bir makinedeki oturuma mesaj gönderebilir miyim?

Aynı makinedeki oturumlara Claude yeni mesaj başlatabilir ve yanıt verebilir; bu trafik Anthropic sunucularından hiç geçmeden yerel bir soket üzerinden akar. Başka bir makinedeki oturumlara veya Claude Code on the web oturumlarına ise Claude yalnızca yanıt verebilir, konuşmayı oradan başlatamaz -- bu mesajlar Anthropic sunucuları üzerinden, Remote Control bağlantısıyla iletilir. v2.1.225'ten itibaren Remote Control'e bağlı bir oturuma isimle yeni bir konuşma da başlatılabiliyor.

Özet

Cross-session messaging, Claude Code v2.1.224 ile gelen ve oturumlarınızı birbirinden yalıtılmış terminaller olmaktan çıkarıp koordine olabilen bir ağa dönüştüren bir özellik. ListAgents hedefi bulur, SendMessage düz metin bir mesajı iletir; teslimat, alıcının crossSessionInbound ayarına ve izin moduna göre delivered, held ya da refused olarak sonuçlanır. Aynı makinede mesajlar doğrudan bir soket üzerinden akarken, başka makinelere ya da web oturumlarına yalnızca yanıt gidebilir -- isolatePeerMachines ile bu makinenin ötesine giden her şeyi onayınıza bağlayabilirsiniz. Gelen bir mesaj hiçbir zaman izin isteği onaylayamaz, yapılandırma değiştiremez ya da komut çalıştıramaz; bu, özelliği paralel worktree'leri koordine etmek ya da uzun süren işlerden durum almak için güvenli bir otomasyon katmanı hâline getiriyor.

Aynı SendMessage aracının subagent'ları nasıl yönlendirdiğini görmek isterseniz subagent rehberime, çoklu ajan çalışmalarını script'lerle nasıl orkestre edebileceğinizi görmek isterseniz workflows rehberime göz atabilirsiniz.

Bu yazı Ahmet Bilgiç tarafından ahmetbilgic.com için yazılmıştır. Diğer yazılar için: medium.com/@ahmet_bilgic07