Gateway
Probleemoplossing
Deze pagina is het diepgaande runbook. Begin bij /help/troubleshooting als je eerst de snelle triageflow wilt.
Commandoladder
Voer deze eerst uit, in deze volgorde:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeVerwachte gezonde signalen:
openclaw gateway statustoontRuntime: running,Connectivity probe: oken een regelCapability: ....openclaw doctormeldt geen blokkerende configuratie- of serviceproblemen.openclaw channels status --probetoont live transportstatus per account en, waar ondersteund, probe-/auditresultaten zoalsworksofaudit ok.
Na een update
Gebruik dit wanneer een update is voltooid maar de Gateway offline is, kanalen leeg zijn, of modelaanroepen beginnen te mislukken met 401's.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartLet op:
Update restartinopenclaw status/openclaw status --all. Wachtende of mislukte overdrachten bevatten de volgende opdracht om uit te voeren.plugin load failed: dependency tree corrupted; run openclaw doctor --fixonder Kanalen. Dat betekent dat de kanaalconfiguratie nog bestaat, maar dat de Plugin- registratie mislukte voordat het kanaal kon laden.- provider-401's na opnieuw authenticeren.
openclaw doctor --fixcontroleert op verouderde OAuth-authschaduwen per agent en verwijdert de oude kopieën zodat alle agents het huidige gedeelde profiel gebruiken.
Split-braininstallaties en nieuwere configuratiebeveiliging
Gebruik dit wanneer een Gateway-service onverwacht stopt na een update, of logs tonen dat één openclaw-binary ouder is dan de versie die voor het laatst openclaw.json heeft geschreven.
OpenClaw markeert configuratieschrijfacties met meta.lastTouchedVersion. Alleen-lezen-opdrachten kunnen nog steeds een configuratie inspecteren die door een nieuwere OpenClaw is geschreven, maar proces- en servicemutaties weigeren door te gaan vanaf een oudere binary. Geblokkeerde acties omvatten het starten, stoppen, herstarten en verwijderen van de Gateway-service, geforceerde serviceherinstallatie, Gateway-start in servicemodus en gateway --force-poortopschoning.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionPATH repareren
Repareer PATH zodat openclaw naar de nieuwere installatie verwijst en voer de actie daarna opnieuw uit.
De Gateway-service opnieuw installeren
Installeer de bedoelde Gateway-service opnieuw vanuit de nieuwere installatie:
openclaw gateway install --forceopenclaw gateway restartVerouderde wrappers verwijderen
Verwijder verouderde systeempakketten of oude wrappervermeldingen die nog steeds naar een oude openclaw-binary wijzen.
Protocolmismatch na rollback
Gebruik dit wanneer logs protocol mismatch blijven afdrukken nadat je OpenClaw hebt gedowngraded of teruggedraaid. Dit betekent dat een oudere Gateway draait, maar dat een nieuwer lokaal clientproces nog steeds probeert opnieuw verbinding te maken met een protocolbereik dat de oudere Gateway niet ondersteunt.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followLet op:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>in Gateway-logs.Established clients:inopenclaw gateway status --deepofGateway clientsinopenclaw doctor --deep. Dit toont actieve TCP-clients die verbonden zijn met de Gateway-poort, inclusief PID's en opdrachtregels wanneer het besturingssysteem dat toestaat.- Een clientproces waarvan de opdrachtregel wijst naar de nieuwere OpenClaw-installatie of wrapper waarvan je bent teruggedraaid.
Oplossing:
- Stop of herstart het verouderde OpenClaw-clientproces dat door
gateway status --deepwordt getoond. - Herstart apps of wrappers die OpenClaw insluiten, zoals lokale dashboards, editors, app-serverhelpers of langlopende
openclaw logs --follow-shells. - Voer
openclaw gateway status --deepofopenclaw doctor --deepopnieuw uit en bevestig dat de verouderde client-PID verdwenen is.
Laat een oudere Gateway geen nieuwer incompatibel protocol accepteren. Protocolverhogingen beschermen het wire-contract; rollbackherstel is een proces-/versieopschoningsprobleem.
Skills-symlink overgeslagen als padontsnapping
Gebruik dit wanneer logs het volgende bevatten:
Skipping escaped skill path outside its configured root: ... reason=symlink-escapeOpenClaw behandelt elke Skills-root als een containmentgrens. Een symlink onder
~/.agents/skills, <workspace>/.agents/skills, <workspace>/skills of
~/.openclaw/skills wordt overgeslagen wanneer het echte doel buiten die root
uitkomt, tenzij het doel expliciet vertrouwd is.
Inspecteer de link:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadAls het doel bedoeld is, configureer dan zowel de directe Skills-root als het toegestane symlinkdoel:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Start daarna een nieuwe sessie of wacht tot de Skills-watcher ververst. Herstart de Gateway als het draaiende proces van vóór de configuratiewijziging is.
Gebruik geen brede doelen zoals ~, / of een volledige gesynchroniseerde projectmap.
Houd allowSymlinkTargets beperkt tot de echte Skills-root die vertrouwde
SKILL.md-mappen bevat.
Als Skill Workshop apply ook door die vertrouwde gesymlinkte
workspace-Skills-paden moet schrijven, schakel dan skills.workshop.allowSymlinkTargetWrites in. Houd
dit uitgeschakeld voor alleen-lezen gedeelde Skills-roots.
Gerelateerd:
Anthropic 429 extra gebruik vereist voor lange context
Gebruik dit wanneer logs/fouten bevatten: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsLet op:
- Geselecteerd Anthropic-model is een GA-geschikt 1M Claude 4.x-model, of het model heeft legacy
params.context1m: true. - Huidige Anthropic-referentie is niet geschikt voor gebruik met lange context.
- Verzoeken mislukken alleen bij lange sessies/modelruns die het 1M-contextpad nodig hebben.
Oplossingsopties:
Een standaard contextvenster gebruiken
Schakel over naar een model met standaardvenster, of verwijder legacy context1m uit oudere
modelconfiguratie die niet GA-geschikt is voor 1M-context.
Een geschikte referentie gebruiken
Gebruik een Anthropic-referentie die geschikt is voor lange-contextverzoeken, of schakel over naar een Anthropic-API-sleutel.
Fallbackmodellen configureren
Configureer fallbackmodellen zodat runs doorgaan wanneer Anthropic-lange-contextverzoeken worden geweigerd.
Gerelateerd:
Upstream 403-geblokkeerde reacties
Gebruik dit wanneer een upstream LLM-provider een generieke 403 retourneert, zoals
Your request was blocked.
Ga er niet van uit dat dit altijd een configuratieprobleem van OpenClaw is. De reactie kan komen van een upstream beveiligingslaag zoals een CDN, WAF, botbeheerregel of reverse proxy vóór een OpenAI-compatibel endpoint.
openclaw statusopenclaw gateway statusopenclaw logs --followLet op:
- meerdere modellen onder dezelfde provider falen op dezelfde manier
- HTML of generieke beveiligingstekst in plaats van een normale provider-API-fout
- beveiligingsgebeurtenissen aan providerzijde voor hetzelfde verzoekmoment
- een kleine directe
curl-probe slaagt terwijl normale SDK-vormige verzoeken mislukken
Los eerst de filtering aan providerzijde op wanneer het bewijs wijst op een WAF/CDN- blokkade. Geef de voorkeur aan een nauw afgebakende allow- of skipregel voor het API-pad dat OpenClaw gebruikt, en vermijd het uitschakelen van bescherming voor de hele site.
Gerelateerd:
Lokale OpenAI-compatibele backend slaagt voor directe probes maar agentruns mislukken
Gebruik dit wanneer:
curl ... /v1/modelswerkt- kleine directe
/v1/chat/completions-aanroepen werken - OpenClaw-modelruns alleen mislukken bij normale agentbeurten
curl http://127.0.0.1:1234/v1/modelscurl http://127.0.0.1:1234/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'openclaw infer model run --model <provider/model> --prompt "hi" --jsonopenclaw logs --followLet op:
- directe kleine aanroepen slagen, maar OpenClaw-runs mislukken alleen bij grotere prompts
model_not_found- of 404-fouten ook al werkt directe/v1/chat/completionsmet dezelfde kale model-id- backendfouten over
messages[].contentdie een string verwachten - intermitterende waarschuwingen
incomplete turn detected ... stopReason=stop payloads=0met een OpenAI-compatibele lokale backend - backendcrashes die alleen verschijnen bij grotere prompt-tokenaantallen of volledige agent-runtimeprompts
Veelvoorkomende signalen
model_not_foundmet een lokale MLX-/vLLM-achtige server → controleer ofbaseUrl/v1bevat,api"openai-completions"is voor/v1/chat/completions-backends, enmodels.providers.<provider>.models[].idde kale provider-lokale id is. Selecteer deze één keer met het providerprefix, bijvoorbeeldmlx/mlx-community/Qwen3-30B-A3B-6bit; houd de catalogusvermelding alsmlx-community/Qwen3-30B-A3B-6bit.messages[...].content: invalid type: sequence, expected a string→ backend weigert gestructureerde Chat Completions-contentdelen. Oplossing: stelmodels.providers.<provider>.models[].compat.requiresStringContent: truein.validation.keysof toegestane berichtsleutels zoals["role","content"]→ backend weigert OpenAI-stijl replaymetadata op Chat Completions-berichten. Oplossing: stelmodels.providers.<provider>.models[].compat.strictMessageKeys: truein.incomplete turn detected ... stopReason=stop payloads=0→ de backend voltooide het Chat Completions-verzoek maar retourneerde geen voor de gebruiker zichtbare assistenttekst voor die beurt. OpenClaw probeert replay-veilige lege OpenAI-compatibele beurten één keer opnieuw; aanhoudende fouten betekenen meestal dat de backend lege/niet-tekstuele content uitzendt of finale-antwoordtekst onderdrukt.- directe kleine verzoeken slagen, maar OpenClaw-agentruns mislukken met backend-/modelcrashes (bijvoorbeeld Gemma op sommige
inferrs-builds) → OpenClaw-transport is waarschijnlijk al correct; de backend faalt op de grotere promptvorm van de agentruntime. - fouten nemen af na het uitschakelen van tools maar verdwijnen niet → toolschema's maakten deel uit van de druk, maar het resterende probleem is nog steeds upstream model-/servercapaciteit of een backendbug.
Oplossingsopties
- Stel
compat.requiresStringContent: truein voor string-only Chat Completions-backends. - Stel
compat.strictMessageKeys: truein voor strikte Chat Completions-backends die alleenroleencontentop elk bericht accepteren. - Stel
compat.supportsTools: falsein voor modellen/backends die OpenClaw's toolschemaoppervlak niet betrouwbaar aankunnen. - Verlaag promptdruk waar mogelijk: kleinere workspace-bootstrap, kortere sessiegeschiedenis, lichter lokaal model of een backend met sterkere ondersteuning voor lange context.
- Als kleine directe verzoeken blijven slagen terwijl OpenClaw-agentbeurten nog steeds binnen de backend crashen, behandel dit dan als een upstream server-/modelbeperking en dien daar een repro in met de geaccepteerde payloadvorm.
Gerelateerd:
Geen antwoorden
Als kanalen actief zijn maar niets antwoordt, controleer dan routing en beleid voordat je iets opnieuw verbindt.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followLet op:
- Koppeling in behandeling voor DM-afzenders.
- Groepsvermelding-gating (
requireMention,mentionPatterns). - Mismatches in de allowlist voor kanaal/groep.
Veelvoorkomende kenmerken:
drop guild message (mention required→ groepsbericht genegeerd tot vermelding.pairing request→ afzender heeft goedkeuring nodig.blocked/allowlist→ afzender/kanaal is door beleid gefilterd.
Gerelateerd:
Connectiviteit van dashboard/control-UI
Wanneer de dashboard/control-UI geen verbinding maakt, valideer dan de URL, auth-modus en aannames over de veilige context.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonLet op:
- Juiste probe-URL en dashboard-URL.
- Mismatch in auth-modus/token tussen client en gateway.
- HTTP-gebruik waar apparaatidentiteit vereist is.
Als een lokale browser na een update geen verbinding kan maken met 127.0.0.1:18789, herstel dan eerst de lokale Gateway-service en bevestig dat deze het dashboard serveert:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789Als curl OpenClaw-HTML teruggeeft, werkt de Gateway en is het resterende probleem waarschijnlijk browsercache, een oude dieplink of verouderde tabbladstatus. Open http://127.0.0.1:18789 rechtstreeks en navigeer vanaf het dashboard. Als herstarten de service niet actief laat, voer dan openclaw gateway start uit en controleer openclaw gateway status opnieuw.
Verbindings-/auth-kenmerken
device identity required→ niet-veilige context of ontbrekende apparaatauthenticatie.origin not allowed→ browser-Originstaat niet ingateway.controlUi.allowedOrigins(of je verbindt vanaf een niet-loopback browser-origin zonder expliciete allowlist).device nonce required/device nonce mismatch→ client voltooit de op challenge gebaseerde apparaatauthenticatiestroom niet (connect.challenge+device.nonce).device signature invalid/device signature expired→ client heeft de verkeerde payload (of een verouderde timestamp) ondertekend voor de huidige handshake.AUTH_TOKEN_MISMATCHmetcanRetryWithDeviceToken=true→ client kan één vertrouwde nieuwe poging doen met gecachte apparaattoken.- Die nieuwe poging met gecachte token hergebruikt de gecachte scopeset die is opgeslagen met de gekoppelde apparaattoken. Aanroepers met expliciete
deviceToken/ explicietescopesbehouden in plaats daarvan hun aangevraagde scopeset. AUTH_SCOPE_MISMATCH→ de apparaattoken is herkend, maar de goedgekeurde scopes dekken dit verbindingsverzoek niet; koppel opnieuw of keur het aangevraagde scopecontract goed in plaats van een gedeelde Gateway-token te roteren.- Buiten dat pad voor opnieuw proberen is de auth-prioriteit voor verbinden: eerst expliciete gedeelde token/wachtwoord, daarna expliciete
deviceToken, daarna opgeslagen apparaattoken, daarna bootstrap-token. - Op het asynchrone Tailscale Serve Control UI-pad worden mislukte pogingen voor dezelfde
{scope, ip}geserialiseerd voordat de limiter de fout registreert. Twee slechte gelijktijdige nieuwe pogingen vanaf dezelfde client kunnen daarom bij de tweede pogingretry latertonen in plaats van twee gewone mismatches. too many failed authentication attempts (retry later)vanaf een browser-origin loopback-client → herhaalde fouten vanaf dezelfde genormaliseerdeOriginworden tijdelijk buitengesloten; een andere localhost-origin gebruikt een aparte bucket.- herhaalde
unauthorizedna die nieuwe poging → drift in gedeelde token/apparaattoken; vernieuw de tokenconfiguratie en keur de apparaattoken indien nodig opnieuw goed of roteer deze. gateway connect failed:→ verkeerd host-/poort-/URL-doel.
Snelle kaart voor auth-detailcodes
Gebruik error.details.code uit de mislukte connect-respons om de volgende actie te kiezen:
| Detailcode | Betekenis | Aanbevolen actie |
|---|---|---|
AUTH_TOKEN_MISSING |
Client heeft geen vereiste gedeelde token verzonden. | Plak/stel de token in de client in en probeer opnieuw. Voor dashboardpaden: openclaw config get gateway.auth.token en plak daarna in de Control UI-instellingen. |
AUTH_TOKEN_MISMATCH |
Gedeelde token kwam niet overeen met de auth-token van de gateway. | Als canRetryWithDeviceToken=true, sta dan één vertrouwde nieuwe poging toe. Nieuwe pogingen met gecachte token hergebruiken opgeslagen goedgekeurde scopes; aanroepers met expliciete deviceToken / scopes behouden aangevraagde scopes. Als het nog steeds mislukt, voer dan de checklist voor herstel van tokendrift uit. |
AUTH_DEVICE_TOKEN_MISMATCH |
Gecachte token per apparaat is verouderd of ingetrokken. | Roteer/keur de apparaattoken opnieuw goed met de apparaten-CLI, en verbind daarna opnieuw. |
AUTH_SCOPE_MISMATCH |
Apparaattoken is geldig, maar de goedgekeurde rol/scopes dekken dit verbindingsverzoek niet. | Koppel het apparaat opnieuw of keur het aangevraagde scopecontract goed; behandel dit niet als drift van gedeelde tokens. |
PAIRING_REQUIRED |
Apparaatidentiteit heeft goedkeuring nodig. Controleer error.details.reason voor not-paired, scope-upgrade, role-upgrade of metadata-upgrade, en gebruik requestId / remediationHint indien aanwezig. |
Keur openstaand verzoek goed: openclaw devices list en daarna openclaw devices approve <requestId>. Scope-/rolupgrades gebruiken dezelfde stroom nadat je de aangevraagde toegang hebt beoordeeld. |
Migratiecontrole voor apparaatauthenticatie v2:
openclaw --versionopenclaw doctoropenclaw gateway statusAls logs nonce-/handtekeningfouten tonen, werk dan de verbindende client bij en verifieer deze:
Wacht op connect.challenge
Client wacht op de door de gateway uitgegeven connect.challenge.
Onderteken de payload
Client ondertekent de aan de challenge gebonden payload.
Verzend de apparaatnonce
Client verzendt connect.params.device.nonce met dezelfde challenge-nonce.
Als openclaw devices rotate / revoke / remove onverwacht wordt geweigerd:
- gekoppelde-apparaattokensessies kunnen alleen hun eigen apparaat beheren, tenzij de aanroeper ook
operator.adminheeft openclaw devices rotate --scope ...kan alleen operatorscopes aanvragen die de aanroepersessie al heeft
Gerelateerd:
- Configuratie (Gateway-auth-modi)
- Control UI
- Apparaten
- Externe toegang
- Vertrouwde-proxy-auth
Gateway-service draait niet
Gebruik dit wanneer de service is geïnstalleerd maar het proces niet actief blijft.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # also scan system-level servicesLet op:
Runtime: stoppedmet exithints.- Mismatch in serviceconfiguratie (
Config (cli)vsConfig (service)). - Poort-/listenerconflicten.
- Extra launchd/systemd/schtasks-installaties wanneer
--deepwordt gebruikt. - Opruimhints voor
Other gateway-like services detected (best effort).
Veelvoorkomende kenmerken
Gateway start blocked: set gateway.mode=localofexisting config is missing gateway.mode→ lokale gatewaymodus is niet ingeschakeld, of het configuratiebestand is overschreven engateway.modeis verloren gegaan. Oplossing: stelgateway.mode="local"in je configuratie in, of voeropenclaw onboard --mode local/openclaw setupopnieuw uit om de verwachte lokale-modusconfiguratie opnieuw te stempelen. Als je OpenClaw via Podman uitvoert, is het standaardconfiguratiepad~/.openclaw/openclaw.json.refusing to bind gateway ... without auth→ niet-loopback bind zonder geldig Gateway-auth-pad (token/wachtwoord, of vertrouwde proxy waar geconfigureerd).another gateway instance is already listening/EADDRINUSE→ poortconflict.Other gateway-like services detected (best effort)→ er bestaan verouderde of parallelle launchd/systemd/schtasks-units. De meeste setups zouden één gateway per machine moeten houden; als je er toch meer dan één nodig hebt, isoleer dan poorten + configuratie/status/werkruimte. Zie /gateway#multiple-gateways-same-host.System-level OpenClaw gateway service detectedvan doctor → er bestaat een systemd-systeemunit terwijl de service op gebruikersniveau ontbreekt. Verwijder of schakel het duplicaat uit voordat je doctor toestaat een gebruikersservice te installeren, of stelOPENCLAW_SERVICE_REPAIR_POLICY=externalin als de systeemunit de bedoelde supervisor is.Gateway service port does not match current gateway config→ de geïnstalleerde supervisor pint nog steeds de oude--port. Voeropenclaw doctor --fixofopenclaw gateway install --forceuit en herstart daarna de Gateway-service.
Gerelateerd:
macOS-gateway reageert stilzwijgend niet meer en hervat daarna wanneer je het dashboard aanraakt
Gebruik dit wanneer kanalen (Telegram, WhatsApp, enz.) op een macOS-host minuten tot uren tegelijk stilvallen, en de gateway lijkt terug te komen zodra je de Control UI opent, via SSH inlogt of anderszins met de host interageert. Er is meestal geen duidelijk symptoom in openclaw status, omdat de gateway tegen de tijd dat je kijkt alweer leeft.
ls ~/.openclaw/logs/stability/ | tail -5openclaw gateway stability --bundle latestpmset -g log | grep -iE "sleep|wake|maintenance" | tail -50launchctl print gui/$UID/ai.openclaw.gateway | grep -E "state|last exit|runs"Let op:
- Een of meer
*-uncaught_exception.json-bundels in~/.openclaw/logs/stability/waarbijerror.codeis ingesteld op een tijdelijke netwerkcode zoalsENETDOWN,ENETUNREACH,EHOSTUNREACHofECONNREFUSED. pmset -g log-regels zoalsEntering Sleep state due to 'Maintenance Sleep'ofen0 driver is slow (msg: WillChangeState to 0)die samenvallen met de crashtijdstempels. Power Nap / Maintenance Sleep zet het wifi-stuurprogramma kort in status 0; elke uitgaandeconnect()die in dat venster valt, kan mislukken metENETDOWN, zelfs op een host die verder volledige netwerkconnectiviteit heeft.launchctl print-uitvoer metstate = not running, meerdere recenterunsen een exitcode, vooral wanneer de periode tussen de crash en de volgende start eerder rond een uur ligt dan rond seconden. macOS launchd past na een crashreeks een niet-gedocumenteerde herstartbeveiliging toe dieKeepAlive=truekan blijven negeren totdat een externe trigger, zoals interactief inloggen, een dashboardverbinding oflaunchctl kickstart, deze opnieuw activeert.
Veelvoorkomende signalen:
- Een stabiliteitsbundel waarvan
error.codeENETDOWNof een verwante code is, met een callstack die wijst naar NodenetlookupAndConnect/Socket.connect. OpenClaw2026.5.26en nieuwer classificeren deze als onschuldige tijdelijke netwerkfouten, zodat ze niet langer doorlopen naar de uncaught handler op topniveau; als je een oudere release gebruikt, upgrade dan eerst. - Lange stille perioden die precies eindigen zodra je verbinding maakt met de Control UI of via SSH inlogt op de host: de gebruikerszichtbare activiteit is wat de herstartbeveiliging van launchd opnieuw activeert, niet iets wat het dashboard met de gateway doet.
- Een
runs-aantal dat gedurende de dag oploopt zonder overeenkomstige regelreceived SIG*; shutting downin~/Library/Logs/openclaw/gateway.log: schone afsluitingen loggen een signaal; tijdelijke crashes doen dat niet.
Wat te doen:
-
Upgrade de gateway als je een release vóór
2026.5.26gebruikt. Na de upgrade worden toekomstigeENETDOWN-fouten als waarschuwingen gelogd in plaats van het proces te beëindigen. -
Verminder onderhoudsslaapactiviteit op Mac mini- / desktophosts die bedoeld zijn om als altijd-aan-servers te draaien:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0Dit vermindert de onderliggende driverflap aanzienlijk, maar elimineert deze niet volledig. Het systeem kan nog steeds bepaalde onderhoudsslaapstanden uitvoeren voor TCP-keepalive en mDNS-onderhoud, ongeacht deze vlaggen.
-
Voeg een liveness-watchdog toe, zodat een toekomstige crashreeks die door launchd wordt geparkeerd snel wordt opgemerkt:
bash # Example launchd-aware liveness check, suitable for a 5-minute cron or LaunchAgentstate=$(launchctl print gui/$UID/ai.openclaw.gateway 2>/dev/null | awk -F'= ' '/state =/ {print $2; exit}')if [ "$state" != "running" ]; then launchctl kickstart -k gui/$UID/ai.openclaw.gatewayfiHet doel is om de herstartbeveiliging extern opnieuw te activeren;
KeepAlive=truealleen is op macOS na een crashreeks niet voldoende.
Gerelateerd:
Gateway sluit af bij hoog geheugengebruik
Gebruik dit wanneer de Gateway onder belasting verdwijnt, de supervisor een OOM-achtige herstart meldt, of logs critical memory pressure bundle written vermelden.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportLet op:
Reason: diagnostic.memory.pressure.criticalin de nieuwste stabiliteitsbundel.Memory pressure:metcritical/rss_threshold,critical/heap_thresholdofcritical/rss_growth.V8 heap:-waarden dicht bij de heaplimiet.Largest session files:-items zoalsagents/<agent>/sessions/<session>.jsonlofsessions/<session>.jsonl.- Linux cgroup-geheugentellers wanneer de gateway in een container of service met geheugenlimiet draait.
Veelvoorkomende signalen:
critical memory pressure bundle writtenverschijnt kort voor de herstart → OpenClaw heeft een pre-OOM-stabiliteitsbundel vastgelegd. Inspecteer deze metopenclaw gateway stability --bundle latest.memory pressure: level=critical ... memoryPressureSnapshot=disabledverschijnt in gatewaylogs → OpenClaw heeft kritieke geheugendruk gedetecteerd, maar de pre-OOM-stabiliteitssnapshot staat uit.Largest session files:wijst naar een zeer groot geredigeerd transcriptpad → verminder de bewaarde sessiegeschiedenis, inspecteer sessiegroei, of verplaats oude transcripties uit de actieve opslag voordat je opnieuw start.- Gebruikte bytes bij
V8 heap:liggen dicht bij de heaplimiet → verlaag prompt-/sessiedruk, verminder gelijktijdig werk, of verhoog de Node-heaplimiet pas nadat je hebt bevestigd dat de workload verwacht is. Memory pressure: critical/rss_growth→ geheugen groeide snel binnen één samplingvenster. Controleer de nieuwste logs op een grote import, ontspoorde tooluitvoer, herhaalde retries of een batch wachtrijwerk van agents.- Kritieke geheugendruk verschijnt in logs maar er bestaat geen bundel → dit is de standaardinstelling. Stel
diagnostics.memoryPressureSnapshot: truein om de pre-OOM-stabiliteitsbundel vast te leggen bij toekomstige kritieke geheugendrukgebeurtenissen.
De stabiliteitsbundel bevat geen payload. Deze bevat operationeel geheugenbewijs en geredigeerde relatieve bestandspaden, geen berichttekst, webhook-bodies, referenties, tokens, cookies of ruwe sessie-id's. Voeg de diagnostiekexport toe aan bugrapporten in plaats van ruwe logs te kopiëren.
Gerelateerd:
Gateway heeft ongeldige configuratie geweigerd
Gebruik dit wanneer het opstarten van de Gateway mislukt met Invalid config of hot-reloadlogs zeggen
dat een ongeldige bewerking is overgeslagen.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorLet op:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- Een getijdstempeld bestand
openclaw.json.rejected.*naast de actieve configuratie - Een getijdstempeld bestand
openclaw.json.clobbered.*alsdoctor --fixeen kapotte directe bewerking heeft gerepareerd - OpenClaw bewaart de nieuwste 32
.clobbered.*-bestanden voor elk configuratiepad en roteert oudere bestanden
What happened
- De configuratie valideerde niet tijdens het opstarten, hot reload, of een schrijfactie die eigendom is van OpenClaw.
- Het opstarten van de Gateway faalt gesloten in plaats van
openclaw.jsonte herschrijven. - Hot reload slaat ongeldige externe bewerkingen over en houdt de huidige runtimeconfiguratie actief.
- Schrijfacties die eigendom zijn van OpenClaw weigeren ongeldige/destructieve payloads vóór commit en slaan
.rejected.*op. openclaw doctor --fixis eigenaar van reparatie. Het kan niet-JSON-prefixen verwijderen of de laatst bekende goede kopie herstellen, terwijl de geweigerde payload als.clobbered.*behouden blijft.- Wanneer er veel reparaties plaatsvinden voor één configuratiepad, roteert OpenClaw oudere
.clobbered.*-bestanden zodat de nieuwste gerepareerde payload beschikbaar blijft.
Inspect and repair
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | headdiff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"openclaw config validateopenclaw doctorCommon signatures
.clobbered.*bestaat → doctor heeft een kapotte externe bewerking behouden terwijl de actieve configuratie werd gerepareerd..rejected.*bestaat → een configuratieschrijfactie die eigendom is van OpenClaw faalde schema- of clobbercontroles vóór commit.Config write rejected:→ de schrijfactie probeerde de vereiste vorm te laten vallen, het bestand sterk te verkleinen, of ongeldige configuratie vast te leggen.config reload skipped (invalid config):→ een directe bewerking faalde validatie en werd genegeerd door de draaiende Gateway.Invalid config at ...→ opstarten faalde voordat Gateway-services werden gestart.missing-meta-vs-last-good,gateway-mode-missing-vs-last-goodofsize-drop-vs-last-good:*→ een schrijfactie die eigendom is van OpenClaw werd geweigerd omdat velden of grootte verloren gingen vergeleken met de laatst bekende goede back-up.Config last-known-good promotion skipped→ de kandidaat bevatte geredigeerde geheime placeholders zoals***.
Fix options
- Voer
openclaw doctor --fixuit om doctor prefixed/clobbered-configuratie te laten repareren of last-known-good te laten herstellen. - Kopieer alleen de bedoelde sleutels uit
.clobbered.*of.rejected.*en pas ze vervolgens toe metopenclaw config setofconfig.patch. - Voer
openclaw config validateuit voordat je opnieuw start. - Als je handmatig bewerkt, behoud dan de volledige JSON5-configuratie, niet alleen het gedeeltelijke object dat je wilde wijzigen.
Gerelateerd:
Gateway-probewaarschuwingen
Gebruik dit wanneer openclaw gateway probe iets bereikt, maar toch een waarschuwingsblok afdrukt.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostLet op:
warnings[].codeenprimaryTargetIdin JSON-uitvoer.- Of de waarschuwing gaat over SSH-fallback, meerdere gateways, ontbrekende scopes of onopgeloste auth-refs.
Veelvoorkomende signalen:
SSH tunnel failed to start; falling back to direct probes.→ SSH-configuratie faalde, maar de opdracht probeerde nog steeds directe geconfigureerde/local loopback-doelen.multiple reachable gateway identities detected→ verschillende gateways hebben geantwoord, of OpenClaw kon niet bewijzen dat bereikbare doelen dezelfde gateway zijn. Een SSH-tunnel, proxy-URL of geconfigureerde externe URL naar dezelfde gateway wordt behandeld als één gateway met meerdere transports, zelfs wanneer transportpoorten verschillen.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ verbinden werkte, maar detail-RPC is beperkt door scopes; koppel apparaatidentiteit of gebruik referenties metoperator.read.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ verbinden werkte, maar de volledige set diagnostische RPC's kreeg een timeout of faalde. Behandel dit als een bereikbare Gateway met gedegradeerde diagnostiek; vergelijkconnect.okenconnect.rpcOkin--json-uitvoer.Capability: pairing-pendingofgateway closed (1008): pairing required→ de gateway antwoordde, maar deze client moet nog worden gekoppeld/goedgekeurd vóór normale operatortoegang.- onopgeloste waarschuwingstekst voor
gateway.auth.*/gateway.remote.*SecretRef → auth-materiaal was in dit opdrachtpad niet beschikbaar voor het mislukte doel.
Gerelateerd:
Kanaal verbonden, berichten stromen niet
Als de kanaalstatus verbonden is maar de berichtenstroom dood is, focus dan op beleid, machtigingen en kanaalspecifieke bezorgregels.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsLet op:
- DM-beleid (
pairing,allowlist,open,disabled). - Groepsallowlist en vermeldingsvereisten.
- Ontbrekende kanaal-API-machtigingen/scopes.
Veelvoorkomende signalen:
mention required→ bericht genegeerd door groepsvermeldingsbeleid.pairing/ sporen van wachtende goedkeuring → afzender is niet goedgekeurd.missing_scope,not_in_channel,Forbidden,401/403→ probleem met kanaalauthenticatie/-machtigingen.
Gerelateerd:
Cron- en Heartbeat-bezorging
Als cron of heartbeat niet heeft gedraaid of niet is bezorgd, verifieer dan eerst de schedulerstatus en daarna het bezorgdoel.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followLet op:
- Cron ingeschakeld en volgende activering aanwezig.
- Status van taakuitvoeringsgeschiedenis (
ok,skipped,error). - Redenen voor overgeslagen Heartbeat (
quiet-hours,requests-in-flight,cron-in-progress,lanes-busy,alerts-disabled,empty-heartbeat-file,no-tasks-due).
Veelvoorkomende signalen
cron: scheduler disabled; jobs will not run automatically→ cron uitgeschakeld.cron: timer tick failed→ plannertick mislukt; controleer bestands-, log- en runtimefouten.heartbeat skippedmetreason=quiet-hours→ buiten het venster met actieve uren.heartbeat skippedmetreason=empty-heartbeat-file→HEARTBEAT.mdbestaat maar bevat alleen lege, commentaar-, kop-, fence- of lege-checkliststructuur, dus OpenClaw slaat de modelaanroep over.heartbeat skippedmetreason=no-tasks-due→HEARTBEAT.mdbevat eentasks:-blok, maar geen van de taken is aan de beurt bij deze tick.heartbeat: unknown accountId→ ongeldig account-id voor Heartbeat-afleverdoel.heartbeat skippedmetreason=dm-blocked→ Heartbeat-doel is herleid tot een DM-achtige bestemming terwijlagents.defaults.heartbeat.directPolicy(of een override per agent) is ingesteld opblock.
Gerelateerd:
Node gekoppeld, tool mislukt
Als een Node gekoppeld is maar tools mislukken, isoleer dan voorgrond-, toestemmings- en goedkeuringsstatus.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusLet op:
- Node online met verwachte mogelijkheden.
- OS-toestemmingen voor camera/microfoon/locatie/scherm.
- Exec-goedkeuringen en allowlist-status.
Veelvoorkomende signalen:
NODE_BACKGROUND_UNAVAILABLE→ Node-app moet op de voorgrond staan.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ ontbrekende OS-toestemming.SYSTEM_RUN_DENIED: approval required→ exec-goedkeuring in behandeling.SYSTEM_RUN_DENIED: allowlist miss→ opdracht geblokkeerd door allowlist.
Gerelateerd:
Browsertool mislukt
Gebruik dit wanneer acties van de browsertool mislukken, ook al is de Gateway zelf gezond.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorLet op:
- Of
plugins.allowis ingesteld enbrowserbevat. - Geldig pad naar browseruitvoerbaar bestand.
- Bereikbaarheid van CDP-profiel.
- Beschikbaarheid van lokale Chrome voor
existing-session- /user-profielen.
Plugin- / uitvoerbaar-bestandssignalen
unknown command "browser"ofunknown command 'browser'→ de meegeleverde browser-Plugin is uitgesloten doorplugins.allow.- browsertool ontbreekt / is niet beschikbaar terwijl
browser.enabled=true→plugins.allowsluitbrowseruit, waardoor de Plugin nooit is geladen. Failed to start Chrome CDP on port→ browserproces kon niet worden gestart.browser.executablePath not found→ geconfigureerd pad is ongeldig.browser.cdpUrl must be http(s) or ws(s)→ de geconfigureerde CDP-URL gebruikt een niet-ondersteund schema zoalsfile:offtp:.browser.cdpUrl has invalid port→ de geconfigureerde CDP-URL heeft een ongeldige poort of een poort buiten bereik.Playwright is not available in this gateway build; '<feature>' is unsupported.→ de huidige Gateway-installatie mist de kernruntimeafhankelijkheid voor de browser; installeer OpenClaw opnieuw of werk het bij en herstart daarna de Gateway. ARIA-snapshots en eenvoudige paginaschermafbeeldingen kunnen nog werken, maar navigatie, AI-snapshots, schermafbeeldingen van elementen via CSS-selectors en PDF-export blijven niet beschikbaar.
Chrome MCP- / existing-session-signalen
Could not find DevToolsActivePort for chrome→ Chrome MCP existing-session kon nog niet koppelen aan de geselecteerde browsergegevensmap. Open de inspectiepagina van de browser, schakel remote debugging in, houd de browser open, keur de eerste koppelprompt goed en probeer het opnieuw. Als aangemelde status niet vereist is, geef dan de voorkeur aan het beheerdeopenclaw-profiel.No Chrome tabs found for profile="user"→ het Chrome MCP-koppelprofiel heeft geen geopende lokale Chrome-tabbladen.Remote CDP for profile "<name>" is not reachable→ het geconfigureerde externe CDP-eindpunt is niet bereikbaar vanaf de Gateway-host.Browser attachOnly is enabled ... not reachableofBrowser attachOnly is enabled and CDP websocket ... is not reachable→ attach-only-profiel heeft geen bereikbaar doel, of het HTTP-eindpunt antwoordde maar de CDP-WebSocket kon nog steeds niet worden geopend.
Element- / schermafbeelding- / uploadsignalen
fullPage is not supported for element screenshots→ schermafbeeldingsverzoek combineerde--full-pagemet--refof--element.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ Chrome MCP- /existing-session-schermafbeeldingsaanroepen moeten paginacapture of een snapshot---refgebruiken, niet CSS---element.existing-session file uploads do not support element selectors; use ref/inputRef.→ Chrome MCP-uploadhooks hebben snapshotrefs nodig, geen CSS-selectors.existing-session file uploads currently support one file at a time.→ verstuur één upload per aanroep op Chrome MCP-profielen.existing-session dialog handling does not support timeoutMs.→ dialooghooks op Chrome MCP-profielen ondersteunen geen timeout-overrides.existing-session type does not support timeoutMs overrides.→ laattimeoutMsweg vooract:typeopprofile="user"- / Chrome MCP existing-session-profielen, of gebruik een beheerd/CDP-browserprofiel wanneer een aangepaste timeout vereist is.existing-session evaluate does not support timeoutMs overrides.→ laattimeoutMsweg vooract:evaluateopprofile="user"- / Chrome MCP existing-session-profielen, of gebruik een beheerd/CDP-browserprofiel wanneer een aangepaste timeout vereist is.response body is not supported for existing-session profiles yet.→responsebodyvereist nog steeds een beheerde browser of raw CDP-profiel.- verouderde viewport- / dark-mode- / locale- / offline-overrides op attach-only- of externe CDP-profielen → voer
openclaw browser stop --browser-profile <name>uit om de actieve controlesessie te sluiten en de Playwright/CDP-emulatiestatus vrij te geven zonder de hele Gateway opnieuw te starten.
Gerelateerd:
Als je hebt geüpgraded en er plotseling iets stukging
De meeste breuken na een upgrade zijn configuratiedrift of strengere defaults die nu worden afgedwongen.
1. Gedrag voor auth en URL-override is gewijzigd
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeWat te controleren:
- Als
gateway.mode=remote, kunnen CLI-aanroepen op remote gericht zijn terwijl je lokale service in orde is. - Expliciete
--url-aanroepen vallen niet terug op opgeslagen referenties.
Veelvoorkomende signalen:
gateway connect failed:→ verkeerd URL-doel.unauthorized→ eindpunt bereikbaar maar verkeerde auth.
2. Bind- en auth-guardrails zijn strenger
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followWat te controleren:
- Niet-loopback-binds (
lan,tailnet,custom) hebben een geldig Gateway-auth-pad nodig: gedeelde token-/wachtwoordauth, of een correct geconfigureerde niet-loopback-trusted-proxy-implementatie. - Oude sleutels zoals
gateway.tokenvervangengateway.auth.tokenniet.
Veelvoorkomende signalen:
refusing to bind gateway ... without auth→ niet-loopback-bind zonder geldig Gateway-auth-pad.Connectivity probe: failedterwijl runtime draait → Gateway leeft maar is niet toegankelijk met huidige auth/url.
3. Koppeling en apparaatidentiteitsstatus zijn gewijzigd
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorWat te controleren:
- Apparaatgoedkeuringen in behandeling voor dashboard/nodes.
- DM-koppelingsgoedkeuringen in behandeling na beleids- of identiteitswijzigingen.
Veelvoorkomende signalen:
device identity required→ apparaat-auth niet voldaan.pairing required→ afzender/apparaat moet worden goedgekeurd.
Als serviceconfiguratie en runtime na controles nog steeds niet overeenkomen, installeer dan servicemetadata opnieuw vanuit dezelfde profiel-/statusmap:
openclaw gateway install --forceopenclaw gateway restartGerelateerd: