Skip to main content
Agent Client Protocol (ACP)-sessies stellen OpenClaw in staat externe coderingsomgevingen (Claude Code, Cursor, Copilot, Droid, OpenClaw ACP, OpenCode, Gemini CLI en andere ondersteunde ACPX-omgevingen) uit te voeren via een ACP-back-endplugin. Elke gestarte sessie wordt bijgehouden als een achtergrondtaak.
ACP is het pad voor externe omgevingen, niet het standaardpad voor Codex. De systeemeigen Codex-appserverplugin beheert de bedieningselementen voor /codex ... en de standaard ingebedde runtime voor openai/gpt-* voor agentbeurten; ACP beheert de bedieningselementen voor /acp ... en sessions_spawn({ runtime: "acp" })-sessies.Als je Codex of Claude Code als externe MCP-client rechtstreeks verbinding wilt laten maken met bestaande OpenClaw-kanaalgesprekken, gebruik je openclaw mcp serve in plaats van ACP.

Welke pagina heb ik nodig?

Werkt dit direct?

Ja, na installatie van de officiële ACP-runtimeplugin:
Broncodecheck-outs kunnen de lokale werkruimteplugin extensions/acpx gebruiken na pnpm install. Voer /acp doctor uit voor een gereedheidscontrole. OpenClaw leert agents alleen over het starten van ACP wanneer ACP daadwerkelijk bruikbaar is: ACP moet zijn ingeschakeld, dispatch mag niet zijn uitgeschakeld, de huidige sessie mag niet door de sandbox zijn geblokkeerd en er moet een gezonde runtimeback-end zijn geladen. Als aan een voorwaarde niet wordt voldaan, blijven ACP-Skills en de ACP-richtlijnen voor sessions_spawn verborgen, zodat de agent geen niet-beschikbare back-end voorstelt.
  • Als plugins.allow is ingesteld, vormt dit een beperkende Plugin-inventaris en moet deze acpx bevatten, anders wordt de geïnstalleerde ACP-back-end opzettelijk geblokkeerd (/acp doctor meldt het ontbrekende item in de toelatingslijst).
  • De Codex ACP-adapter wordt geleverd met de Plugin acpx en wordt waar mogelijk lokaal gestart.
  • Codex ACP wordt uitgevoerd met een geïsoleerde CODEX_HOME. OpenClaw kopieert vertrouwde projectvertrouwensvermeldingen en veilige routeringsconfiguratie voor modellen/providers (model, model_provider, model_reasoning_effort, sandbox_mode en veilige velden van model_providers.<name>) uit de Codex-hostconfiguratie; authenticatie, meldingen en hooks blijven uitsluitend in de hostconfiguratie.
  • Andere adapters voor doelomgevingen kunnen bij het eerste gebruik op aanvraag worden opgehaald met npx.
  • Authenticatie bij de leverancier moet voor die omgeving al op de host bestaan.
  • Als de host geen npm- of netwerktoegang heeft, mislukt het ophalen van adapters bij de eerste uitvoering totdat caches vooraf zijn gevuld of de adapter op een andere manier is geïnstalleerd.
ACP start een echt extern omgevingsproces. OpenClaw beheert routering, de status van achtergrondtaken, aflevering, koppelingen en beleid; de omgeving beheert de eigen provideraanmelding, modelcatalogus, het bestandssysteemgedrag en de systeemeigen tools.Controleer het volgende voordat je OpenClaw de schuld geeft:
  • /acp doctor meldt een ingeschakelde, gezonde back-end.
  • De doel-id is toegestaan door acp.allowedAgents wanneer die toelatingslijst is ingesteld.
  • De omgevingsopdracht kan op de Gateway-host worden gestart.
  • Providerauthenticatie is aanwezig voor die omgeving (claude, codex, gemini, opencode, droid enzovoort).
  • Het geselecteerde model bestaat voor die omgeving - model-id’s zijn niet overdraagbaar tussen omgevingen.
  • De aangevraagde cwd bestaat en is toegankelijk; laat anders cwd weg en laat de back-end de standaardwaarde gebruiken.
  • De machtigingsmodus past bij het werk. Niet-interactieve sessies kunnen niet op systeemeigen machtigingsprompts klikken, dus coderingsuitvoeringen met veel schrijf- of uitvoeracties vereisen doorgaans een ACPX-machtigingsprofiel dat zonder interactie kan doorgaan.
