SpyBara
Go Premium

cross-session-messaging.md 2026-10-01 23:59 UTC to 2026-10-02 16:01 UTC

This page contains 68 additions and 63 deletions.

2026
Fri 2 16:01

Pesan sesi Claude Code Anda yang lain

Biarkan Claude mencantumkan dan mengirim pesan ke sesi Claude Code Anda yang lain di mesin ini, dan jangkau sesi Anda di mesin lain atau di web.

Pesan lintas sesi memungkinkan Claude mengirimkan pesan dari salah satu sesi Claude Code Anda ke sesi lainnya. Ketika perubahan dalam satu sesi merusak apa yang sedang dibangun sesi lain, Claude dapat memperingatkan sesi tersebut sebelum Anda menyadarinya. Ketika satu sesi menyelesaikan pertanyaan yang memblokir sesi lain, Claude dapat mengirimkan jawaban lintas sesi.

Pesan adalah sepotong teks yang ditulis satu Claude ke Claude lainnya, tidak pernah riwayat percakapan atau file pengirim. Untuk memindahkan seluruh percakapan atau konteksnya, lanjutkan sesi sebagai gantinya.

Kapan menggunakan cross-session messaging

Gunakan messaging ketika salah satu sesi Anda memiliki sesuatu yang dibutuhkan sesi lain di tengah tugas. Claude dapat mengirimkan pesan sendiri ketika melihat kebutuhan, misalnya setelah membuat perubahan yang mempengaruhi pekerjaan sesi lain, atau Anda dapat memintanya mengirimkan satu. Kasus umum:

  • Serahkan temuan: ketika satu sesi menemukan perubahan yang merusak atau membuat keputusan, Claude merangkumnya untuk sesi yang bekerja di area yang terpengaruh, alih-alih Anda menjelaskannya ulang di sana.
  • Koordinasikan worktrees paralel: ketika sesi bekerja di repositori yang sama di worktrees terpisah, Claude dapat memberi tahu sesi lain apa yang mendarat.
  • Dapatkan status dari pekerjaan yang berjalan lama: buat migrasi atau pengujian melaporkan kembali ke sesi yang Anda tonton, atau minta sendiri dari sana. Jika sesi itu ada di mesin ini, Claude juga dapat memintanya untuk satu pemberitahuan ketika sesi berikutnya idle atau keluar.
  • Kirim pesan lintas mesin: jangkau salah satu sesi Anda di mesin lain atau di web.

Mengirim pesan ke sesi lain

Ketika salah satu sesi Anda mengetahui sesuatu yang dibutuhkan sesi lain, seperti temuan, status, atau keputusan, Claude meneruskannya alih-alih Anda menyalin-tempel antar terminal. Claude menemukan target dengan ListAgents dan mengirim dengan SendMessage, sehingga Anda tidak pernah memanggil tool tersebut sendiri. Claude dapat memutuskan untuk mengirim pesan tanpa diminta, dan Anda juga dapat memberikan prompt untuk itu.

Untuk memberikan prompt sendiri, beri tahu Claude apa yang Anda ingin sesi lain ketahui atau lakukan. Contoh ini adalah prompt yang Anda ketik, bukan pesan yang dikirim Claude:

Ask the session running in my other terminal whether the migration finished

Claude menulis pesan sebenarnya sendiri, sehingga prompt Anda dapat menyerahkan isinya kepada Claude. Prompt ini meminta ringkasan tanpa menentukan susunan katanya, dan apa yang dikirim Claude bervariasi:

Explain what we just did to the session working on the payments API

Untuk menyebutkan target sendiri, sebut sesi tersebut dalam prompt Anda: ketik @ diikuti huruf-huruf pertama nama sesi dan pilih sesi dari typeahead, sama seperti cara Anda melakukan @-mention pada subagent. Memerlukan Claude Code v2.1.232 atau lebih baru. Claude Code menyisipkan mention, seperti @api-worker, dan memberi tahu Claude sesi mana yang disebutkan, sehingga Claude dapat mengirim pesan ke sesi tersebut tanpa mencantumkan sesi-sesi Anda terlebih dahulu. Prompt ini menyebutkan target dengan mention:

Let @api-worker know the schema migration finished

Typeahead mencantumkan sesi aktif Anda yang lain di mesin ini. Dua kasus memerlukan lebih dari huruf-huruf pertama sebuah nama:

  • Sesi di luar mesin ini: sesi cloud atau sesi Remote Control muncul di typeahead hanya setelah Claude mencantumkan atau mengirim pesan ke sesi-sesi Anda di luar mesin ini, jadi minta Claude untuk mencantumkannya terlebih dahulu.
  • Nama dengan spasi atau karakter lain selain huruf, angka, tanda hubung, dan garis bawah: ketik dalam tanda kutip ganda, seperti @"release notes". Saat Anda memilih sesi dari typeahead, Claude Code menyisipkan tanda kutip untuk Anda.

Anda juga dapat mengetik mention tanpa pemilih. Ketika lebih dari satu sesi aktif menggunakan nama yang disebutkan, Claude menanyakan kepada Anda sesi mana yang Anda maksud sebelum mengirim.

Untuk melihat seperti apa pesan yang ditulis Claude saat tiba, termasuk contohnya, lihat seperti apa sebuah pesan.

Penyampaian pesan

Claude penerima membaca pesan di antara panggilan tool selama giliran aktif, sehingga tool yang sedang berjalan tidak pernah diinterupsi. Ketika sesi penerima sedang idle, Claude Code memulai giliran baru dengan pesan tersebut.

Pesan dari sesi lain tiba sebagai teks biasa. Jika pesan menyebutkan file atau resource MCP dengan @, Claude melihat mention tersebut sebagaimana tertulis dan Claude Code tidak melampirkan apa pun, baik pesan tersebut memulai giliran baru maupun tiba selama giliran berlangsung. Claude tetap dapat membuka path yang disebutkan di mesin penerima dengan tool-nya sendiri, sesuai dengan izin sesi tersebut.

Claude Code menolak pesan dalam kasus-kasus berikut:

Sesi penerima memeriksa setiap pesan yang tiba terhadap kontrol masuk miliknya sendiri, dan pemeriksaan tersebut berakhir dengan salah satu dari tiga hasil:

  • Disampaikan: Claude Code meneruskan pesan kepada Claude penerima.
  • Ditahan: Claude Code menyisihkan pesan tanpa menyampaikannya. Pesan yang ditahan hanya mencapai Claude ketika Anda menyetujuinya atau perubahan mode atau pengaturan selanjutnya mengizinkannya.
  • Ditolak: Claude Code membuang pesan tanpa menyampaikannya.

Setelah disampaikan, pesan dihitung dalam penggunaan seperti prompt yang Anda ketik, dan Claude penerima dapat membalas pengirim dengan cara yang sama, kecuali dalam kasus lintas mesin satu arah.

Batasan izin tetap berlaku per sesi. Claude diinstruksikan untuk tidak pernah meminta sesi lain melakukan tindakan yang ditolak atau diblokir di sesinya sendiri, atau yang akan diblokir oleh pengaturan izinnya sendiri, dan sebagai gantinya mengarahkan pekerjaan tersebut kembali kepada Anda. Di sisi penerima, permintaan izin dan aturan milik sesi penerima sendiri tetap berlaku untuk apa pun yang diminta oleh pesan tersebut.

Mendapatkan pemberitahuan saat sesi lain menjadi idle

Claude dapat meminta salah satu sesi Anda di mesin ini untuk mengirim balik satu pemberitahuan ketika sesi tersebut berikutnya menjadi idle atau keluar. Idle di sini berarti sesi telah menyelesaikan giliran tanpa ada yang mengantre. Gunakan ini ketika Anda menunggu tugas panjang di sesi lain dan ingin diberi tahu saat tugas tersebut selesai alih-alih memeriksanya. Memerlukan Claude Code v2.1.236 atau lebih baru di kedua sesi.

Meminta pemberitahuan

Beri tahu Claude apa yang sedang Anda tunggu. Prompt ini meminta pemberitahuan dari sesi migrasi:

Tell me when the migration session finishes what it's working on

Claude berlangganan dengan input notify_when_idle dari tool SendMessage, baik dilampirkan pada pesan yang memang akan dikirimnya maupun secara terpisah. Secara terpisah, Claude Code berlangganan tanpa memulai giliran atau menghabiskan token di sesi yang dipantau, dan segera mengirim pemberitahuan jika sesi tersebut sudah idle. Jika dilampirkan pada pesan, Claude Code menyampaikan pesan terlebih dahulu dan mengirim pemberitahuan kemudian.

Apa yang ditampilkan setiap sesi

Sesi yang dipantau menampilkan baris yang menyatakan bahwa proses lain meminta untuk diberi tahu ketika sesi tersebut berikutnya idle. Sesi yang meminta menampilkan pemberitahuan sebagai baris yang menyebutkan nama sesi yang dipantau. Baris tersebut dapat mencakup waktu giliran sesi tersebut selesai dan status satu baris dari giliran tersebut. Jika sesi yang meminta sedang idle, Claude Code memulai giliran baru dengan pemberitahuan tersebut.

