← Alle Beiträge

Sitzungsübergreifender Nachrichtenaustausch in Claude Code

Aus dem Leitfaden: Claude Code Comprehensive Guide

Seit v2.1.224 bindet jede interaktive Claude Code-Sitzung auf einem Mac oder einer Linux-Maschine beim Start einen Unix-Socket, und jede andere Sitzung, die Sie laufen haben, kann dort eine Textnachricht hineinlegen; meiner liegt unter /tmp/cc-socks/38590.sock, mit Rechten nur für den Eigentümer.1 Natives Windows bekommt stattdessen eine Named Pipe, laut Release Notes seit v2.1.239, und eine Ausnahme für die späte Bindung steht unter „Die Fallstricke”. Zwei Tools tragen die Funktion: ListAgents findet heraus, welche Ihrer Sitzungen erreichbar sind, und SendMessage stellt namentlich an eine davon zu.2 Nichts zu aktivieren, nichts zu konfigurieren. Laufen beide Sitzungen auf derselben Maschine unter v2.1.224 oder neuer (unter Windows v2.1.239), können sie bereits miteinander sprechen.

Claude Code-Sitzungen schreiben einander über einen lokalen Unix-Socket (unter Windows seit v2.1.239 eine Named Pipe): ListAgents findet eine erreichbare Sitzung, SendMessage stellt ihr namentlich Klartext zu. Eine Nachricht ist Eingabe, niemals Befugnis. Sie kann keine Freigaben erteilen, keine Konfiguration ändern und keine Befehle ausführen, und sie trägt weder Gesprächsverlauf noch Dateien.

TL;DR

Claude Code-Sitzungen können sich jetzt gegenseitig Nachrichten schicken: auf einer Maschine über lokale Sockets, die niemals die Server von Anthropic berühren, und maschinenübergreifend über Remote Control (zum Start nur als Antwort; v2.1.225 hat die Möglichkeit ergänzt, solche Gespräche namentlich zu eröffnen).15 Eine Nachricht ist ausschließlich Klartext, niemals Gesprächsverlauf, Dateien oder Berechtigungen, und die empfangende Sitzung behandelt sie als Eingabe, nicht als Befugnis: Freigaben erteilen, Konfiguration ändern oder Befehle ausführen kann sie nicht.1 Aus einer Flotte unabhängiger Terminals wird damit etwas, das einem Team näherkommt, und am besten funktionieren jene Koordinationsnachrichten, die Sie früher von Hand hin- und hergetragen haben: „Die Migration ist durch”, „Ich habe diese Spalte umbenannt”, „main lässt sich sicher rebasen”. Der schärfste Fallstrick ist die stille Abwesenheit: Vier voneinander unabhängige Datenschutz-Umgebungsvariablen können die Funktion je nach ihren Werten jeweils lautlos abschalten.3 Seit dem Start ist Windows mit v2.1.239 nativ dazugekommen, und v2.1.236 hat notify_when_idle ergänzt, womit eine Sitzung eine Peer-Sitzung auf derselben Maschine um eine einmalige Benachrichtigung bitten kann, sobald diese das nächste Mal untätig wird oder endet.910

Was ausgeliefert wurde

Release v2.1.224 hat sitzungsübergreifendes SendMessage samt Auffindbarkeit über ListAgents auf macOS und Linux gebracht; v2.1.225 hat das so erweitert, dass eine Sitzung ein Gespräch mit Ihren Remote-Control-Sitzungen auf anderen Maschinen auch eröffnen kann, wo sie vorher nur antworten konnte.45

An drei Stellen können Sie die Maschinerie sehen:

  • /list-agents (Alias /peers) gibt in der ersten Zeile den eigenen Namen der Sitzung aus (den Namen, über den Ihre anderen Sitzungen sie erreichen; angezeigt seit v2.1.239), danach jede Sitzung, die Claude erreichen kann: Subagenten innerhalb der aktuellen Sitzung, die lebenden Teammitglieder des Agententeams der Sitzung (aufgeführt seit v2.1.239; davor wirkte ein erreichbares Teammitglied abwesend), Ihre anderen lokalen Sitzungen einschließlich der im Hintergrund laufenden und, solange Remote Control verbunden ist, Ihre Sitzungen auf anderen Maschinen sowie in Claude Code im Web.19
  • /status zeigt eine Zeile Peer address mit dem eigenen Eingangs-Socket der Sitzung, mit dem Präfix uds:.1
  • CLAUDE_CODE_MESSAGING_SOCKET, das Claude Code an Hooks und Bash-Befehle exportiert, sobald der Posteingang gebunden ist (siehe den Hinweis zur späten Bindung unter „Die Fallstricke”), enthält den Socket-Pfad der eigenen Sitzung.16 Warum das zählt, weiter unten.

Nachgeprüft auf meiner eigenen Maschine am 25. August 2026 mit Claude Code 2.1.246: Die Agentenliste begann mit der Zeile „This session is blakecrosley-com-76 [04e18a] — the name other sessions use to message it (it is not listed below; a message to it would be a message to yourself).” (diese Sitzung samt dem Namen, über den andere sie erreichen), dann 11 Peer-Sitzungen als Zeilen wie „resumegeni-25 [10d770] · interactive · idle · started 21h ago”, Namen in der Form Verzeichnis plus zweistelliges Suffix mit einer kurzen Kennung in eckigen Klammern, Zustände idle, busy und shell, ein Startalter pro Zeile und ein eigener Block „Subagents” für die Kinder der Sitzung selbst. Die Socket-Dateien unter /tmp/cc-socks/ tragen die Rechte srw-------, und das Verzeichnis selbst ist drwx------: lesbar und schreibbar allein für meinen Benutzer, und genau das ist die Grenze auf gemeinsam genutzten Maschinen.1

