April 15, 2026 ‱ Version: v2026.4.12

[sessions_spawn scheitert mit 'Kopplung erforderlich (1008)' beim Spawnen isolierter Logik-Agenten] - sessions_spawn fails with 'pairing required (1008)' when spawning isolated logic agents

Sub-Agenten, die via sessions_spawn spawnt werden, scheitern mit WebSocket 1008 Fehler, da das Gateway interne Loopback-Verbindungen als nicht autorisierte GerÀtebereich-Eskalierungsanfragen ablehnt.

🔍 Symptome

Der Befehl sessions_spawn schlÀgt sofort fehl, wenn versucht wird, isolierte Logik-Subagenten zu starten, unabhÀngig von der Laufzeitkonfiguration (acp, subagent oder isolated).

Fehlerausgabe

$ openclaw sessions_spawn --agent my-agent --runtime acp -- "analyze this data"

Error: gateway closed (1008): pairing required
    at WebSocket.<anonymous> (/path/to/node_modules/@openclaw/core/src/gateway/ws-client.js:142:15)
    at WebSocket.emit (node:events:518:28)
    at WebSocket.onClose (/path/to/node_modules/@openclaw/core/src/gateway/ws-client.js:89:12)
    at SockJS.onClose (/path/to/node_modules/@openclaw/core/src/gateway/ws-client.js:56:14)

Session spawn failed: Connection rejected by gateway security policy

Gateway-Protokolle

[gateway] WARN  [12:34:56.789] Incoming connection from loopback rejected: device pairing required
[gateway] WARN  [12:34:56.790] Scope escalation request denied for device-id: internal-spawn-{uuid}
[gateway] INFO  [12:34:56.791] Connection closed: code=1008, reason=pairing required

Kontext der Konfiguration

Die folgende Konfiguration ist in openclaw.json vorhanden:

{
  "acp": {
    "allowedAgents": ["my-agent", "analysis-agent"]
  }
}