Batasan

Jika tidak ada pemberitahuan yang tiba dalam 12 jam, Claude Code membatalkan langganan dan memberi tahu Claude, sehingga Claude tidak terus menunggu.

Kontrol masuk di masing-masing sisi berlaku untuk pemberitahuan seperti halnya pesan:

  • refuse di salah satu sisi: tidak ada yang tiba. Sesi yang dipantau membuang permintaan tanpa mencatat atau menjawabnya, sehingga langganan kedaluwarsa tanpa jawaban setelah 12 jam, dan sesi yang meminta dengan refuse tidak pernah berlangganan.
  • hold di salah satu sisi: pemberitahuan tiba dengan isi yang lebih sedikit. Sesi yang dipantau tidak menyertakan status satu baris, dan sesi yang meminta menampilkan pemberitahuan di transkrip Anda tanpa menyampaikannya kepada Claude.

Hanya Claude di percakapan utama Anda yang dapat berlangganan, dan hanya ke sesi-sesi Anda di mesin ini. Ketika Claude meminta pemberitahuan dari target lain, seperti rekan tim, subagent, atau sesi di luar mesin ini, Claude Code menolak seluruh panggilan, termasuk pesan apa pun yang dilampirkan padanya.

Melihat sesi mana yang dapat dijangkau Claude

Claude menemukan target pesan dengan sendirinya, sehingga Anda tidak perlu menjalankan apa pun sebelum memintanya mengirim. Untuk melihat sendiri sesi mana yang dapat dijangkau Claude, jalankan perintah /list-agents. Baris pertama, jika ada, adalah nama sesi ini sendiri, yang digunakan sesi-sesi Anda yang lain untuk mengirim pesan kepadanya. Baris-baris di bawahnya adalah sesi-sesi yang dapat dijangkau Claude:

  • Subagent: agent yang berjalan di dalam sesi saat ini.
  • Rekan tim: rekan tim dari tim agent milik sesi ini sendiri.
  • Sesi lokal Anda yang lain: sesi Claude Code yang berjalan di mesin yang sama, termasuk sesi latar belakang. Sebuah sesi hanya muncul ketika sesi tersebut mengikat socket inbox.
  • Sesi cloud Anda: ditampilkan selama sesi ini terhubung ke Remote Control.
  • Sesi Remote Control Anda di mesin lain: ditampilkan selama sesi ini terhubung ke Remote Control, dan diberi label Remote Control. Claude Code menampilkan offline sebagai status sesi yang koneksi Remote Control-nya terputus.

Selama sesi ini terhubung ke Remote Control, Claude Code menyembunyikan beberapa detail sesi lokal Anda dari output /list-agents, tanpa mengubah apa yang dilihat Claude sendiri saat mencari sesi untuk dikirimi pesan:

  • Direktori kerja: Claude Code tidak menyertakan direktori kerja setiap sesi lokal.
  • Nama sesi: Claude Code tidak menyertakan nama sesi apa pun yang tidak dapat diatribusikan kepada seseorang, sehingga baris yang tidak memiliki nama terbaca (unnamed session).
  • Baris pertama: Claude Code tidak menyertakan baris berisi nama sesi ini sendiri kecuali Anda mengetik nama tersebut di terminal ini, dengan --name atau dengan /rename beserta namanya, sejak Anda meluncurkan atau terakhir kali melanjutkan sesi tersebut.

Ketika output mencantumkan sesuatu, output diakhiri dengan catatan yang menyatakan bahwa detail telah disembunyikan. Menjalankan /rename diikuti nama yang belum digunakan di keyboard sesi itu sendiri memberikan sesi tersebut nama yang muncul di output.

Sebuah sesi merespons nama yang Anda tetapkan dengan perintah /rename atau flag --name. Jika Anda tidak menetapkannya, Claude Code menamai sesi tersebut sendiri. Untuk sesi interaktif, nama tersebut adalah nama yang ditampilkan dalam daftar sesi yang sedang berjalan.

