SpyBara
Go Premium

cross-session-messaging.md 2026-09-28 22:59 UTC to 2026-09-29 17:57 UTC

This page contains 55 additions and 92 deletions.

2026
Sat 12 03:02 Fri 18 23:58 Mon 28 22:59 Tue 29 17:57

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 mempelajari sesuatu yang sesi lain butuhkan, seperti temuan, status, atau keputusan, Claude meneruskannya alih-alih Anda menyalin-menempel antar terminal. Claude menemukan target dengan ListAgents dan mengirim dengan SendMessage, jadi Anda tidak pernah memanggil salah satu alat tersebut sendiri. Claude dapat memutuskan untuk mengirim pesan tanpa diminta, dan Anda juga dapat meminta satu.

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

Tanyakan ke sesi yang berjalan di terminal lain saya apakah migrasi selesai

Claude menulis pesan aktual itu sendiri, jadi prompt Anda dapat membiarkan konten kepada Claude. Prompt ini meminta ringkasan tanpa mendikte kata-katanya, dan apa yang Claude kirim bervariasi:

Jelaskan apa yang baru saja kita lakukan ke sesi yang mengerjakan API pembayaran

Untuk menamai target sendiri, sebutkan sesi dalam prompt Anda: ketik @ diikuti oleh huruf pertama nama sesi dan pilih sesi dari typeahead, dengan cara yang sama Anda @-mention subagent. Memerlukan Claude Code v2.1.232 atau lebih baru. Claude Code menyisipkan mention, seperti @api-worker, dan memberi tahu Claude sesi mana yang dinamai, sehingga Claude dapat mengirim pesan ke sesi itu tanpa membuat daftar sesi Anda terlebih dahulu. Prompt ini menamai target dengan mention:

Beri tahu @api-worker bahwa migrasi skema selesai

Typeahead mencantumkan sesi hidup lainnya Anda di mesin ini. Dua kasus memerlukan lebih dari huruf pertama nama:

  • Sesi di luar mesin ini: sesi cloud atau Remote Control muncul di typeahead hanya setelah Claude telah membuat daftar atau mengirim pesan ke sesi Anda di luar mesin ini, jadi minta Claude untuk membuat daftar mereka terlebih dahulu.
  • Nama dengan spasi atau karakter lain di luar huruf, digit, tanda hubung, dan garis bawah: ketikkan dalam tanda kutip ganda, seperti @"release notes". Ketika Anda memilih sesi dari typeahead, Claude Code menyisipkan tanda kutip untuk Anda.

Anda juga dapat mengetik mention tanpa picker. Ketika lebih dari satu sesi hidup menjawab nama yang disebutkan, Claude menanyakan kepada Anda yang mana sebelum mengirim.

Untuk apa pesan yang Claude tulis terlihat seperti ketika tiba, termasuk contoh satu, lihat apa tampilan pesan.

Pengiriman pesan

Claude penerima membaca pesan di antara panggilan alat selama giliran aktif, jadi alat yang berjalan tidak pernah terganggu. Ketika sesi penerima menganggur, Claude Code memulai giliran baru dengan pesan.

Pesan dari sesi lain tiba sebagai teks biasa. Jika menyebutkan file atau sumber daya MCP dengan @, Claude melihat mention seperti yang ditulis dan Claude Code tidak melampirkan apa pun, apakah pesan memulai giliran baru atau tiba selama satu. Claude masih dapat membuka jalur yang disebutkan di mesin penerima dengan alatnya sendiri, tunduk pada izin sesi itu.

Claude Code menolak pesan dalam kasus berikut:

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

  • Dikirim: Claude Code meneruskan pesan ke Claude penerima.
  • Ditahan: Claude Code menyisihkan pesan tanpa dikirim. Pesan yang ditahan mencapai Claude hanya ketika Anda menyetujuinya atau perubahan mode atau pengaturan yang lebih baru memungkinkannya.
  • Ditolak: Claude Code menghapus pesan tanpa mengirimkannya.

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