Sitzungen hören auf Namen. Einen setzen Sie mit /rename oder dem Flag --name; sonst leitet Claude Code einen aus dem Arbeitsverzeichnis ab, etwa my-app-3f.111 Seit v2.1.232 gilt: Starten Sie eine interaktive Sitzung, setzen Sie sie fort oder benennen Sie sie um, sodass sie einen Namen trägt, den eine andere lebende Sitzung auf der Maschine bereits verwendet, lässt Claude Code den Namen bei der Sitzung, die ihn hat, benennt Ihre in eine Variante der Form name-word-word um (etwa auth-refactor-graceful-unicorn) und sagt es Ihnen.110 Kollisionen bleiben bestehen, wenn eine der Sitzungen eine ältere Version ausführt, wenn der gemeinsame Name von Claude Code generiert wurde oder wenn Sie eine Hintergrund- oder -p-Sitzung mit einem --name starten, den Claude Code beim Start nicht prüft.11 Die Liste zeigt immer das Arbeitsverzeichnis jeder lokalen Sitzung, was gleichnamige Sitzungen unterscheidet, wenn sie in verschiedenen Verzeichnissen laufen; bei einem geteilten Namen fügt Claude außerdem jeder Zeile eine kurze Kennung hinzu und verwendet sie in der Adresse. Auf dieselbe Adressierung über die kurze Kennung weicht Claude auch aus, wenn Claude Code nicht überall prüfen konnte, wo Ihre Sitzungen laufen, etwa bei einem Konto, dessen Cloud- oder Remote-Control-Sitzungsliste über die begrenzte Seitenzahl hinausging, die es liest.1

Was sich seit dem Start geändert hat (August 2026)

Fünf Releases in den zwei Wochen nach dem Start haben die Windows-Lücke geschlossen, die dieser Beitrag markiert hatte, Benennung und Adressierung verschärft und vier Modi stillen Scheiterns beseitigt, die der Beitrag nicht markiert hatte:910

Release Änderung
v2.1.232 Eindeutige Namen und @-Erwähnungen. Interaktive Sitzungen auf einer Maschine behalten eindeutige Namen (bei einer Kollision wird der Neuankömmling in eine Variante name-word-word umbenannt, und Sie erfahren davon); wer im Prompt @ tippt, erwähnt eine andere lebende Sitzung namentlich, und Claude erreicht sie direkt mit SendMessage; /config bekommt eine Zeile „Messages from your other sessions” (Nachrichten von Ihren anderen Sitzungen), die crossSessionInbound (accept, hold, refuse) in die Benutzereinstellungen schreibt, neben einer Zeile „Dialog expiry” (Dialogverfall). Dasselbe Release hat das automatisch erzeugte Socket-Verzeichnis auf gemeinsam genutztem /tmp gehärtet: Claude Code weist einen vorab platzierten Symlink oder das Verzeichnis eines anderen Benutzers jetzt ab, statt es zu verwenden.110
v2.1.235 SendMessage weist eine Nachricht, die für die sitzungsübergreifende Zustellung zu groß ist, von vornherein ab, statt sie lautlos zu verwerfen.10
v2.1.236 notify_when_idle: Bitten Sie eine andere Sitzung auf derselben Maschine, eine einmalige Benachrichtigung zu senden, sobald sie das nächste Mal untätig wird oder endet (beide Sitzungen v2.1.236+). Opt-in, einmalig, kein Polling. Dasselbe Release weist weitere Nachrichten von vornherein ab, sobald eine schnelle Folge überschreiten würde, was der Posteingang des Empfängers annimmt, statt sie als gesendet zu melden, während der Empfänger sie verwarf.110
v2.1.238 Ehrlichkeit bei der Zustellung: Ein Versand an eine Sitzung auf dieser Maschine, die eingehende Nachrichten abweist (crossSessionInbound: "refuse"), meldet dem Absender jetzt „refused” (abgewiesen) statt eines stillen Erfolgs, und eine Sitzung, deren Posteingang Ihre Nachrichten verwirft (Ratenbegrenzung oder volle Warteschlange), sagt es Ihrer Sitzung, statt dass die Nachrichten verschwinden.10
v2.1.239 Windows. Der sitzungsübergreifende Nachrichtenaustausch funktioniert nativ, mit denselben Tools SendMessage und ListAgents; ListAgents nennt einer Sitzung jetzt ihren eigenen Namen (den, über den Peers sie erreichen) und führt lebende Teammitglieder auf, die vorher abwesend wirkten; SendMessage an den eigenen Namen sagt das, statt „no agent named …”.9

Der praktische Effekt: Das Muster „Langläufer, der Bericht erstattet” weiter unten braucht keinen Nachfrage-Prompt mehr. Die beobachtende Sitzung bittet den Langläufer mit notify_when_idle um eine einmalige Untätigkeitsmeldung und hört zurück, sobald der Langläufer das nächste Mal untätig wird oder endet. Zwei der vier Fehlermodi (eine zu große Nachricht oder eine für den Posteingang zu schnelle Folge) scheitern jetzt von vornherein beim Absender; die anderen beiden (eine abgewiesene oder verworfene Nachricht) kommen bei einem interaktiven Absender auf derselben Maschine als ausdrückliche Meldungen zurück.

Das Vertrauensmodell ist der spannende Teil

Der Entwurf von Anthropic beantwortet eine Frage, an der die meisten Multi-Agenten-Systeme scheitern: Was ist eine Nachricht von einem anderen Agenten eigentlich wert? Die Antwort fällt hier präzise aus: Eine Nachricht ist Information, niemals Befugnis.1

Schickt Sitzung A eine Nachricht an Sitzung B, binden vier Regeln, was dort ankommt:1

  1. Sie kann nichts freigeben. Eine offene Berechtigungsabfrage in B ignoriert alles, was A sagt. Abfragen beantworten nur Sie.
  2. Sie kann keine Konfiguration ändern. Claude Code weist das empfangende Claude an, Berechtigungseinstellungen, CLAUDE.md oder sonstige Konfiguration niemals zu ändern, nur weil eine andere Sitzung darum gebeten hat.
  3. Befehle kommen als Text an. Ein /compact im Nachrichtentext ist acht Zeichen Prosa, niemals ein ausgeführter Befehl.
  4. Berechtigungsabfragen erscheinen weiterhin. Braucht das Handeln auf die Nachricht hin eine Berechtigung, die B nicht hat, sehen Sie dieselbe Abfrage wie bei jeder anderen Arbeit.

Der Eingang hat seine eigene Prüfgrenze. Jede eintreffende Nachricht endet in einem von drei Ergebnissen (zugestellt, zu Ihrer Freigabe zurückgehalten oder abgewiesen), gesteuert über die Einstellung crossSessionInbound (accept, hold, refuse).1 Setzen Sie nichts, entscheidet Claude Code pro Nachricht anhand der Berechtigungsmodi beider Sitzungen, und die Standardlogik ist elegant: Sitzungen, die Berechtigungsabfragen umgehen, bilden die eine Klasse, alle übrigen die andere (der Plan-Modus zählt als umgehend, wenn der Sitzung der Bypass-Modus zur Verfügung steht; Auto, acceptEdits und dontAsk zählen als abfragend). Eine abfragende Sitzung empfängt Nachrichten ungehindert, hält aber alles zurück, was von einer umgehenden Sitzung kommt; eine umgehende Sitzung hält alles zurück außer Nachrichten von anderen umgehenden Sitzungen.1 Die Asymmetrie ist Absicht: Eine Nachricht darf nicht auf der Befugnis einer permissiven Sitzung mitreiten, ein Prinzip, das v2.1.224 auf den Eingang anwendet, nachdem v2.1.222 es im Auto-Modus auf den Ausgang angewandt hatte, wo der Berechtigungsklassifizierer jeden Versand vor der Zustellung prüft.7

Zurückgehaltene Nachrichten öffnen einen Freigabedialog mit Absender und Vorschau; unbeantwortete Dialoge verfallen nach fünf Minuten (einstellbar über dialogExpiry), und die Nachricht wird verworfen.1 Eine Hintergrundsitzung ohne angeschlossenes Terminal hält den Dialog über diese Frist hinaus offen; sobald Sie sich verbinden, wird die Nachricht nur verworfen, wenn der Dialog eine volle Fristdauer lang unbeantwortet bleibt.1 Höchstens 100 Nachrichten liegen gleichzeitig zurückgehalten.1 Zwei weitere Regler ziehen das noch enger: isolatePeerMachines: true verlangt Ihre ausdrückliche Freigabe, bevor irgendeine Nachricht die Maschine verlässt, selbst im Modus bypassPermissions, und ein true aus einer beliebigen Einstellungsebene gewinnt, eine eingecheckte Projektdatei kann also verschärfen, aber niemals lockern.1 Organisationen können die Funktion vollständig abschalten: mit Deny-Regeln für SendMessage und ListAgents plus crossSessionInbound: "refuse" in den verwalteten Einstellungen.1

Welchen Weg Nachrichten nehmen

Wo die andere Sitzung läuft, bestimmt sowohl den Transportweg als auch das, was Sie senden können:1

Ziel Transportweg Sie können senden
Dieselbe Maschine Unix-Socket pro Sitzung (Named Pipe unter nativem Windows), nie über Server von Anthropic Neue Nachrichten und Antworten
Ihre andere Maschine Server von Anthropic, Ankunft über die Remote-Control-Verbindung dieser Maschine Antworten; neue Gespräche ab v2.1.225, solange Remote Control verbunden ist5
Claude Code im Web Server von Anthropic, direkt an die Cloud-Sitzung Antworten; neue Gespräche an eine Cloud-Sitzung, die in der Liste erscheint, solange Remote Control verbunden ist1

Als dieser Beitrag zuerst erschien, beschrieb die Doku-Seite von Anthropic jeden maschinenübergreifenden Nachrichtenaustausch noch als reine Antwort, während die Release Notes zu v2.1.225 sagten, SendMessage „can now start a conversation with your Remote Control sessions on other machines by name” (könne jetzt namentlich ein Gespräch mit Ihren Remote-Control-Sitzungen auf anderen Maschinen eröffnen). Die Doku hat inzwischen aufgeholt: Die Seite stellt jetzt fest, dass das Eröffnen eines Gesprächs mit einer Sitzung auf einer anderen Ihrer Maschinen v2.1.225 oder neuer und ein Ziel voraussetzt, das in der Liste erscheint.15

Die Regel für dieselbe Maschine lautet: Sichtbarkeit im Dateisystem. Sitzungen registrieren sich in Dateien auf der Platte, zwei Sitzungen erreichen sich also nur, wenn sie dieselben Dateien sehen. Eine Sitzung im Container und eine auf dem Host können nicht miteinander sprechen; zwei Sitzungen im selben Container schon.1

Die Zustellung respektiert den Rhythmus der empfangenden Sitzung: Das empfangende Claude liest eine Nachricht während einer aktiven Runde zwischen zwei Tool-Aufrufen und unterbricht nie ein laufendes Tool, und ist die Sitzung untätig, startet Claude Code mit der Nachricht eine neue Runde.1 Zugestellte Nachrichten zählen für die Nutzung wie ein Prompt, den Sie selbst getippt haben.1

Fünf Muster, die sich zu bauen lohnen

1. Koordination über Worktrees. Der offensichtliche Fall, und derjenige, den die Dokumentation mit einer eigenen Beispielnachricht illustriert: Sitzungen, die am gleichen Repository in getrennten Worktrees arbeiten, sagen einander, was gelandet ist.1 „Schema-Migration fertig: Die neue Spalte heißt tenant_id, und ein Rebase auf main ist jetzt sicher.” ist genau die Art Aktualisierung, für die Sie sonst etwas mitbekommen, das Terminal wechseln und erneut tippen müssen. Teilen sich mehrere Sitzungen statt Worktrees einen einzigen Checkout, wird die Koordinationsnachricht noch wertvoller: „Ich committe gleich content/guides/, bitte nicht stagen” verhindert die klassische Kollision im gemeinsamen Baum, bei der eine Sitzung die halbfertige Arbeit einer anderen mit einbucht.

2. Beobachter und Arbeiter. Lassen Sie eine Beobachtersitzung ein Deployment, eine Testsuite oder ein Log überwachen und in dem Moment, in dem etwas bricht, die für Korrekturen zuständige Sitzung benachrichtigen. Die empfangende Sitzung bekommt den Befund als Kontext, nicht als Befehl; was zu tun ist, entscheidet sie weiterhin selbst, im Rahmen ihrer eigenen Berechtigungen. Kombinieren Sie den Beobachter mit Hintergrundsitzungen und den Benachrichtigungs-Hooks, und Sie erhalten eine Eskalationskette, die nur dann bei einem Menschen endet, wenn sie es soll.

3. Der Langläufer, der Bericht erstattet. Starten Sie eine Migration oder einen langen Testlauf in einer Sitzung und lassen Sie sie an die Sitzung zurückmelden, die Sie tatsächlich im Blick haben.1 Der Status lebt dann nicht mehr in einem Terminal, das Sie vergessen haben. Umgekehrt geht es auch, gefragt von der beobachtenden Seite: „Die Sitzung in meinem anderen Terminal fragen, ob die Migration durch ist” ist ein Prompt, und Auffinden, Adressierung und Formulierung übernimmt Claude selbst.1 Seit v2.1.236 können Sie sich die Frage sparen: Lassen Sie Ihre beobachtende Sitzung notify_when_idle auf dem Langläufer setzen, und er meldet sich einmal zurück, sobald er das nächste Mal untätig wird oder endet, ohne Polling auf einer der beiden Seiten.110 Beide Sitzungen brauchen v2.1.236+, und die Grenzen folgen der Eingangssteuerung. Jedes Abonnement trägt eine Obergrenze von 12 Stunden: Trifft bis dahin keine Benachrichtigung ein, verwirft Claude Code das Abonnement und sagt Claude, es solle nicht länger warten. Mit refuse auf der beobachteten Seite verwirft diese Sitzung die Anfrage, ohne sie zu erfassen oder zu beantworten, das Abonnement läuft also an der Obergrenze unbeantwortet ab; mit refuse auf der fragenden Seite abonniert Claude Code gar nicht erst. Mit hold auf einer der beiden Seiten kommt die Benachrichtigung abgeschwächt an: Die beobachtete Sitzung lässt ihre einzeilige Statusangabe weg, und die fragende Sitzung zeigt die Benachrichtigung in Ihrem Transkript, ohne sie Claude zuzustellen.1

4. Unbeaufsichtigte Arbeiterflotten. Auch Headless-Sitzungen mit claude -p binden Eingangs-Sockets, ein lang laufender -p-Arbeiter kann also Nachrichten empfangen und erscheint in den Listen.8 Der Haken: Eine -p-Sitzung kann den Freigabedialog nicht anzeigen, eine standardmäßig zurückgehaltene Nachricht wartet also die Frist aus dialogExpiry ab (fünf Minuten als Standard; dialogExpiry nimmt 60s, 5m, 10m oder never), wird dann verworfen und meldet sich einem erreichbaren Absender als verfallen; nur eine Modus- oder Einstellungsänderung innerhalb dieses Fensters stellt sie zu.1 Endet die Sitzung, während noch Nachrichten zurückgehalten sind, meldet Claude Code sie jedem erreichbaren Absender als verfallen.1 Vor v2.1.225 galt gar keine Frist: Eine zurückgehaltene Nachricht parkte ohne Hinweis und ohne Verfall, und ein Arbeiter, der mit zurückgehaltenen Nachrichten endete, sagte deren Absendern nichts.1 Für einen Arbeiter, der unbeaufsichtigt Nachrichten annimmt, starten Sie ihn mit crossSessionInbound: "accept" in seinem --settings-Wert: eine Erlaubnis pro Arbeiter statt eines accept in den Benutzereinstellungen, das für jede Ihrer Sitzungen gelten würde.8 Sitzungen im Bare-Modus legen den Socket gar nicht erst an und bleiben unerreichbar.8

5. Skriptgesteuerte Postfächer. Das stille Kraftpaket: Weil Claude Code CLAUDE_CODE_MESSAGING_SOCKET an Hooks und Bash-Befehle exportiert, kann ein Skript in das eigene Postfach einer Sitzung schreiben.6 Claude Code prüft Nachrichten aus eigenen Kindprozessen: Ein Hook oder Befehl, der an seine eigene Sitzung zurückschreibt, wird ohne Umstände zugestellt, solange kein ausdrückliches crossSessionInbound greift.1 Ein Git-Hook, den der eigene Commit der Sitzung ausgelöst hat, ein Test-Wrapper, den sie gestartet hat, ein Deploy-Skript, das sie ausgeführt hat: Jeder Hook und jeder Bash-Befehl, den die Sitzung selbst gestartet hat, kann eine Zeile Kontext in diese Sitzung zurückschreiben. Claude Code muss den Schreiber als eigenes Kind verifizieren; kann es das weder über Prozessnachweis noch über Token, behandelt es die Nachricht als eine, die keine Berechtigungsklasse beansprucht, sodass eine umgehende Sitzung sie zu Ihrer Freigabe zurückhält, statt sie zuzustellen.1 Unter nativem Windows muss die erste Zeile der Verbindung eine Auth-Zeile mit CLAUDE_CODE_MESSAGING_TOKEN sein, sonst schließt Claude Code die Verbindung ungelesen; dieses Token ist zugleich der einzige Weg, auf dem Windows eine Nachricht aus einem eigenen Kindprozess verifiziert.1 Unter Linux funktioniert die Prüfung über Prozessnachweis auch noch, nachdem der schreibende Prozess beendet ist; unter macOS nur, solange er noch läuft. Nach seinem Ende unter macOS und in einem Container, in dem Claude Code PID 1 ist, verifiziert Claude Code stattdessen ein Kind, das in seiner Auth-Zeile das von der Sitzung exportierte CLAUDE_CODE_MESSAGING_TOKEN mitgeschickt hat.1 Befehle in der Sandbox brauchen die Freigabe des Sockets: sandbox.network.allowUnixSockets listet unter macOS Socket-Pfade auf, und unter Linux und WSL 2, wo der seccomp-Filter keine Pfade inspizieren kann, öffnet ihn nur sandbox.network.allowAllUnixSockets: true; ist dieser optionale Filter nicht installiert, blockiert die Sandbox den Socket von vornherein nicht.112

Was es ausdrücklich nicht sein will

Die Grenzen sind Entwurfsentscheidungen, und wer sie respektiert, baut nicht das Falsche.

Kein Freigabekanal. Alles im Vertrauensmodell ist dafür da, zu verhindern, dass eine Sitzung die Handlungen einer anderen autorisiert. Der Entwurf schließt jeden Arbeitsablauf nach dem Muster „Sitzung A gibt frei, Sitzung B führt aus” ausdrücklich aus. Befugnis läuft immer über den Menschen.1

Keine Kontextübertragung. Eine Nachricht ist Text, den ein Claude einem anderen schreibt, niemals Gesprächsverlauf oder Dateien. Die Dokumentation von Anthropic sagt es unverblümt: Wer ein Gespräch mitnehmen will, setzt die Sitzung stattdessen fort.1 Zusammenfassen, nicht abladen.

Keine Agententeams. Unabhängige Sitzungen, die einander Nachrichten schicken, sind der Peer-to-Peer-Fall. Ein koordiniertes Team, das Claude startet und beaufsichtigt (strukturierte Protokollnachrichten, eine Aufstellung, geteilter Aufgabenzustand), ist die Funktion Agententeams, und strukturierte Teamnachrichten bleiben bewusst innerhalb eines Teams.1 Wenn Sie sich dabei erwischen, auf sitzungsübergreifendem Text ein Nachrichtenprotokoll zu entwerfen, wollen Sie eigentlich Agententeams.

Keine Chat-Schleife. Claude Code begrenzt wiederholte Nachrichten pro Absender, verwirft identische Wiederholungen innerhalb eines kurzen Zeitfensters und deckelt ungelesene angenommene Nachrichten bei 50 pro Sitzung, eine Nachrichtenschleife zwischen zwei Sitzungen hungert sich also konstruktionsbedingt selbst aus.1 v2.1.236 weist zudem weitere Nachrichten von vornherein ab, sobald eine schnelle Folge überschreiten würde, was der Posteingang des Empfängers annimmt, statt sie als gesendet zu melden, während der Empfänger sie verwarf.10 Bauen Sie einen Austausch aus Anfrage und Antwort, keine Gespräche.

Die Fallstricke