Ketika Anda mengganti nama sesi, atau memulai atau melanjutkan sesi interaktif, dengan nama yang sudah digunakan oleh sesi aktif lain di mesin ini, Claude Code membiarkan nama tersebut tetap pada sesi yang sudah memilikinya dan mengganti nama sesi Anda menjadi variannya. Sesi-sesi tetap dapat berbagi nama, misalnya ketika salah satunya menjalankan versi Claude Code yang lebih lama atau nama bersama tersebut adalah nama yang dihasilkan Claude Code. Kecuali sesi ini terhubung ke Remote Control, Claude Code menampilkan direktori kerja setiap sesi lokal di output /list-agents, sehingga Anda dapat membedakan sesi-sesi dengan nama yang sama ketika berjalan di direktori yang berbeda. Claude mengalamatkan pesan dengan salah satu dari dua cara, bergantung pada berapa banyak sesi aktif yang merespons nama tersebut:

  • Satu sesi merespons nama tersebut: Claude Code menyampaikan pesan hanya berdasarkan nama.
  • Beberapa sesi berbagi nama tersebut, atau Claude Code tidak dapat memeriksa semua tempat sesi Anda berjalan: Claude menambahkan pengenal singkat ke setiap baris dalam daftarnya dan menggunakan pengenal tersebut dalam alamat.

Mengirim pesan ke sesi di mesin lain

Cara pesan berpindah, dan apakah pesan melewati server Anthropic, bergantung pada tempat sesi target berjalan:

Tempat sesi lain berjalan Cara pesan berpindah
Di mesin ini Melalui socket per sesi di macOS dan Linux, atau named pipe per sesi di Windows native, tidak pernah melalui server Anthropic
Di mesin Anda yang lain Melalui server Anthropic, tiba melalui koneksi Remote Control mesin tersebut
Di cloud Melalui server Anthropic, langsung ke sesi cloud

Memulai percakapan dengan sesi di mesin Anda yang lain memerlukan Claude Code v2.1.225 atau lebih baru dan target yang muncul dalam daftar.

Baris sesi dalam daftar dapat menampilkan kondisi yang mengubah apa yang terjadi ketika Claude mengirim pesan ke sesi tersebut:

  • offline: koneksi Remote Control sesi tersebut terputus. Pesan tetap terkirim, tetapi baru tiba setelah mesin sesi tersebut terhubung kembali.
  • can't receive cross-session messages (off in that session): pengiriman pesan tidak tersedia di sesi tersebut, atau nilai crossSessionInbound-nya adalah refuse. Claude Code menolak pesan ke sesi tersebut sebelum pesan meninggalkan mesin ini. Hasil di bawah panggilan SendMessage Claude diawali dengan Not sent dan menyebutkan alasannya. Setelah penyebabnya diperbaiki di sesi tersebut, daftar berikutnya tidak lagi menampilkan kondisi ini, dan Claude dapat mengirim pesan ke sesi tersebut.

Sesi di dalam container dan sesi di host tidak dapat saling menjangkau. Dua sesi di dalam container yang sama tetap dapat saling mengirim pesan, termasuk di self-hosted runner. Sesi di dalam WSL 2 dan sesi Windows native di komputer yang sama juga tidak dapat saling menjangkau.

Jika sesi ini tidak terhubung ke Remote Control saat Claude mengirim ke sesi di luar mesin ini, pesan tetap terkirim, tetapi tanpa alamat balasan, sehingga Claude penerima tidak dapat menjawabnya.

Untuk mewajibkan persetujuan Anda sebelum pesan apa pun keluar dari mesin ini, atur isolatePeerMachines.

Bagaimana sesi memperlakukan pesan yang masuk

Ketika sesi A mengirim pesan ke sesi B, Claude Code memberi tahu Claude B bahwa pesan berasal dari sesi lain, bukan dari Anda, dan membatasi apa yang dapat dilakukan pesan:

  • Tidak dapat menyetujui apa pun: pesan dari sesi lain tidak pernah dihitung sebagai persetujuan Anda, jadi tidak dapat menjawab prompt izin yang tertunda atas nama Anda.
  • Tidak dapat mengubah konfigurasi: Claude Code menginstruksikan Claude penerima untuk tidak pernah mengubah pengaturan izin, CLAUDE.md, atau konfigurasi lain karena sesi lain meminta.
  • Perintah tidak berjalan: perintah dalam teks pesan, seperti /compact, tiba sebagai teks biasa. Claude Code tidak pernah menjalankannya.
  • Prompt izin masih aktif: jika bertindak atas pesan memerlukan izin yang tidak dimiliki sesi penerima, Anda melihat prompt yang sama seperti untuk pekerjaan lain apa pun.

Apa pesan terlihat seperti