OpenClaw-plugintools en ingebouwde OpenClaw-tools worden standaard niet beschikbaar gesteld aan ACP-omgevingen. Schakel de expliciete MCP-bruggen in ACP-agents - configuratie alleen in wanneer de omgeving die tools rechtstreeks moet aanroepen.

Ondersteunde omgevingsdoelen

Gebruik met de back-end acpx deze id’s als doelen voor /acp spawn <id> of sessions_spawn({ runtime: "acp", agentId: "<id>" }): pi (pi-acp) is ook geregistreerd in de acpx-back-end, maar is niet in dezelfde betekenis een coderingsomgeving als de andere hierboven. Aangepaste acpx-agentaliases kunnen in acpx zelf worden geconfigureerd, maar het OpenClaw- beleid controleert vóór dispatch nog steeds acp.allowedAgents en eventuele agents.entries.*.runtime.acp.agent-toewijzingen.

Draaiboek voor operators

Snelle /acp-workflow vanuit de chat:
1

Starten

/acp spawn claude --bind here, /acp spawn gemini --mode persistent --thread auto of expliciet /acp spawn codex --bind here.
2

Werken

Ga verder in het gekoppelde gesprek of de gekoppelde thread (of richt je expliciet op de sessiesleutel).
3

Status controleren

/acp status
4

Afstemmen

/acp model <provider/model>, /acp permissions <profile>, /acp timeout <seconds>.
5

Bijsturen

Zonder de context te vervangen: /acp steer tighten logging and continue.
6

Stoppen

/acp cancel (huidige beurt) of /acp close (sessie + koppelingen).
  • Spawnen maakt een ACP-runtimesessie of hervat deze, legt ACP-metadata vast in het OpenClaw-sessiearchief en kan een achtergrondtaak maken wanneer de run eigendom is van de bovenliggende taak.
  • ACP-sessies die eigendom zijn van de bovenliggende taak, worden als achtergrondwerk behandeld, zelfs wanneer de runtimesessie persistent is; voltooiing en levering tussen oppervlakken verlopen via de taakmelder van de bovenliggende taak, in plaats van als een normale, voor de gebruiker zichtbare chatsessie.
  • Taakonderhoud sluit beëindigde of verweesde eenmalige ACP-sessies die eigendom zijn van een bovenliggende taak. Persistente ACP-sessies blijven behouden zolang er een actieve gespreksbinding bestaat; verouderde persistente sessies zonder actieve binding worden gesloten, zodat ze niet stilzwijgend kunnen worden hervat nadat de bijbehorende taak is voltooid of de taakregistratie ervan is verdwenen.
  • Gebonden vervolgberichten gaan rechtstreeks naar de ACP-sessie totdat de binding wordt gesloten, de focus verliest, wordt gereset of verloopt.
  • Gateway-opdrachten blijven lokaal. /acp ..., /status en /unfocus worden nooit als normale prompttekst naar een gebonden ACP-harnas verzonden.
  • cancel breekt de actieve beurt af wanneer de backend annulering ondersteunt; de binding of sessiemetadata wordt niet verwijderd.
  • close beëindigt de ACP-sessie vanuit het perspectief van OpenClaw en verwijdert de binding. Een harnas kan zijn eigen bovenliggende geschiedenis blijven bewaren als het hervatten ondersteunt.
  • De acpx-Plugin ruimt na close de processtructuren van wrappers en adapters op die eigendom zijn van OpenClaw, en ruimt tijdens het opstarten van de Gateway verouderde, verweesde ACPX-processen op die eigendom zijn van OpenClaw.
  • Inactieve runtimeworkers komen na de ingebouwde inactiviteitsperiode in aanmerking voor opruiming; opgeslagen sessiemetadata blijft beschikbaar voor /acp sessions.
Triggers in natuurlijke taal die naar de native Codex-Plugin moeten routeren wanneer deze is ingeschakeld:
  • “Bind dit Discord-kanaal aan Codex.”
  • “Koppel deze chat aan Codex-thread <id>.”
  • “Toon Codex-threads en bind vervolgens deze.”