Batas izin tetap per-sesi. Claude diinstruksikan untuk tidak pernah meminta sesi lain untuk tindakan yang ditolak atau diblokir di sesi miliknya sendiri, atau yang pengaturan izin miliknya sendiri akan blokir, dan untuk mengarahkan pekerjaan itu kembali ke Anda. Di sisi penerima, prompt izin sesi penerima sendiri dan aturan masih berlaku untuk apa pun yang diminta pesan.

Dapatkan pemberitahuan ketika sesi lain menganggur

Claude dapat meminta salah satu sesi Anda di mesin ini untuk mengirim kembali satu pemberitahuan ketika sesi itu berikutnya menganggur atau keluar. Menganggur di sini berarti sesi menyelesaikan giliran tanpa apa pun dalam antrian. Gunakan ketika Anda menunggu tugas panjang di sesi lain dan ingin mendengar kapan selesai alih-alih memeriksa. Memerlukan Claude Code v2.1.236 atau lebih baru di kedua sesi.

Minta pemberitahuan

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

Beri tahu saya ketika sesi migrasi menyelesaikan apa yang sedang dikerjakan

Claude berlangganan dengan input notify_when_idle alat SendMessage, baik dilampirkan ke pesan yang sedang dikirimnya atau sendiri. Sendiri, Claude Code berlangganan tanpa memulai giliran atau menghabiskan token di sesi yang ditonton, dan mengirim pemberitahuan segera jika sesi itu sudah menganggur. Dilampirkan ke pesan, Claude Code mengirimkan pesan terlebih dahulu dan mengirim pemberitahuan nanti.

Apa yang ditampilkan setiap sesi

Sesi yang ditonton menampilkan baris yang mengatakan proses lain meminta untuk diberitahu ketika sesi berikutnya menganggur. Sesi yang bertanya menampilkan pemberitahuan sebagai baris yang menamai sesi yang ditonton. Baris dapat mencakup waktu giliran sesi itu selesai dan status satu baris dari giliran itu. Jika sesi yang bertanya menganggur, Claude Code memulai giliran baru dengan pemberitahuan.

Batas

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

Kontrol inbound setiap sisi berlaku untuk pemberitahuan seperti pesan:

  • refuse di kedua sisi: tidak ada yang tiba. Sesi yang ditonton menghapus permintaan tanpa merekam atau menjawabnya, jadi langganan kedaluwarsa tanpa jawaban setelah 12 jam, dan sesi yang bertanya dengan refuse tidak pernah berlangganan.
  • hold di kedua sisi: pemberitahuan tiba dengan lebih sedikit. Sesi yang ditonton meninggalkan status satu baris, dan sesi yang bertanya menampilkan pemberitahuan dalam transkrip Anda tanpa mengirimkannya ke Claude.

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

Lihat sesi mana yang dapat dijangkau Claude

Claude menemukan target pesan sendiri, jadi Anda tidak perlu menjalankan apa pun sebelum memintanya untuk 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 lain Anda untuk mengirim pesan padanya. Baris di bawahnya adalah sesi yang dapat dijangkau Claude:

  • Subagents: agen yang berjalan di dalam sesi saat ini.
  • Rekan kerja: rekan kerja tim agen sesi ini sendiri.
  • Sesi lokal Anda yang lain: sesi Claude Code yang berjalan di mesin yang sama, termasuk sesi latar belakang. Sesi muncul hanya ketika mengikat soket kotak masuk.
  • Sesi cloud Anda: ditampilkan saat sesi ini terhubung ke Remote Control.
  • Sesi Remote Control Anda di mesin lain: ditampilkan saat sesi ini terhubung ke Remote Control, dan diberi label Remote Control. Claude Code menampilkan offline sebagai status sesi yang koneksi Remote Control-nya telah putus.