Ketika pesan tiba, Claude Code menunjukkannya dalam percakapan sebagai pratinjau satu baris yang redup, dan baris pratinjau tetap dalam percakapan sesudahnya. Pratinjau membawa nama pengirim dan baris pertama pesan, dipotong dengan … ketika panjang, seperti › Message from @api-worker: Schema migration finished (ctrl+o to expand).

Salah satu dari ini menunjukkan Anda teks lengkap:

  • Tekan Ctrl+O untuk membuka transcript viewer dan baca teks lengkap di bawah nama sesi pengirim.
  • Dalam sesi yang dimulai dengan --verbose, Claude Code menunjukkan teks lengkap alih-alih pratinjau.

Pratinjau mempersingkat hanya apa yang Anda lihat. Apakah Anda memperluas atau tidak, Claude membaca pesan lengkap.

Claude menerima pesan dengan nama pengirim dan alamat balasan, kecuali untuk pesan cross-machine satu arah, yang tidak membawa alamat balasan.

Contoh ini adalah pesan yang ditulis satu Claude ke Claude lain, seperti teks lengkapnya dibaca ketika Anda memperluas:

Migrasi skema selesai
Kolom baru adalah tenant_id, dan rebase pada main aman sekarang.

Kontrol pesan yang masuk

Atur crossSessionInbound untuk memilih apa yang dilakukan sesi dengan pesan yang tiba dari sesi lain Anda:

Nilai Perilaku
accept Claude Code mengirimkan setiap pesan ke Claude
hold Claude Code menunjukkan pemberitahuan untuk setiap pesan dan tidak mengirimkannya. Jika accept kemudian berlaku, per aturan prioritas, Claude Code merilis pesan yang ditahan
refuse Claude Code menjatuhkan setiap pesan tanpa mengirimkannya

Di luar mengedit file pengaturan, Anda dapat memilih nilai dalam baris /config Messages from your other sessions. Claude Code menulis nilai yang Anda pilih ke pengaturan pengguna Anda. Baris memerlukan Claude Code v2.1.232 atau lebih baru dan tidak muncul saat pengaturan terkelola atau bendera --settings menetapkan kunci, karena nilai pengaturan pengguna tidak akan berlaku kemudian. Claude Code menolak shorthand /config crossSessionInbound=value untuk kunci ini.

Untuk melihat nilai mana yang berlaku, ikuti aturan prioritas crossSessionInbound dalam referensi pengaturan.

Ketika tidak ada nilai yang berlaku, Claude Code memutuskan per pesan dari mode izin dua sesi. Ini mengelompokkan sesi yang melewati prompt izin ke dalam satu kelas, dan setiap sesi lain ke kelas lain. Plan mode dihitung sebagai melewati dalam sesi terminal interaktif dengan izin bypass tersedia, dan auto, acceptEdits, dan dontAsk dihitung sebagai prompting:

  • Sesi penerima meminta izin: Claude Code mengirimkan setiap pesan. Ini menahan satu untuk persetujuan Anda hanya ketika sesi pengirim mengidentifikasi dirinya sebagai melewati prompt izin.
  • Sesi penerima melewati prompt izin: Claude Code menahan setiap pesan untuk persetujuan Anda. Ini mengirimkan satu hanya ketika sesi pengirim juga mengidentifikasi dirinya sebagai melewati.

Ketika default menahan pesan, Claude Code membuka dialog persetujuan di sesi penerima. Dialog menunjukkan pengirim dan pratinjau:

  • Approve mengirimkan pesan itu ke Claude.
  • Deny, atau menutup dialog, menjatuhkannya.
  • Ketika dialog tetap tanpa jawaban melewati batas waktu dialogExpiry, Claude Code menutupnya dan menjatuhkan pesan. Batas waktu default ke lima menit.
  • Saat tidak ada terminal yang terpasang ke background session, Claude Code meninggalkan dialog terbuka melewati batas waktu. Setelah Anda melampirkan, jika dialog tetap tanpa jawaban untuk periode batas waktu penuh, Claude Code menutupnya dan menjatuhkan pesan.
  • Jika kelas mode izin sesi ini berubah saat pesan ditahan, Claude Code menerapkan kembali aturan inbound, mengirimkan pesan yang sekarang diterima, dan menunjukkan pemberitahuan.

Claude Code menahan paling banyak 100 pesan, dan melampaui itu menjatuhkan yang tertua.

Sesi non-interaktif

Claude Code mengikat soket inbox untuk sesi claude -p seperti sesi interaktif, jadi pekerja -p yang berjalan lama dapat menerima pesan dan muncul dalam daftar. Ketika Anda memulai sesi dalam bare mode, Claude Code tidak mengikat soket, jadi sesi itu tidak dapat menerima pesan dan tidak muncul dalam daftar agen.