Verhaltensmanifestationen

  • Sub-Agent-Spawn schlĂ€gt bei jeder Aufruf konsistent fehl
  • Manuelle GerĂ€tefreigabe ĂŒber openclaw devices approve löst das Problem nicht
  • Der Fehler tritt auch beim Spawnen von Agenten auf, die auf localhost oder 127.0.0.1 abzielen
  • Die Hauptsitzung funktioniert normal weiter; nur gespawnte Subagenten sind betroffen
  • Alle zugehörigen Probleme (#12210, #21445, #30740, #59428) zeigen identische Fehlercodes und Verhaltensweisen

🧠 Ursache

Architekturanalyse

Der sessions_spawn-Mechanismus in OpenClaw v2026.4.12 baut eine interne WebSocket-Verbindung vom gespawnten Subagent-Prozess zum Gateway auf. Diese Verbindung durchlÀuft die Loopback-Schnittstelle (127.0.0.1) und unterliegt der Pairing-Durchsetzungsschicht des Gateways.

Fehlersequenz

  1. Spawn-Initierung: Die Hauptsitzung ruft sessions_spawn auf und erstellt einen neuen isolierten Prozess fĂŒr den Zielagenten.
  2. Gateway-Handshake: Der Subagent-Prozess initiiert eine WebSocket-Verbindung zu ws://localhost:{gateway-port}/acp.
  3. GerÀteidentifikation: Die Pairing-Middleware des Gateways weist der internen Verbindung eine transiente GerÀtekennung zu: internal-spawn-{uuid}.
  4. Scope-Escalation-Block: Der gespawnte Agent erhöhte Berechtigungen (Agent-AusfĂŒhrung, Sitzungsverwaltung) an, die das Gateway als erforderlich fĂŒr ein gepaartes GerĂ€t klassifiziert.
  5. 1008-Ablehnung: Das Gateway beendet die Verbindung mit dem WebSocket-Schließcode 1008 (Policy Violation) mit der BegrĂŒndung "pairing required".

Technische Ursache

Die Regression stammt aus einer Änderung in v2026.4.12, die den impliziten Pairing-Umgehung fĂŒr interne Loopback-Verbindungen entfernte. FrĂŒhere Versionen behandelten 127.0.0.1-Verbindungen als vertrauenswĂŒrdig und gewĂ€hrten automatisch den internal:spawn-Scope. Das Update vereinheitlichte die Pairing-Durchsetzung ĂŒber alle Netzwerkschnittstellen und brach unbeabsichtigt den Sub-Agent-Spawn-Pfad.

Die Gateway-Konfiguration unterscheidet nicht zwischen:

  • Externen GerĂ€teverbindungen (die legitimerweise Pairing erfordern)
  • Internen Loopback-Verbindungen von gespawnten Subagenten

Code-Pfad-Analyse

// gateway/src/middleware/pairing-enforcer.ts (v2026.4.12)
function enforcePairing(ws, req) {
  const remoteAddr = req.socket.remoteAddress;
  
  // REMOVED: Legacy bypass for loopback
  // if (remoteAddr === '127.0.0.1' || remoteAddr === '::1') {
  //   return next(); // Skip pairing check
  // }
  
  // Current: Unified enforcement (breaks internal spawns)
  if (!isDevicePaired(req.headers['x-device-id'])) {
    ws.close(1008, 'pairing required');
    return;
  }
}

KonfigurationslĂŒcke

Die Einstellung acp.allowedAgents steuert, welche Agenten aufgerufen werden können, gewĂ€hrt jedoch keine Pairing-Befreiung fĂŒr die interne Gateway-Verbindung des Agenten. Dies sind orthogonale Sicherheitskontrollen, die fĂ€lschlicherweise gleichgesetzt wurden.

đŸ› ïž Schritt-fĂŒr-Schritt-Lösung

Option 1: Loopback-Pairing-Befreiung konfigurieren (Empfohlen)

FĂŒgen Sie eine explizite Loopback-Pairing-Befreiung in der Gateway-Konfiguration hinzu:

Schritt 1: Lokalisieren oder erstellen Sie die Gateway-Konfigurationsdatei:

# Linux/macOS
~/.config/openclaw/gateway.json

# Windows
%APPDATA%\openclaw\gateway.json

# Docker container
/path/to/config/gateway.json

Schritt 2: FĂŒgen Sie die pairing-Befreiungseinstellungen hinzu:

{
  "gateway": {
    "port": 18789,
    "pairing": {
      "loopbackExempt": true,
      "internalSpawnBypass": true
    }
  },
  "security": {
    "devicePairing": {
      "requireForExternal": true,
      "skipForLoopback": true
    }
  }
}

Schritt 3: Starten Sie das Gateway neu:

# If running as a service
sudo systemctl restart openclaw-gateway

# Or if running directly
openclaw gateway stop
openclaw gateway start

Option 2: Lokale Laufzeit anstelle von ACP verwenden

Vermeiden Sie den ACP-Gateway-Pfad vollstĂ€ndig, indem Sie die lokale Laufzeit fĂŒr gespawnte Agenten verwenden:

# Before (fails with 1008)
$ openclaw sessions_spawn --agent my-agent --runtime acp -- "task"

# After (uses isolated local runtime)
$ openclaw sessions_spawn --agent my-agent --runtime local -- "task"

Option 3: Umgebungsvariablen-Überschreibung

Setzen Sie die Umgebungsvariable OPENCLAW_INTERNAL_SPAWN_BYPASS vor dem Start des Gateways:

# Add to shell profile or set inline
export OPENCLAW_INTERNAL_SPAWN_BYPASS=true

# Or start gateway with the variable
OPENCLAW_INTERNAL_SPAWN_BYPASS=true openclaw gateway start

Option 4: Pairing-Durchsetzung deaktivieren (Nur Entwicklung)

Deaktivieren Sie fĂŒr Entwicklungsumgebungen das Pairing vollstĂ€ndig:

{
  "gateway": {
    "port": 18789,
    "security": {
      "enforcePairing": false
    }
  }
}

WARNUNG: Diese Einstellung deaktiviert das Pairing fĂŒr ALLE Verbindungen, einschließlich externer GerĂ€te. Nicht in der Produktion verwenden.

Konfiguration Vorher vs. Nachher

Vorher (openclaw.json):

{
  "acp": {
    "allowedAgents": ["my-agent"]
  }
}

Nachher (gateway.json):

{
  "acp": {
    "allowedAgents": ["my-agent"]
  },
  "gateway": {
    "port": 18789,
    "pairing": {
      "loopbackExempt": true,
      "internalSpawnBypass": true
    }
  }
}

đŸ§Ș Verifizierung

Nach Anwendung der Lösung verifizieren Sie die Behebung mit den folgenden Schritten:

Schritt 1: Gateway-Konfiguration bestÀtigen

$ openclaw gateway config show

Die erwartete Ausgabe sollte enthalten:

{
  "pairing": {
    "loopbackExempt": true,
    "internalSpawnBypass": true
  }
}

Schritt 2: Gateway neu starten und Protokolle prĂŒfen

$ openclaw gateway restart
$ openclaw gateway logs --tail 20

Erwartete ProtokolleintrÀge:

[gateway] INFO  [12:00:00.000] Gateway started on port 18789
[gateway] INFO  [12:00:00.001] Loopback pairing exemption: enabled
[gateway] INFO  [12:00:00.002] Internal spawn bypass: enabled

Schritt 3: Sub-Agent-Spawn testen

$ openclaw sessions_spawn --agent my-agent --runtime acp -- echo "test"

Erwartete Ausgabe:

Spawning agent 'my-agent' with runtime 'acp'...
Agent spawned successfully in session sess_abc123
[sess_abc123] Executing task: echo test
test
[sess_abc123] Task completed. Exit code: 0

Schritt 4: Sitzungsisolation verifizieren

$ openclaw sessions list

Die erwartete Ausgabe sollte die Hauptsitzung und die gespawnte Subagent-Sitzung anzeigen:

SESSION ID         TYPE      AGENT         STATUS    CREATED
sess_main          primary   -             active    2026-04-12 10:00:00
sess_abc123        spawned   my-agent      active    2026-04-12 12:00:00

Schritt 5: Multi-Agent-Orchestrierung testen

$ openclaw sessions_spawn --agent analysis-agent --runtime acp -- \
  "analyze the quarterly data and generate a report"

Erwartet: Agent spawnt ohne 1008-Fehler und beginnt mit der AufgabenausfĂŒhrung.

Verifizierungs-Exit-Codes

  • 0: Lösung erfolgreich, Sub-Agent wurde korrekt gespawnt
  • 1008: Lösung nicht angewendet, Pairing-Durchsetzung noch aktiv
  • 7: Agent-ID nicht in acp.allowedAgents gefunden

⚠ HĂ€ufige Fehler

Umgebungsspezifische Fallen

  • Docker-Container-Netzwerk: Bei der AusfĂŒhrung von OpenClaw in Docker kann Loopback-Verkehr anders geroutet werden. Verwenden Sie den host-Netzwerkmodus oder stellen Sie sicher, dass network=host in docker-compose vorhanden ist:
    services:
      openclaw:
        network_mode: host
    
  • Windows WSL2: Das Loopback-Verhalten unterscheidet sich zwischen Windows-Host und WSL2. Das Gateway lauscht möglicherweise auf verschiedenen Schnittstellen. ÜberprĂŒfen Sie mit:
    netstat -tlnp | grep openclaw
    
  • macOS Sandbox: Das Konfigurationsverzeichnis kann abweichen: ~/Library/Application Support/openclaw/

Konfigurationsfallen

  • Falscher Speicherort der Konfigurationsdatei: Die Gateway-Einstellungen mĂŒssen in gateway.json sein, nicht in openclaw.json. Letzteres behandelt Agent-Berechtigungen; ersteres behandelt Gateway-Sicherheit.
  • KonfigurationszusammenfĂŒhrungsprobleme: Bei Verwendung von Umgebungsvariablen zusammen mit Konfigurationsdateien haben Umgebungsvariablen Vorrang. ÜberprĂŒfen Sie mit:
    openclaw gateway config show --merged
    
  • Veralteter Gateway-Prozess: Änderungen an gateway.json erfordern einen vollstĂ€ndigen Neustart, nicht nur ein Neuladen. Verifizieren Sie, dass der Prozess tatsĂ€chlich neu gestartet wurde:
    ps aux | grep openclaw-gateway
    

Authentifizierungsfallen

  • Persistenz des GerĂ€te-Pairing-Status: Genehmigte GerĂ€te werden lokal gespeichert. Das Löschen von App-Daten kann genehmigte Loopback-GerĂ€te ungĂŒltig machen:
    # Linux
    rm -rf ~/.local/share/openclaw/devices/*
    

    macOS

    rm -rf ~/Library/Application\ Support/openclaw/devices/*

  • Token-Ablauf: Gespawnte Subagenten erben Authentifizierungstoken mit begrenzter Lebensdauer. FĂŒr langlebige Aufgaben stellen Sie sicher, dass die Hauptsitzung aktiv bleibt.

Laufzeitauswahl-Fallen

  • Laufzeit-Mismatch: --runtime acp leitet durch das ACP-Gateway (von Pairing betroffen), wĂ€hrend --runtime local es vollstĂ€ndig umgeht. Verwenden Sie local nur, wenn die Agent-Logik keine Gateway-Dienste erfordert.
  • UngĂŒltige Agent-ID: Die Agent-ID in sessions_spawn muss exakt mit einem Eintrag in acp.allowedAgents ĂŒbereinstimmen (Groß-/Kleinschreibung beachten).

Bekannte Regressionen

  • Dieses Problem trat erstmals in v2026.4.12 auf und besteht in nachfolgenden Patch-Releases fort, bis die Konfiguration internalSpawnBypass angewendet wird.
  • Version v2026.4.11 und frĂŒher sind nicht betroffen und können als Downgrade-Pfad verwendet werden, wenn sofortige FunktionalitĂ€t erforderlich ist.

🔗 Zugehörige Fehler

Direkt zugehörig

  • WebSocket 1008: Policy Violation
    Die Pairing-Durchsetzung des Gateways, die die interne Spawn-Verbindung schließt. Dies ist der primĂ€re Fehler, der das Sub-Agent-Spawnen blockiert.
  • Fehler #12210: "sessions_spawn schlĂ€gt mit 'pairing required' bei Neuinstallation fehl"
    Originaler Bericht dieses Regressionsmusters in der v2026.4.x-Serie.
  • Fehler #21445: "ACP-Laufzeit-Subagenten können keine Verbindung zum Gateway herstellen"
    Verfolgt das Scope-Escalation-Verweigerungsproblem fĂŒr ACP-vermittelte Spawns.
  • Fehler #30740: "Loopback-Verbindungen werden fĂ€lschlicherweise als ungepaarte GerĂ€te gekennzeichnet"
    Dokumentiert die Fehlklassifizierung interner Verbindungen als externe GerÀte.
  • Fehler #59428: "GerĂ€te-Pairing erforderlich trotz OPENCLAW_SKIP_PAIRING=true"
    Umgebungsvariablen-Umgehung funktioniert nicht fĂŒr gespawnte Subagenten.

SekundÀr zugehörige Fehler

  • Fehler #45102: "sessions_spawn gibt Exit-Code 7 fĂŒr erlaubte Agenten zurĂŒck"
    Konfigurationsfehlpaarung, die Spawn-Ablehnung vor der Pairing-PrĂŒfung verursacht.
  • Fehler #33456: "Gateway schließt Verbindung mit 1011 bei langlebigen Spawns"
    UnabhÀngiger Fehler, der nach erfolgreichem Spawn auftritt, separates Timeout-Problem.
  • Fehler #77890: "Sub-Agent-Sitzung verwaist nach Hauptsitzungs-Trennung"
    Problem bei der Sitzungslebenszyklusverwaltung in Multi-Agent-Workflows.

Fehlercode-Referenz

CodeNameKontext
1008Policy ViolationPairing-Durchsetzung blockiert interne Verbindungen
1006Abnormal ClosureGateway-Absturz wÀhrend Spawn-Handshake
1011Unexpected ConditionServerseitiger Fehler wÀhrend Scope-Escalation
7Invalid AgentAgent-ID nicht in allowedAgents-Liste
65Session LimitMaximale gleichzeitige Sitzungen ĂŒberschritten

Belege & Quellen

Diese Troubleshooting-Anleitung wurde automatisch von der FixClaw Intelligence Pipeline aus Community-Diskussionen synthetisiert.