Datenschutzvariablen schalten es lautlos ab. Der sitzungsübergreifende Nachrichtenaustausch hängt an der Auswertung von Feature-Flags, und jede der Variablen CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, DISABLE_TELEMETRY, DO_NOT_TRACK oder DISABLE_GROWTHBOOK kann diese Auswertung abschalten und nimmt den Nachrichtenaustausch lautlos mit.3 Das Diagnosemittel ist /list-agents: Erkennt die Sitzung den Befehl nicht, fehlt ihr die Funktion komplett; funktioniert er, kommt aber ein Versand nie an, greift etwas Engeres: eine Deny-Regel, die Eingangssteuerung des Empfängers, ein Ziel, das in der Liste fehlt (Remote Control nicht verbunden, oder die Sitzung fiel hinter die begrenzte Seitenzahl, die Claude Code liest), oder ein Absender vor v2.1.225, der ein maschinenübergreifendes Gespräch eröffnen will.1 Ein Ziel, das nie einen Posteingang gebunden hat, ist nicht der stille Fall. Eine Sitzung hinter einer Datenschutzvariablen, im Bare-Modus oder jenseits einer Container-Grenze erscheint nie in /list-agents, ein Versand an sie scheitert also laut als Name, den Claude Code nicht findet, und seit v2.1.234 sagt SendMessage außerdem, wenn es Ihre Sitzungsliste nicht vollständig prüfen konnte, statt ungesehene Sitzungen als abwesend zu behandeln.1310 Die erste Sitzung nach einem Upgrade ist eine späte Bindung, keine fehlende: Claude Code bindet den Posteingang und exportiert die Socket-Variable, sobald der Abruf der Feature-Flags abgeschlossen ist, und v2.1.228 hat behoben, dass diese erste Sitzung manchmal ganz ohne Posteingang startete.110 Die wirklich stillen Fälle liegen auf der Absenderseite. Die Doku verspricht den Hinweis auf die Zurückhaltung samt Folgemeldung, den Abweisungshinweis zum Ankunftszeitpunkt und den Verwerfungshinweis nur einem interaktiven Absender auf derselben Maschine, ein maschinenübergreifender Absender oder ein -p-Arbeiter hat für diese Fälle also keinen zugesicherten Hinweis. Zwei Meldungen gehen an „each sender it can reach” (jeden erreichbaren Absender): der Verfall einer standardmäßig zurückgehaltenen Nachricht und die Abweisung, wenn eine Einstellungsänderung zurückgehaltene Nachrichten verwirft. Eine Nachricht, die eine ausdrückliche Einstellung hold geparkt hat, verfällt nie, für sie kommt also nie eine Verfallsmeldung zurück.1

Lücken bei Plattformen und Anbietern. Natives Windows kam mit v2.1.239; davor funktionierte nur Linux unter WSL 2.19 Die Doku-Seite von Anthropic setzt die Windows-Untergrenze bei v2.1.234 an; die Release Notes kündigen es erstmals in v2.1.239 an. Behandeln Sie v2.1.239 als die sichere Untergrenze.19 Eine Sitzung unter WSL 2 und eine native Windows-Sitzung auf demselben Rechner erreichen einander ebenfalls nicht: Sie registrieren sich unter verschiedenen Home-Verzeichnissen und lauschen auf verschiedenen Socket-Typen.1 Nicht verfügbar auf Amazon Bedrock, Claude Platform auf AWS, Google Clouds Agent Platform oder Microsoft Foundry.1

Der Grenzfall der Einbahn-Antwort. Eine Antwort an eine Sitzung auf einer anderen Maschine, abgeschickt, während die antwortende Sitzung nicht mit Remote Control verbunden ist, kommt zwar an, aber ohne Rückadresse, der Empfänger kann also nicht antworten. Claude Code sagt Claude beim Senden so viel, und v2.1.225 hat die Adressierung verschärft: Konnte Claude Code seine eigene Sitzungsliste nicht prüfen, tauscht es einen bestätigten Empfänger auf einer anderen Maschine nie gegen eine gleichnamige lokale Sitzung.5

Zurückhaltungen im Headless-Betrieb. Der -p-Arbeiter, der Nachrichten rätselhafterweise ignoriert, ist fast immer ein Fall zurückgehaltener Nachrichten: kein Dialog, keine Zustellung. Setzen Sie crossSessionInbound: "accept" bei Arbeitern, die zuhören sollen.8

Die wichtigsten Erkenntnisse

Für alle, die Claude Code täglich nutzen: - Führen Sie einmal /list-agents aus, um zu sehen, was Ihre Sitzungen schon erreichen können; benennen Sie wichtige Sitzungen mit /rename, damit Nachrichten sauber adressiert werden. Der Claude Code-Leitfaden behandelt die Sitzungsbefehle und Einstellungen, auf die sich die Funktion stützt. - Formulieren Sie Nachrichten in normaler Sprache („der Sitzung, die an den Zahlungen arbeitet, sagen, was wir geändert haben”) und lassen Sie Claude die Nachricht selbst schreiben.1

Für alle, die Automatisierung bauen: - Schreiben Sie aus Hooks und Skripten über CLAUDE_CODE_MESSAGING_SOCKET in Sitzungen hinein; Nachrichten aus eigenen Kindprozessen werden unter Linux ohne Freigabereibung zugestellt.16 - Geben Sie unbeaufsichtigten -p-Arbeitern crossSessionInbound: "accept" in ihrem eigenen --settings mit, nicht global.8