Sesi -p tidak dapat menunjukkan dialog persetujuan. Ketika default inbound menahan pesan di sana, Claude Code menyimpannya untuk batas waktu dialogExpiry yang sama yang digunakan dialog, lima menit secara default:

  • Sebelum batas waktu: jika mode atau perubahan pengaturan memungkinkan pesan, Claude Code mengirimkannya.
  • Melewati batas waktu: Claude Code menjatuhkan pesan dan melaporkannya sebagai kedaluwarsa ke pengirim yang dapat dijangkaunya.

Atur dialogExpiry ke "never" untuk menyimpan pesan default-held sampai sesi berakhir. Pesan yang ditahan oleh pengaturan hold eksplisit tidak kedaluwarsa; Claude Code mengirimkannya hanya ketika accept kemudian berlaku.

Untuk membiarkan pekerja -p mengambil pesan tanpa pengawasan, mulai dengan crossSessionInbound diatur ke accept dalam nilai --settings miliknya. accept dalam pengaturan pengguna Anda juga bekerja tetapi berlaku untuk setiap sesi yang Anda jalankan.

Soket inbox sesi

Baca bagian ini ketika sesi yang Anda harapkan tidak ada dalam daftar agen, ketika Anda ingin script atau hook untuk memposting ke dalam sesi, atau ketika perintah sandboxed tidak dapat menjangkau soket.

Claude Code mengikat soket inbox untuk setiap sesi dengan cross-session messaging diaktifkan, di mana sesi lain di mesin mengirimkan pesan. Soket adalah soket domain Unix di macOS dan Linux, termasuk Linux di dalam WSL 2, dan pipa bernama di Windows native. Untuk jenis sesi mana yang mengikat satu, lihat Non-interactive sessions.

Anda dapat menemukan jalur soket di dua tempat:

  • /status menunjukkannya dalam baris Peer address. Jalur diawali dengan uds:.
  • Claude Code mengekspornya ke hooks dan perintah Bash sebagai variabel lingkungan CLAUDE_CODE_MESSAGING_SOCKET:
    • Dalam sesi yang dimulai dengan messaging aktif, Claude Code mengekspor variabel sebelum hook apa pun berjalan, termasuk SessionStart.

Di macOS dan Linux, Claude Code membatasi soket ke pengguna sistem operasi Anda. Di Windows native, itu malah memerlukan setiap koneksi untuk mengautentikasi terlebih dahulu dengan kunci yang hanya dapat dibaca pengguna sistem operasi Anda. Bagaimanapun, di mesin bersama sesi pengguna lain tidak dapat mengirimkan ke soket itu.

Di macOS dan Linux, Claude Code juga menolak untuk membuat soket di direktori yang tidak dapat diterima, misalnya yang dimiliki pengguna lain, dan menggunakan direktori pribadi per-pengguna, /tmp/cc-socks-<uid>, sebagai gantinya. Ketika tidak dapat menerima direktori apa pun, sesi berjalan tanpa inbox: Claude Code menunjukkan pemberitahuan, /status menunjukkan unavailable dan alasan dalam baris Peer address miliknya, dan log --debug mencatat penolakan penuh.

Bersama jalur soket, Claude Code mengekspor token per-sesi sebagai CLAUDE_CODE_MESSAGING_TOKEN. Script yang memposting ke soket sesinya sendiri dapat mengirimkan {"type":"auth","token":"<token>"} sebagai baris pertama koneksinya, di mana <token> adalah nilai CLAUDE_CODE_MESSAGING_TOKEN. Apakah Claude Code memerlukan baris tergantung pada platform:

  • macOS dan Linux, termasuk WSL 2: baris bersifat opsional. Claude Code menerima koneksi dengan atau tanpanya.
  • Windows native: baris diperlukan. Claude Code menutup koneksi apa pun yang baris pertamanya bukan baris auth yang valid dan tidak mengirimkan apa pun dari koneksi itu.

Buka koneksi hanya ketika pesan yang Anda posting siap. Claude Code menutup koneksi yang belum mengirimkan baris lengkap dalam 30 detik, jadi tangkap output perintah lambat terlebih dahulu dan kemudian buka koneksi untuk mengirimkannya.