Native Codex-gespreksbinding is het standaardpad voor chatbesturing. Dynamische OpenClaw-tools worden nog steeds via OpenClaw uitgevoerd, terwijl native Codex- tools zoals shell/apply-patch binnen Codex worden uitgevoerd. Voor native Codex- toolgebeurtenissen injecteert OpenClaw per beurt een native hookrelay, zodat Plugin-hooks before_tool_call kunnen blokkeren, after_tool_call kunnen observeren en Codex- gebeurtenissen van PermissionRequest via OpenClaw-goedkeuringen kunnen routeren. Codex-hooks voor Stop worden doorgestuurd naar OpenClaw before_agent_finalize, waar Plugins nog één modeldoorgang kunnen aanvragen voordat Codex het antwoord voltooit. De relay blijft bewust conservatief: deze wijzigt geen argumenten van native Codex-tools en herschrijft geen Codex-threadregistraties. Gebruik expliciete ACP alleen wanneer je het ACP-runtime-/sessiemodel wilt. De ondersteuningsgrens voor ingebedde Codex is gedocumenteerd in het ondersteuningscontract voor Codex-harnas v1.
  • verouderde Codex-modelreferenties - verouderde modelroute voor Codex OAuth/abonnement, hersteld door doctor.
  • openai/* - ingebedde native Codex-app-serverruntime voor OpenAI-agentbeurten.
  • /codex ... - native Codex-gespreksbesturing.
  • /acp ... of runtime: "acp" - expliciete ACP-/acpx-besturing.
Triggers die naar de ACP-runtime moeten routeren:
  • “Voer dit uit als een eenmalige Claude Code ACP-sessie en vat het resultaat samen.”
  • “Gebruik Gemini CLI voor deze taak in een thread en houd vervolgberichten daarna in diezelfde thread.”
  • “Voer Codex via ACP uit in een achtergrondthread.”
OpenClaw kiest runtime: "acp", bepaalt het harnas agentId, bindt waar ondersteund aan het huidige gesprek of de huidige thread en routeert vervolgberichten naar die sessie totdat deze wordt gesloten of verloopt. Codex volgt dit pad alleen wanneer ACP/acpx expliciet is opgegeven of de native Codex-Plugin niet beschikbaar is voor de gevraagde bewerking.Voor sessions_spawn wordt runtime: "acp" alleen aangeboden wanneer ACP is ingeschakeld, de aanvrager niet in een sandbox wordt uitgevoerd en een ACP-runtimebackend is geladen. acp.dispatch.enabled=false pauzeert automatische ACP-threadverzending, maar verbergt of blokkeert expliciete aanroepen van sessions_spawn({ runtime: "acp" }) niet. Het is gericht op ACP-harnas-id’s zoals codex, claude, droid, gemini of opencode. Geef geen normale agent-id uit de OpenClaw-configuratie van agents_list door, tenzij die vermelding expliciet is geconfigureerd met agents.entries.*.runtime.type="acp"; gebruik anders de standaardruntime voor sub-agents. Wanneer een OpenClaw-agent is geconfigureerd met runtime.type="acp", gebruikt OpenClaw runtime.acp.agent als de onderliggende harnas-id.

ACP versus sub-agents

Gebruik ACP wanneer je een externe harnasruntime wilt. Gebruik de native Codex- app-server voor Codex-gespreksbinding en -besturing wanneer de Plugin codex is ingeschakeld. Gebruik sub-agents wanneer je gedelegeerde runs wilt die native in OpenClaw zijn. Zie ook Sub-agents.

Hoe ACP Claude Code uitvoert

Voor Claude Code via ACP bestaat de stack uit:
  1. Besturingslaag voor OpenClaw ACP-sessies.
  2. Officiële runtime-Plugin @openclaw/acpx.
  3. Claude ACP-adapter.
  4. Runtime-/sessiemechanismen aan de Claude-zijde.
ACP Claude is een harnassessie met ACP-besturing, sessiehervatting, registratie van achtergrondtaken en optionele gespreks-/threadbinding. CLI-backends zijn afzonderlijke, uitsluitend tekstuele lokale fallbackruntimes - zie CLI-backends. Voor operators geldt in de praktijk:
  • Wil je /acp spawn, bindbare sessies, runtimebesturing of persistent harnaswerk? Gebruik ACP.
  • Wil je een eenvoudige lokale tekstfallback via de onbewerkte CLI? Gebruik CLI-backends.

Gebonden sessies

Mentaal model

  • Chatoppervlak - waar mensen blijven praten (Discord-kanaal, Telegram-onderwerp, iMessage-chat).
  • ACP-sessie - de duurzame Codex-/Claude-/Gemini-runtimestatus waarnaar OpenClaw routeert.
  • Onderliggende thread/onderwerp - een optioneel extra berichtenoppervlak dat alleen door --thread ... wordt gemaakt.
  • Runtimewerkruimte - de bestandssysteemlocatie (cwd, repo-check-out, backendwerkruimte) waar het harnas wordt uitgevoerd. Onafhankelijk van het chatoppervlak.

Bindingen aan het huidige gesprek

/acp spawn <harness> --bind here koppelt het huidige gesprek vast aan de gespawnde ACP-sessie - geen onderliggende thread, hetzelfde chatoppervlak. OpenClaw blijft verantwoordelijk voor transport, authenticatie, veiligheid en levering. Vervolgberichten in dat gesprek worden naar dezelfde sessie gerouteerd; /new en /reset resetten de sessie ter plaatse; /acp close verwijdert de binding. Voorbeelden:
  • --bind here en --thread ... sluiten elkaar uit.
  • --bind here werkt alleen op kanalen die binding aan het huidige gesprek aanbieden; anders retourneert OpenClaw een duidelijk bericht dat dit niet wordt ondersteund. Bindingen blijven behouden na herstarts van de Gateway.
  • Op Discord bepaalt spawnSessions of onderliggende threads voor --thread auto|here kunnen worden gemaakt - niet voor --bind here.
  • Als je zonder --cwd naar een andere ACP-agent spawnt, neemt OpenClaw standaard de werkruimte van de doelagent over. Ontbrekende overgenomen paden (ENOENT/ENOTDIR) vallen terug op de backendstandaard; andere toegangsfouten (bijvoorbeeld EACCES) worden als spawnfouten weergegeven.
  • Gateway-beheeropdrachten blijven lokaal in gebonden gesprekken - opdrachten van /acp ... worden door OpenClaw verwerkt, zelfs wanneer normale vervolgtekst naar de gebonden ACP-sessie wordt gerouteerd; /status en /unfocus blijven ook lokaal wanneer opdrachtverwerking voor dat oppervlak is ingeschakeld.
Wanneer threadbindingen zijn ingeschakeld voor een kanaaladapter:
  • OpenClaw bindt een thread aan een ACP-doelsessie.
  • Vervolgberichten in die thread worden naar de gebonden ACP-sessie gerouteerd.
  • ACP-uitvoer wordt teruggeleverd aan dezelfde thread.
  • Focusverlies/sluiten/archiveren/inactiviteitstime-out of het verstrijken van de maximale leeftijd verwijdert de binding.
  • /acp close, /acp cancel, /acp status, /status en /unfocus zijn Gateway-opdrachten, geen prompts voor het ACP-harnas.
Vereiste functievlaggen voor threadgebonden ACP:
  • acp.enabled=true
  • acp.dispatch.enabled is standaard ingeschakeld (stel false in om automatische ACP-threadverzending te pauzeren; expliciete aanroepen van sessions_spawn({ runtime: "acp" }) blijven werken).
  • Het spawnen van threadsessies door kanaaladapters is ingeschakeld (standaard: true):
    • Discord/Telegram: session.threadBindings.spawnSessions=true
Ondersteuning voor threadbinding is adapterspecifiek. Als de actieve kanaaladapter geen threadbindingen ondersteunt, retourneert OpenClaw een duidelijk bericht dat dit niet wordt ondersteund of niet beschikbaar is.
  • Elke kanaaladapter die mogelijkheden voor sessie-/threadbinding beschikbaar stelt.
  • Huidige ingebouwde ondersteuning: Discord-threads/-kanalen, Telegram-onderwerpen (forumonderwerpen in groepen/supergroepen en DM-onderwerpen).
  • Plugin-kanalen kunnen via dezelfde bindingsinterface ondersteuning toevoegen.

Persistente kanaalbindingen

Configureer voor niet-tijdelijke workflows persistente ACP-bindingen in vermeldingen van bindings[] op het hoogste niveau.

Bindingsmodel

"acp"
Markeert een persistente ACP-gespreksbinding.
object
Identificeert het doelgesprek. Vormen per kanaal:
  • Discord-kanaal/-thread: match.channel="discord" + match.peer.id="<channelOrThreadId>"
  • Slack-kanaal/DM: match.channel="slack" + match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Geef de voorkeur aan stabiele Slack-id’s; kanaalkoppelingen komen ook overeen met antwoorden in de threads van dat kanaal.
  • Telegram-forumonderwerp: match.channel="telegram" + match.peer.id="<chatId>:topic:<topicId>"
  • WhatsApp-DM/-groep: match.channel="whatsapp" + match.peer.id="<E.164|group JID>". Gebruik E.164-nummers zoals +15555550123 voor rechtstreekse chats en WhatsApp-groeps-JID’s zoals 120363424282127706@g.us voor groepen.
  • iMessage-DM/-groep: match.channel="imessage" + match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Geef de voorkeur aan chat_id:* voor stabiele groepskoppelingen.
string
De id van de OpenClaw-agent die eigenaar is.
"persistent" | "oneshot"
Optionele ACP-overschrijving.
string
Optioneel label voor de operator.
string
Optionele werkmap van de runtime.
string
Optionele backendoverschrijving.

Standaardwaarden voor de runtime per agent

Gebruik agents.entries.*.runtime om de ACP-standaardwaarden eenmaal per agent te definiëren:
  • agents.entries.*.runtime.type="acp"
  • agents.entries.*.runtime.acp.agent (harness-id, bijvoorbeeld codex of claude)
  • agents.entries.*.runtime.acp.backend
  • agents.entries.*.runtime.acp.mode
  • agents.entries.*.runtime.acp.cwd
Voorrangsvolgorde van overschrijvingen voor aan ACP gekoppelde sessies:
  1. bindings[].acp.*
  2. agents.entries.*.runtime.acp.*
  3. Algemene ACP-standaardwaarden (bijvoorbeeld acp.backend)

Voorbeeld

Gedrag

  • OpenClaw zorgt ervoor dat de geconfigureerde ACP-sessie bestaat nadat de kanaalspecifieke toelating is voltooid en voordat de sessie wordt gebruikt.
  • Berichten in dat kanaal, onderwerp of die chat worden naar de geconfigureerde ACP-sessie gerouteerd.
  • Geconfigureerde ACP-koppelingen beheren hun sessieroute. De fan-out van kanaaluitzendingen vervangt voor een overeenkomende koppeling niet de geconfigureerde ACP-sessie.
  • In gekoppelde gesprekken stellen /new en /reset dezelfde ACP-sessiesleutel ter plaatse opnieuw in.
  • Tijdelijke runtimekoppelingen (bijvoorbeeld gemaakt door flows voor threadfocus) blijven van toepassing waar ze aanwezig zijn.
  • Bij ACP-starts tussen agents zonder expliciete cwd neemt OpenClaw de werkruimte van de doelagent over uit de agentconfiguratie.
  • Ontbrekende overgenomen werkruimtepaden vallen terug op de standaard-cwd van de backend; toegangsfouten voor bestaande paden worden als startfouten weergegeven.

ACP-sessies starten

Er zijn twee manieren om een ACP-sessie te starten:
Gebruik runtime: "acp" om een ACP-sessie vanuit een agentbeurt of toolaanroep te starten.
runtime is standaard subagent, dus stel runtime: "acp" expliciet in voor ACP-sessies. Als agentId wordt weggelaten, gebruikt OpenClaw acp.defaultAgent wanneer dit is geconfigureerd. mode: "session" vereist thread: true om een permanent gekoppeld gesprek te behouden.

Parameters van sessions_spawn

string
vereist
Initiële prompt die naar de ACP-sessie wordt verzonden.
"acp"
vereist
Moet voor ACP-sessies "acp" zijn.
string
Id van de ACP-doelharness. Valt terug op acp.defaultAgent als die is ingesteld.
boolean
standaard:"false"
Vraag waar ondersteund om de flow voor threadkoppeling.
"run" | "session"
standaard:"run"
"run" is eenmalig; "session" is permanent. Als thread: true is ingesteld en mode wordt weggelaten, kan OpenClaw afhankelijk van het runtimepad standaard permanent gedrag gebruiken. mode: "session" vereist thread: true.
string
Aangevraagde werkmap van de runtime (gevalideerd door het backend-/runtimebeleid). Als deze wordt weggelaten, neemt een ACP-start de werkruimte van de doelagent over wanneer die is geconfigureerd; ontbrekende overgenomen paden vallen terug op de standaardwaarden van de backend, terwijl daadwerkelijke toegangsfouten worden geretourneerd.
string
Label voor de operator dat in sessie-/bannertekst wordt gebruikt.
string
Hervat een bestaande ACP-sessie in plaats van een nieuwe te maken. De agent speelt zijn gespreksgeschiedenis opnieuw af via session/load. Vereist runtime: "acp".
"parent"
"parent" streamt voortgangssamenvattingen van de eerste ACP-run terug naar de aanvragende sessie als systeemgebeurtenissen. OpenClaw slaat de volledige relaygeschiedenis op in de SQLite-status van de onderliggende agent en verwijdert deze samen met de onderliggende sessie. Voortgangsstreams naar de bovenliggende sessie tonen standaard commentaar van de assistent en ACP-statusvoortgang, tenzij streaming.progress.commentary=false. Discord gebruikt voor previews naar de bovenliggende sessie ook standaard de voortgangsmodus wanneer geen streammodus is geconfigureerd. Statusvoortgang respecteert nog steeds acp.stream.tagVisibility, zodat tags zoals plan verborgen blijven tenzij ze expliciet zijn ingeschakeld.
ACP-runs met sessions_spawn gebruiken agents.defaults.subagents.runTimeoutSeconds voor hun standaardlimiet voor onderliggende beurten. De tool accepteert geen timeoutoverschrijvingen per aanroep (runTimeoutSeconds/timeoutSeconds worden afgewezen met een foutmelding dat de standaardwaarde moet worden geconfigureerd).
string
Expliciete modeloverschrijving voor de onderliggende ACP-sessie. Codex ACP-starts normaliseren OpenAI-verwijzingen zoals openai/gpt-5.4 naar de Codex ACP-opstartconfiguratie vóór session/new; slashvormen zoals openai/gpt-5.4/high stellen ook de redeneerinspanning van Codex ACP in. Wanneer weggelaten, gebruikt sessions_spawn({ runtime: "acp" }) bestaande standaardmodellen voor subagents (agents.defaults.subagents.model of agents.entries.*.subagents.model) wanneer die zijn geconfigureerd; anders gebruikt de ACP- harness zijn eigen standaardmodel. Andere harnesses moeten ACP models bekendmaken en session/set_model ondersteunen; anders mislukt OpenClaw/acpx met een duidelijke fout in plaats van stilzwijgend terug te vallen op de standaardwaarde van de doelagent.
string
Expliciete denk-/redeneerinspanning. Voor Codex ACP wordt minimal toegewezen aan een lage inspanning, worden low/medium/high/xhigh rechtstreeks toegewezen en laat off de overschrijving van de redeneerinspanning bij het opstarten weg. Wanneer dit wordt weggelaten, gebruiken ACP-starts bestaande standaardwaarden voor het denken van subagents en de modelspecifieke agents.defaults.models["provider/model"].params.thinking voor het geselecteerde model.

Koppelings- en threadmodi voor starten

Opmerkingen:
  • --bind here is voor de operator het eenvoudigste pad om „dit kanaal of deze chat door Codex te laten ondersteunen”.
  • --bind here maakt geen onderliggende thread.
  • --bind here is alleen beschikbaar op kanalen die ondersteuning bieden voor koppeling met het huidige gesprek.
  • --bind en --thread kunnen niet in dezelfde aanroep van /acp spawn worden gecombineerd.

Leveringsmodel

ACP-sessies kunnen interactieve werkruimten of achtergrondwerk in beheer van de bovenliggende sessie zijn. Het leveringspad hangt van die vorm af.
Interactieve sessies zijn bedoeld om op een zichtbaar chatoppervlak te blijven communiceren:
  • /acp spawn ... --bind here koppelt het huidige gesprek aan de ACP-sessie.
  • /acp spawn ... --thread ... koppelt een kanaalthread/-onderwerp aan de ACP-sessie.
  • Permanente, geconfigureerde bindings[].type="acp" routeren overeenkomende gesprekken naar dezelfde ACP-sessie.
Vervolgberichten in het gekoppelde gesprek worden rechtstreeks naar de ACP- sessie gerouteerd en ACP-uitvoer wordt teruggeleverd aan hetzelfde kanaal/dezelfde thread/hetzelfde onderwerp.Wat OpenClaw naar de harness verzendt:
  • Normale gebonden vervolgberichten worden als prompttekst verzonden, plus bijlagen, maar alleen wanneer de harness/backend die ondersteunt.
  • /acp-beheeropdrachten en lokale Gateway-opdrachten worden vóór ACP-dispatch onderschept.
  • Tijdens runtime gegenereerde voltooiingsgebeurtenissen worden per doel gematerialiseerd. OpenClaw-agenten krijgen de interne runtime-contextenvelop van OpenClaw; externe ACP-harnesses krijgen een gewone prompt met het resultaat van het kind en de instructie. De onbewerkte <<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>-envelop mag nooit naar externe harnesses worden verzonden of als ACP-gebruikerstranscripttekst worden opgeslagen.
  • ACP-transcriptvermeldingen gebruiken de voor de gebruiker zichtbare triggertekst of de gewone voltooiingsprompt. Interne gebeurtenismetadata blijven waar mogelijk gestructureerd in OpenClaw en worden niet behandeld als door de gebruiker geschreven chatinhoud.
Eenmalige ACP-sessies die door een andere agentrun worden gestart, zijn achtergrondkinderen, vergelijkbaar met subagenten:
  • De ouder vraagt om werk met sessions_spawn({ runtime: "acp", mode: "run" }).
  • Het kind wordt uitgevoerd in een eigen ACP-harnesssessie.
  • Kindbeurten worden uitgevoerd in dezelfde achtergrondbaan als die voor het starten van native subagenten, zodat een trage ACP-harness niet-gerelateerd werk in de hoofdsessie niet blokkeert.
  • De voltooiing wordt teruggemeld via het aankondigingspad voor taakvoltooiing. OpenClaw zet interne voltooiingsmetadata om in een gewone ACP-prompt voordat die naar een externe harness wordt verzonden, zodat harnesses geen runtime-contextmarkeringen zien die alleen voor OpenClaw bestemd zijn.
  • De ouder herschrijft het resultaat van het kind in een normale assistentstem wanneer een gebruikersgericht antwoord nuttig is.
Behandel dit pad niet als een peer-to-peerchat tussen ouder en kind. Het kind heeft al een voltooiingskanaal terug naar de ouder.
sessions_send kan na het starten een andere sessie als doel kiezen. Voor normale peersessies gebruikt OpenClaw een agent-naar-agentvervolgpad (A2A) nadat het bericht is geïnjecteerd:
  • Wacht op het antwoord van de doelsessie.
  • Laat de aanvrager en het doel eventueel een begrensd aantal vervolgbeurten uitwisselen.
  • Vraag het doel om een aankondigingsbericht te produceren.
  • Bezorg die aankondiging in het zichtbare kanaal of de zichtbare thread.
Dat A2A-pad is een terugvaloptie voor verzendingen naar peers waarbij de afzender een zichtbaar vervolgbericht nodig heeft. Het blijft ingeschakeld wanneer een niet-gerelateerde sessie een ACP-doel kan zien en berichten kan sturen, bijvoorbeeld bij ruime tools.sessions.visibility-instellingen.OpenClaw slaat het A2A-vervolg alleen over wanneer de aanvrager de ouder is van zijn eigen eenmalige ACP-kind dat door de ouder wordt beheerd. In dat geval kan A2A boven op taakvoltooiing de ouder wekken met het resultaat van het kind, het antwoord van de ouder terugsturen naar het kind en een echolus tussen ouder en kind veroorzaken. Het resultaat van sessions_send meldt voor dat beheerde kindgeval delivery.status="skipped", omdat het voltooiingspad al verantwoordelijk is voor het resultaat.
Gebruik resumeSessionId om een eerdere ACP-sessie voort te zetten in plaats van opnieuw te beginnen. De agent speelt de gespreksgeschiedenis opnieuw af via session/load, zodat deze verdergaat met de volledige context van wat eraan voorafging.
Veelvoorkomende gebruiksscenario’s:
  • Draag een Codex-sessie over van je laptop naar je telefoon: vertel je agent dat deze verder moet gaan waar je gebleven was.
  • Zet een codeersessie die je interactief in de CLI hebt gestart nu zonder gebruikersinterface voort via je agent.
  • Hervat werk dat door een herstart van de Gateway of een time-out wegens inactiviteit is onderbroken.
Opmerkingen:
  • resumeSessionId is alleen van toepassing wanneer runtime: "acp"; de standaardruntime voor subagenten negeert dit veld dat alleen voor ACP bestemd is.
  • streamTo is alleen van toepassing wanneer runtime: "acp"; de standaardruntime voor subagenten negeert dit veld dat alleen voor ACP bestemd is.
  • resumeSessionId is een hostlokale hervattings-id voor ACP/harnesses, geen OpenClaw-kanaalsessiesleutel; OpenClaw controleert vóór dispatch nog steeds het ACP-startbeleid en het beleid van de doelagent, terwijl de ACP-backend of harness verantwoordelijk is voor autorisatie om die upstream-id te laden.
  • resumeSessionId herstelt de upstream-ACP-gespreksgeschiedenis; thread en mode zijn nog steeds normaal van toepassing op de nieuwe OpenClaw-sessie die je maakt, dus mode: "session" vereist nog steeds thread: true.
  • De doelagent moet session/load ondersteunen (Codex en Claude Code doen dat).
  • Als de sessie-id niet wordt gevonden, mislukt het starten met een duidelijke foutmelding; er is geen stille terugval naar een nieuwe sessie.
Voer na een Gateway-implementatie een live end-to-endcontrole uit in plaats van op unittests te vertrouwen:
  1. Controleer de geïmplementeerde Gateway-versie en commit op de doelhost.
  2. Open een tijdelijke ACPX-brugsessie naar een live agent.
  3. Vraag die agent om sessions_spawn aan te roepen met runtime: "acp", agentId: "codex", mode: "run" en taak Reply with exactly LIVE-ACP-SPAWN-OK.
  4. Controleer accepted=yes, een echte childSessionKey en dat er geen validatiefout is.
  5. Ruim de tijdelijke brugsessie op.
Houd de gate op mode: "run" en sla streamTo: "parent" over: threadgebonden mode: "session"- en streamrelaypaden zijn afzonderlijke, uitgebreidere integratiecontroles.

Compatibiliteit met de sandbox

ACP-sessies worden momenteel uitgevoerd op de hostruntime, niet in de OpenClaw-sandbox.
Beveiligingsgrens:
  • De externe harness kan lezen/schrijven volgens zijn eigen CLI-machtigingen en de geselecteerde cwd.
  • Het sandboxbeleid van OpenClaw omvat de uitvoering van ACP-harnesses niet.
  • OpenClaw handhaaft nog steeds ACP-featuregates, toegestane agenten, sessie-eigendom, kanaalbindingen en het bezorgingsbeleid van de Gateway.
  • Gebruik runtime: "subagent" voor OpenClaw-native werk waarbij de sandbox wordt gehandhaafd.
Huidige beperkingen:
  • Als de aanvragersessie in een sandbox wordt uitgevoerd, wordt het starten van ACP geblokkeerd voor zowel sessions_spawn({ runtime: "acp" }) als /acp spawn.
  • sessions_spawn met runtime: "acp" ondersteunt sandbox: "require" niet.

Doelsessies bepalen

De meeste /acp-acties accepteren een optioneel sessiedoel (session-key, session-id of session-label). Volgorde voor het bepalen:
  1. Expliciet doelargument (of --session voor /acp steer)
    • probeert eerst de sleutel
    • daarna een UUID-vormige sessie-id
    • daarna het label
  2. Huidige threadbinding (als dit gesprek/deze thread aan een ACP-sessie is gebonden).
  3. Terugval op de huidige aanvragersessie.
Zowel bindingen van het huidige gesprek als threadbindingen doen mee aan stap 2. Als er geen doel kan worden bepaald, retourneert OpenClaw een duidelijke fout (Unable to resolve session target: ...).

ACP-bediening

Runtimebediening (spawn, cancel, steer, close, status, set-mode, set, cwd, permissions, timeout, model en reset-options) vereist een eigenaarsidentiteit van externe kanalen en operator.admin van interne Gateway-clients. Geautoriseerde afzenders die geen eigenaar zijn, kunnen nog steeds sessions, doctor, install en help gebruiken. Voor afzenders die geen eigenaar zijn, toont /acp sessions alleen de huidige gebonden sessie of aanvragersessie; eigenaarsidentiteiten en operator.admin-clients zien alle recente sessies. /acp status toont de effectieve runtimeopties plus sessie-id’s op runtime- en backendniveau. Fouten voor niet-ondersteunde bediening worden duidelijk weergegeven wanneer een backend een mogelijkheid mist. Opdrachten die doeltokens accepteren (session-key, session-id of session-label) bepalen deze via Gateway- sessiedetectie, inclusief aangepaste session.store-roots per agent. /acp sessions accepteert geen doeltoken.

Toewijzing van runtimeopties

/acp heeft gemaksopdrachten en een algemene setter. Gelijkwaardige bewerkingen:

acpx-harnas, Plugin-installatie en machtigingen

Zie ACP-agents - installatie voor de configuratie van het acpx-harnas (aliassen voor Claude Code / Codex / Gemini CLI), de MCP-bruggen voor Plugin-tools en OpenClaw-tools, en de ACP-machtigingsmodi.

Problemen oplossen

Command blocked by PreToolUse hook: Native hook relay unavailable hoort bij de systeemeigen Codex-hookrelay, niet bij ACP/acpx. Start in een gekoppelde Codex-chat een nieuwe sessie met /new of /reset; als dit eenmaal werkt en vervolgens bij de volgende systeemeigen toolaanroep terugkeert, start je de Codex-appserver of OpenClaw Gateway opnieuw in plaats van /new te herhalen. Zie Problemen met het Codex-harnas oplossen.

Gerelateerd