Für Teams und Sicherheitsprüfer: - Die Funktion kommt mit den richtigen Standardwerten: Nachrichten tragen keine Befugnis, die Standardeinstellungen stellen umgehende Sitzungen unter Quarantäne, und isolatePeerMachines plus Deny-Regeln in den verwalteten Einstellungen geben Ihnen Ausschalter pro Maschine und für die gesamte Organisation.1 - Prüfen Sie die vier Datenschutz-Umgebungsvariablen, bevor Sie den Nachrichtenaustausch für defekt erklären. Eine abweisende Sitzung sieht in Listen und in ihrem eigenen /status identisch aus, prüfen Sie also die Einstellungsdateien, die für diese Sitzung gelten, statt ihres Status; seit v2.1.238 meldet ein Versand von einer Sitzung auf derselben Maschine die Abweisung auch zurück.110

Häufige Fragen

Funktioniert der sitzungsübergreifende Nachrichtenaustausch von Claude Code unter Windows?

Ja, laut Release Notes nativ seit v2.1.239, mit denselben Werkzeugen SendMessage und ListAgents und einer Named Pipe anstelle des Unix-Sockets. Davor funktionierte nur Linux unter WSL 2. Die Doku-Seite von Anthropic setzt die Windows-Untergrenze bei v2.1.234 an; behandeln Sie v2.1.239 als die sichere Untergrenze. Eine Sitzung unter WSL 2 und eine native Windows-Sitzung auf demselben Rechner erreichen einander weiterhin nicht.19

Kann eine Claude-Code-Sitzung die Freigabeabfragen einer anderen Sitzung genehmigen?

Nein. Eine Nachricht ist Information, niemals Befugnis. Eine offene Freigabeabfrage ignoriert alles, was die sendende Sitzung sagt, denn nur Sie beantworten Abfragen. Claude Code weist das empfangende Claude an, Berechtigungseinstellungen, CLAUDE.md oder sonstige Konfiguration niemals zu ändern, nur weil eine andere Sitzung darum gebeten hat, und ein /compact im Nachrichtentext sind acht Zeichen Prosa, niemals ein ausgeführter Befehl.1

Warum erscheinen meine anderen Sitzungen nicht in /list-agents?

Prüfen Sie zuerst die Datenschutz-Umgebungsvariablen. Der Nachrichtenaustausch hängt an der Auswertung von Feature-Flags, und CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, DISABLE_TELEMETRY, DO_NOT_TRACK oder DISABLE_GROWTHBOOK können diese Auswertung jeweils abschalten und nehmen den Nachrichtenaustausch lautlos mit. Auch eine Sitzung im Bare-Modus oder jenseits einer Container-Grenze erscheint nie, denn zwei Sitzungen erreichen einander nur, wenn sie dieselben Dateien auf der Festplatte sehen.13

Wie lasse ich einen unbeaufsichtigten claude -p-Arbeiter Nachrichten empfangen?

Starten Sie ihn mit crossSessionInbound: "accept" in seinem --settings-Wert, also als Freigabe pro Arbeiter statt als accept in den Benutzereinstellungen, das für jede Sitzung gälte, die Sie starten. Eine -p-Sitzung bindet einen Posteingangs-Socket und erscheint in Auflistungen, kann aber den Freigabedialog nicht anzeigen, eine standardmäßig zurückgehaltene Nachricht wartet also die Frist aus dialogExpiry ab und wird dann verworfen.8

Kann ich Gesprächsverlauf oder Dateien an eine andere Sitzung schicken?

Nein. Eine Nachricht ist Klartext, den ein Claude einem anderen schreibt, niemals Gesprächsverlauf, Dateien oder Berechtigungen. Die Dokumentation von Anthropic sagt es unverblümt: Wer ein Gespräch mitnehmen will, setzt die Sitzung stattdessen fort. Zusammenfassen, nicht abladen. Und wenn Sie sich dabei erwischen, auf sitzungsübergreifendem Text ein Nachrichtenprotokoll zu entwerfen, wollen Sie eigentlich Agententeams.1