Claude Code menjalankan pesan yang tiba di soket melalui kontrol inbound yang sama seperti pesan peer apa pun, dengan satu pengecualian dan satu prasyarat:

  • Pesan own-child: ketika tidak ada nilai crossSessionInbound yang berlaku, Claude Code mengirimkan pesan yang diverifikasi berasal dari proses anak sesi itu sendiri, seperti hook atau perintah Bash memposting kembali ke soket sesinya sendiri.
    • Di Linux, termasuk di dalam WSL 2, Claude Code dapat memverifikasi dengan bukti proses bahkan untuk anak yang sudah keluar. Di macOS dapat memverifikasi dengan cara itu hanya saat proses posting masih berjalan, dan dalam kontainer di mana Claude Code berjalan sebagai ID proses 1 tidak memiliki bukti proses sama sekali. Di Windows native juga tidak memiliki.
    • Di macOS setelah proses posting keluar dan dalam kontainer di mana Claude Code berjalan sebagai ID proses 1, bukti proses itu hilang, dan Claude Code malah memverifikasi anak yang mengirimkan CLAUDE_CODE_MESSAGING_TOKEN yang diekspor sesi dalam baris auth yang membuka koneksinya. Di Windows native, token itu adalah satu-satunya cara Claude Code memverifikasi pesan own-child.
    • Ketika Claude Code tidak dapat memverifikasi dengan cara apa pun, itu memperlakukan pesan seperti yang lain yang tidak menyatakan kelas izin, jadi sesi yang melewati prompt izin menahan untuk persetujuan Anda.
  • Sesi sandboxed: kontrol apakah perintah Bash dapat menjangkau soket dari dalam sandbox dengan pengaturan soket Unix sandbox, sandbox.network.allowAllUnixSockets dan sandbox.network.allowUnixSockets.

Batasi cross-session messaging

Di luar default per-pesan, Anda dapat mempersempit messaging dalam dua cara. Memerlukan persetujuan Anda sebelum pesan apa pun meninggalkan mesin, atau matikan messaging untuk sesi atau organisasi.

Memerlukan persetujuan untuk pesan cross-machine

Atur isolatePeerMachines ke true untuk memerlukan persetujuan eksplisit Anda sebelum SendMessage apa pun mencapai sesi di luar mesin ini:

{
  "isolatePeerMachines": true
}

Dengan ini diatur, Claude Code meminta persetujuan Anda sebelum pesan Claude ke sesi di luar mesin ini meninggalkan, bahkan dalam mode bypassPermissions, yang melewati prompt izin biasa. true dari cakupan pengaturan apa pun berlaku, jadi file proyek yang diperiksa dapat mengaktifkan persyaratan tetapi tidak mematikannya. Claude Code tidak meminta pesan antara sesi di mesin yang sama.

Matikan cross-session messaging

Menerima dan mengirim adalah kontrol terpisah, jadi matikan arah mana pun yang Anda butuhkan, atau keduanya. Gunakan crossSessionInbound untuk pesan yang tiba, dan aturan izin untuk apa yang dapat dikirim atau didaftar Claude di sini:

  • Berhenti menerima: atur crossSessionInbound ke refuse, dan Claude Code menjatuhkan pesan peer inbound tanpa mengirimkannya. Dari pengaturan proyek atau lokal, refuse berlaku atas setiap sumber lain, dan dari pengaturan pengguna Anda berlaku kecuali pengaturan terkelola atau bendera --settings menetapkan nilai.
  • Berhenti mengirim dan membuat daftar: tambahkan aturan deny izin yang menamai SendMessage dan ListAgents. Keduanya mengambil nama tools telanjang tanpa spesifikasi.

Administrator dapat mematikan kedua sisi untuk organisasi dalam managed settings, menggabungkan aturan deny dengan refuse:

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

Dengan ini berlaku, Claude Code masih mengikat soket inbox setiap sesi, tetapi menjatuhkan setiap pesan yang tiba padanya tanpa mengirimkan apa pun ke Claude. Menolak SendMessage juga menghapus messaging ke subagents dan rekan kerja agent-team, karena tools yang sama melayani keduanya. Sesi yang menolak menunjukkan tidak ada perubahan yang terlihat, dalam /status miliknya sendiri atau dalam daftar sesi lain di mesin yang sama, jadi untuk mengonfirmasinya, periksa file pengaturan yang berlaku untuk sesi itu daripada statusnya.

Availability

