← Alle Beitrage

Sitzungsübergreifende Nachrichten in Claude Code

Aus dem Leitfaden: Claude Code Comprehensive Guide

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, wobei v2.1.225 nachlegt und Gespräche auch namentlich eröffnen kann.

Seit v2.1.224 bindet jede interaktive Claude Code-Sitzung auf einem Mac oder einer Linux-Maschine schon beim Start einen Unix-Socket (meiner liegt unter /tmp/cc-socks/38590.sock, mit Rechten nur für den Eigentümer), und jede andere Sitzung, die Sie laufen haben, kann dort eine Textnachricht hineinlegen.1 Getragen wird die Funktion von zwei Tools: ListAgents findet heraus, welche Ihrer Sitzungen erreichbar sind, und SendMessage liefert namentlich an eine davon aus.2 Nichts zu aktivieren, nichts zu konfigurieren. Laufen beide Sitzungen auf derselben Maschine unter v2.1.224 oder neuer, können sie bereits miteinander sprechen.

TL;DR

Claude Code-Sitzungen können sich jetzt gegenseitig Nachrichten schicken – sitzungsübergreifender Nachrichtenaustausch: 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, wobei v2.1.225 nachlegt und Gespräche auch namentlich eröffnen kann.15 Eine Nachricht ist ausschließlich Klartext, niemals Gesprächsverlauf, Dateien oder Berechtigungen, und die empfangende Sitzung behandelt sie als Eingabe, nicht als Befugnis: Sie kann keine Freigaben erteilen, keine Konfiguration ändern und keine Befehle ausführen.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 schalten die Funktion jeweils lautlos ab.3

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 erweitert, sodass eine Sitzung ein Gespräch mit Ihren Remote-Control-Sitzungen auf anderen Maschinen auch eröffnen kann, wo sie vorher nur antworten durfte.45

An drei Stellen können Sie die Maschinerie sehen:

  • /list-agents (Alias /peers) listet jede Sitzung auf, die Claude erreichen kann: Subagenten innerhalb der aktuellen Sitzung, 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.1
  • /status zeigt eine Zeile Peer address mit dem eigenen Eingangs-Socket der Sitzung, mit dem Präfix uds:.1
  • CLAUDE_CODE_MESSAGING_SOCKET wird an jeden Hook und jeden Bash-Befehl exportiert und enthält den Socket-Pfad der eigenen Sitzung.6 Warum das zählt, weiter unten.

Nachgeprüft auf meiner eigenen Maschine: Eine Sitzung unter v2.1.226 listet zwei Peer-Sitzungen mit Zustand („busy”) und Alter, und die Socket-Datei trägt die Rechte srw------- – 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 myapp-3f.1 Kollidieren zwei Sitzungen im Namen, unterscheidet die Liste sie über Arbeitsverzeichnis und eine kurze Kennung.1

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. Das empfangende Claude ist angewiesen, Berechtigungseinstellungen, CLAUDE.md oder sonstige Konfiguration nie zu ändern, nur weil eine andere Sitzung darum gebeten hat.
  3. Befehle kommen als Text an. Ein /compact im Nachrichtentext ist eine Handvoll 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, zur 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. 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 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, 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 Nur Antworten

Ein Widerspruch in der Dokumentation, der Erwähnung verdient: Zum Zeitpunkt dieses Textes beschreibt die Seite von Anthropic zum sitzungsübergreifenden Nachrichtenaustausch jede maschinenübergreifende Nachricht noch als reine Antwort, während die Release Notes zu v2.1.225 sagen, SendMessage könne „jetzt namentlich ein Gespräch mit Ihren Remote-Control-Sitzungen auf anderen Maschinen eröffnen”. Die Release Notes sind neuer; die Doku-Seite hinkt dem Release nach.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: Während einer laufenden Runde wird eine Nachricht zwischen zwei Tool-Aufrufen gelesen, ein laufendes Tool nie unterbrochen, und ist die Sitzung untätig, startet sie 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 die Beispielnachricht der Dokumentation selbst – 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 das 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

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 zurückgehaltene Nachricht bleibt also zurückgehalten, ohne Weg zur Zustellung außer über eine Änderung der Einstellungen oder des Modus (v2.1.225 hat zudem behoben, dass solche Nachrichten ohne Hinweis und ohne Verfall parkten). 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_MESSAGING_SOCKET an Hooks und Bash-Befehle exportiert wird, 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 Nachtlauf, ein Git-Hook, ein CI-Wrapper – alles, was in einen Unix-Socket schreiben kann, kann jetzt eine Zeile Kontext in die Sitzung einspeisen, die es gestartet hat. Unter Linux funktioniert die Prüfung auch noch, nachdem der schreibende Prozess beendet ist; unter macOS nur, solange er noch läuft; in einem Container, in dem Claude Code PID 1 ist, schlägt die Prüfung fehl und die Nachricht fällt auf die normalen Eingangsregeln zurück.1 Für Befehle in der Sandbox muss der Socket über sandbox.network.allowUnixSockets erlaubt sein.1

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. Jeder Arbeitsablauf nach dem Muster „Sitzung A gibt frei, Sitzung B führt aus” ist ausdrücklich weggeplant. 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, oben 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 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: Wird der Befehl nicht einmal erkannt, fehlt der Sitzung die Funktion komplett; funktioniert er, kommt aber ein Versand nie an, greift etwas Engeres – eine Deny-Regel, die Eingangssteuerung des Empfängers oder ein Ziel auf einer anderen Maschine, das nur Antworten annimmt.1

Lücken bei Plattformen und Anbietern. Kein natives Windows (Linux unter WSL 2 funktioniert). 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 erwidern. Claude wird beim Senden darauf hingewiesen, und die Korrekturen in v2.1.225 haben die Adressierung so verschärft, dass ein bestätigter Empfänger auf einer anderen Maschine nie stillschweigend gegen eine gleichnamige lokale Sitzung getauscht wird.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. - 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, umgehende Sitzungen stehen von Haus aus in 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, und behalten Sie im Kopf: Eine abweisende Sitzung sieht für ihre Peers nicht anders aus.1

Quellen


  1. Anthropic, „Message your other Claude Code sessions”, Claude Code-Dokumentation. Abgerufen am 8. 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: „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.” Bestätigte Empfänger werden nie gegen gleichnamige lokale Sitzungen getauscht. 

  6. Anthropic, „Environment variables”, Claude Code-Dokumentation: CLAUDE_CODE_MESSAGING_SOCKET, exportiert bevor irgendein Hook läuft, einschließlich 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. 

  8. Anthropic, „Headless mode”, Claude Code-Dokumentation, sowie der Abschnitt zu nicht-interaktiven Sitzungen auf der Seite zum sitzungsübergreifenden Nachrichtenaustausch: -p-Sitzungen binden Eingangs-Sockets, der Bare-Modus nicht, und zurückgehaltene Nachrichten brauchen crossSessionInbound: "accept", damit sie unbeaufsichtigt zugestellt werden. 

Verwandte Beiträge

Eigene Skills für Claude Code erstellen: Ein vollständiges Tutorial

Ein Code-Review-Skill von Grund auf bauen. Verzeichnisstruktur, Frontmatter-Felder, LLM-basiertes Matching, Kontext-Budg…

11 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 …

8 Min. Lesezeit

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

Claude Code Hooks führen Shell-Befehle bei Lebenszyklus-Ereignissen aus – garantiert. Jedes Ereignis, die Exit-Code-Sema…

15 Min. Lesezeit