Quellen


  1. Anthropic, „Message your other Claude Code sessions”, Claude Code-Dokumentation. Abgerufen am 8. August 2026; erneut geprüft am 25. August 2026. 

  2. Anthropic, „Tools reference”, Claude Code-Dokumentation: die Einträge zu ListAgents und SendMessage

  3. Anthropic, „Environment variables”, Claude Code-Dokumentation: Hinweise zur Feature-Flag-Auswertung bei CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, DISABLE_TELEMETRY, DO_NOT_TRACK und DISABLE_GROWTHBOOK

  4. Anthropic, Claude Code v2.1.224 release notes, 7. August 2026 (UTC): „Added cross-session SendMessage: Claude Code sessions can now message each other, on any of your machines, with ListAgents to discover them (macOS and Linux).” 

  5. Anthropic, Claude Code v2.1.225 release notes, veröffentlicht am 8. August 2026 (UTC): „SendMessage can now start a conversation with your Remote Control sessions on other machines by name (ListAgents shows them as name [ref]), instead of only replying after they message you first.” Dasselbe Release stellt fest, dass Claude Code einen bestätigten Remote-Control-Empfänger nie gegen eine gleichnamige Sitzung auf dieser Maschine tauscht, „when its own list couldn’t be checked” (wenn die eigene Liste nicht geprüft werden konnte). 

  6. Anthropic, „Environment variables”, Claude Code-Dokumentation: CLAUDE_CODE_MESSAGING_SOCKET, exportiert an Hooks und Bash-Befehle, sobald der Socket gebunden ist, und in einer Sitzung, die mit eingeschaltetem Nachrichtenaustausch startet, gebunden, bevor irgendein Hook läuft; die Seite zum sitzungsübergreifenden Nachrichtenaustausch ergänzt „including SessionStart”. 

  7. Anthropic, Claude Code v2.1.222 release notes, 4. August 2026: „Improved auto mode safety: messages sent to other agent sessions via SendMessage are now evaluated by the permission classifier before dispatch.” Die Prüfung durch den Klassifizierer gilt im Auto-Modus (und im Plan-Modus, wo der Auto-Klassifizierer Befehle prüft), nicht generell. Die Klausel zum Plan-Modus stammt aus Anthropic, „Permission modes”, Claude Code-Dokumentation: „The classifier also reviews each message Claude sends to another agent with SendMessage, whether plain text or a structured agent team message, before Claude Code delivers it, both in auto mode and in plan mode while the classifier reviews commands; the send review requires Claude Code v2.1.222 or later.” 

  8. Anthropic, „Message your other Claude Code sessions: Non-interactive sessions”, Claude Code-Dokumentation: -p-Sitzungen binden Eingangs-Sockets und erscheinen in der Liste, eine dort standardmäßig zurückgehaltene Nachricht wartet dialogExpiry ab, und unbeaufsichtigte Zustellung setzt crossSessionInbound: "accept" im eigenen --settings des Arbeiters voraus. Die Headless-Seite beschreibt den Bare-Modus unter „Headless mode”

  9. Anthropic, Claude Code v2.1.239 release notes, 21. August 2026: „Windows: cross-session messaging is now available, so Claude Code sessions across your machines can message each other with SendMessage and find each other with ListAgents, as on macOS and Linux”; „ListAgents now tells a session its own name (the one peers use to message it), and SendMessage to your own name says so instead of "no agent named …"“; „ListAgents and /list-agents now list your live teammates (previously only subagents and other sessions appeared, so a reachable teammate looked absent).” 

  10. Anthropic, Claude Code release notes v2.1.228 („Fixed cross-session messaging sometimes starting without an inbox in the first session after install or upgrade”), v2.1.232 („Type @ in the prompt to mention another Claude session by name; Claude then uses SendMessage to reach that session directly”; „Interactive sessions on one machine now keep unique names: starting or renaming a session to a name another live session already uses gives it a name-word-word variant and tells you”; „Added /config rows for "Dialog expiry" and "Messages from your other sessions" (cross-session inbound accept/hold/refuse)”; „Hardened the auto-generated cross-session messaging socket directory on shared /tmp: a pre-planted symlink or another user’s directory is now refused instead of used”), v2.1.234 („SendMessage and ListAgents now say when your account’s session list was too long to check completely, instead of treating unseen sessions as absent”), v2.1.235 („SendMessage now refuses messages too large for cross-session delivery up front instead of silently dropping them”), v2.1.236 („Added notify_when_idle to cross-session SendMessage: ask another Claude Code session on this machine to send one notice when it next goes idle — opt-in, one-shot, no polling (macOS and Linux)”; „SendMessage now refuses further messages to a session up front once a rapid burst would exceed what that session’s inbox accepts, instead of reporting them sent while they were dropped”) und v2.1.238 (Meldung abgewiesener Eingänge und verwerfender Posteingänge). Geprüft gegen die kanonische CHANGELOG.md am 25. August 2026. 

  11. Anthropic, „Sessions: Name your sessions”, Claude Code-Dokumentation. „In three cases Claude Code doesn’t rename the duplicate” (in drei Fällen benennt Claude Code das Duplikat nicht um): Es prüft keine KI-generierten Titel oder Standard-Anzeigenamen, es prüft nicht „the --name of a background or -p session at startup”, und es kann eine Sitzung auf einer früheren Version von Claude Code nicht umbenennen. 

  12. Anthropic, „Settings reference: sandbox.network.allowUnixSockets, Claude Code-Dokumentation: „List the Unix socket paths sandboxed commands can connect to on macOS. Claude Code ignores this list on Linux and WSL2, where the seccomp filter can’t inspect socket paths; use allowAllUnixSockets there instead.” Der Eintrag zu allowAllUnixSockets ergänzt, dass der seccomp-Filter unter Linux und WSL2 socket(AF_UNIX, ...)-Aufrufe blockiert, was den Schlüssel zum einzigen Weg macht, Unix-Sockets dort zu erlauben. 

Verwandte Beiträge

Claude Code Skills: Eigene Erweiterungen mit Auto-Aktivierung bauen

Bauen Sie eigene Claude Code Skills, die sich kontextabhängig automatisch aktivieren. Schritt-für-Schritt-Anleitung zu S…

14 Min. Lesezeit

Claude Code Hooks: Warum jeder meiner 95 Hooks existiert

Ich habe 95 Hooks für Claude Code gebaut. Jeder existiert, weil etwas schiefgegangen ist. Hier sind die Geschichten und …

10 Min. Lesezeit

Claude Code Hooks erklärt: Die deterministische Schicht um Ihren Agenten

Claude Code Hooks führen Shell-Befehle bei Lifecycle-Events aus — garantiert. Jedes Event, die Exit-Code-Semantik und fü…

21 Min. Lesezeit