Cross-session messaging memerlukan Claude Code v2.1.224 atau lebih baru di macOS, Linux, dan WSL 2, dan v2.1.234 atau lebih baru di Windows native. Ketersediaan, dan sesi mana yang dapat dikirim pesan Claude, juga tergantung pada sistem operasi, penyedia, dan konfigurasi Anda:

  • Sistem operasi: tersedia di macOS, Windows, dan Linux, termasuk Linux di dalam WSL 2.

  • Sesi di mesin ini: tersedia di setiap penyedia, termasuk Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, dan Microsoft Foundry, dan dalam sesi yang berjalan dengan feature-flag fetching mati. Di penyedia itu, dan dengan flag fetching mati, messaging mesin yang sama memerlukan Claude Code v2.1.248 atau lebih baru. Claude Code mengirimkan pesan ini melalui soket per-sesi di mesin Anda, tidak pernah melalui server Anthropic.

    Untuk menghentikan sesi dari menerimanya, atur crossSessionInbound ke refuse.

  • Sesi di luar mesin ini: Claude menemukan sesi Claude Code on the web Anda dan sesi Anda di mesin lain dari sesi yang terhubung ke Remote Control, yang memerlukan sign-in claude.ai sebagai autentikasi aktif sesi ini dan persyaratan Remote Control lainnya. Claude tidak dapat menemukan sesi itu dengan API key atau di Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, dan Microsoft Foundry.

Untuk memeriksa sesi, ketik /list-agents, juga tersedia sebagai /peers. Hasilnya memisahkan sesi yang tidak memiliki fitur dari sesi di mana sesuatu yang lebih sempit memblokir pesan, seperti tools SendMessage yang hilang atau pengiriman yang ditolak:

  • /list-agents tidak dikenali: sesi tidak memiliki cross-session messaging. Bekerja melalui persyaratan di atas, dimulai dengan claude --version untuk persyaratan versi.
  • /list-agents bekerja tetapi pengiriman tidak tiba: messaging aktif, dan sesuatu yang lebih sempit berlaku:
    • Aturan deny: aturan deny izin menghapus tools SendMessage dan ListAgents.
    • Kontrol inbound: kontrol inbound sesi penerima dapat menahan atau menjatuhkan apa yang Anda kirimkan.
    • Sesi cloud hilang: sesi cloud muncul hanya saat sesi ini terhubung ke Remote Control.
    • Sesi mesin lain hilang: sesi di mesin lain Anda muncul hanya ketika berjalan dengan Remote Control dan sesi ini juga terhubung.
    • Sesi mesin lain offline: pesan ke sesi yang terdaftar sebagai offline akan diteruskan, tetapi tiba hanya setelah mesin sesi itu terhubung kembali.
    • Sesi cloud atau mesin lain can't receive cross-session messages: pesan ke sesi yang terdaftar dengan kondisi ini tidak meninggalkan mesin ini, dan hasil di bawah SendMessage diawali dengan Not sent.
    • Sesi cloud atau mesin lain yang lebih lama hilang: Claude Code membaca daftar sesi itu terbaru terlebih dahulu dan berhenti setelah jumlah halaman terbatas, jadi Claude tidak dapat mengirim pesan ke sesi yang jatuh melewati mereka berdasarkan nama.

Dalam sesi dengan messaging, /status juga menunjukkan baris Peer address dengan alamat inbox sesi itu sendiri, atau unavailable dan alasan ketika Claude Code tidak dapat mengatur inbox.

Limitations

Batas di sini adalah properti dari saluran messaging itu sendiri dan berlaku di mana pun fitur berjalan. Untuk celah platform dan penyedia, lihat Availability sebagai gantinya.

  • Teks biasa saja: Claude mengirimkan hanya teks biasa lintas sesi. Pesan protokol agent team terstruktur tetap dalam tim.
  • Ukuran pesan mesin yang sama dibatasi: Claude Code menolak pesan ke sesi di mesin ini setelah bentuk serialnya melewati sekitar satu juta karakter. Penolakan menamai ukuran yang tepat. Tidak ada yang mencapai sesi penerima.
  • Ledakan cepat ke satu sesi ditolak di pengirim: setelah ledakan cepat pesan ke sesi di mesin ini mencapai apa yang diterima inbox sesi itu, Claude Code menolak pengiriman lebih lanjut dalam sesi pengirim. Penolakan menamai ledakan dan memberi tahu Claude untuk mengelompokkan sisanya menjadi satu pesan atau menunggu.
  • Loop pesan dibatasi: dalam sesi penerima, Claude Code membatasi laju pesan berulang per pengirim, menjatuhkan pengulangan identik yang tiba dalam jendela pendek, dan antrian paling banyak 50 pesan yang diterima untuk dibaca Claude. Loop pesan antara dua sesi karena itu berhenti sendiri.