Saat sesi ini terhubung ke Remote Control, Claude Code menahan beberapa detail sesi lokal Anda dari output /list-agents, tanpa mengubah apa yang Claude sendiri lihat ketika mencari sesi untuk dikirim pesan:

  • Direktori kerja: meninggalkan direktori kerja setiap sesi lokal.
  • Nama sesi: meninggalkan nama sesi apa pun yang tidak dapat diatribusikan ke orang, jadi baris yang ditinggalkan tanpa nama berbunyi (unnamed session).
  • Baris pertama: meninggalkan baris dengan nama sesi ini sendiri kecuali Anda mengetik nama itu di terminal ini, dengan --name atau dengan /rename dan nama, sejak Anda meluncurkan atau terakhir melanjutkan sesi.

Ketika output mencantumkan apa pun, itu berakhir dengan catatan yang mengatakan detail ditahan. Menjalankan /rename diikuti dengan nama yang tidak digunakan di keyboard sesi sendiri memberikan sesi itu nama yang muncul dalam output.

Sesi menjawab nama yang Anda tetapkan dengan perintah /rename atau bendera --name. Ketika Anda tidak menetapkan satu, Claude Code memberi nama sesi itu sendiri. Untuk sesi interaktif, itu adalah nama yang ditampilkan dalam daftar sesi yang berjalan.

Ketika Anda mengganti nama sesi, atau memulai atau melanjutkan sesi interaktif, dengan nama yang sesi hidup lain di mesin ini sudah gunakan, Claude Code meninggalkan nama dengan sesi yang sudah memilikinya dan mengganti nama Anda menjadi varian. Sesi masih dapat berbagi nama, misalnya ketika salah satu dari mereka menjalankan versi Claude Code yang lebih awal atau nama bersama adalah yang dihasilkan Claude Code. Kecuali sesi ini terhubung ke Remote Control, Claude Code menampilkan direktori kerja setiap sesi lokal dalam output /list-agents, jadi Anda dapat membedakan sesi dengan nama yang sama ketika berjalan di direktori berbeda. Claude mengatasi pesan dalam salah satu dari dua cara, tergantung pada berapa banyak sesi hidup yang menjawab nama:

  • Satu sesi menjawab nama: Claude Code mengirimkan pesan hanya pada nama.
  • Beberapa sesi berbagi nama, atau Claude Code tidak dapat memeriksa di mana pun sesi Anda berjalan: Claude menambahkan pengidentifikasi pendek ke setiap baris daftarnya dan menggunakan pengidentifikasi dalam alamat.

Mengirim pesan ke sesi di mesin lain

Bagaimana pesan bepergian, dan apakah melewati server Anthropic, tergantung pada tempat sesi target berjalan:

Tempat sesi lain berjalan Bagaimana pesan bepergian
Di mesin ini Melalui soket per-sesi di macOS dan Linux, atau pipa bernama per-sesi di Windows asli, tidak pernah melalui server Anthropic
Di mesin lain Anda Melalui server Anthropic, tiba melalui koneksi Remote Control mesin itu
Di cloud Melalui server Anthropic, langsung ke sesi cloud

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

Anda dapat mengirim pesan ke sesi yang ditampilkan sebagai offline dalam daftar, satu yang koneksi Remote Control-nya telah putus. Pengiriman melewati, tetapi pesan tiba hanya setelah mesin sesi itu terhubung kembali.

Sesi di dalam kontainer dan sesi di host tidak dapat menjangkau satu sama lain. Dua sesi di dalam kontainer yang sama masih dapat mengirim pesan satu sama lain, termasuk di runner yang di-host sendiri. Sesi di dalam WSL 2 dan sesi Windows asli di komputer yang sama juga tidak dapat menjangkau satu sama lain.

Jika sesi ini tidak terhubung ke Remote Control ketika Claude mengirim ke sesi di luar mesin ini, pesan masih melewati, tetapi tanpa alamat balasan, jadi Claude penerima tidak dapat menjawabnya.

Untuk memerlukan persetujuan Anda sebelum pesan apa pun melampaui 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 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.