Gateway
Diagnose
openclaw doctor is de reparatie- en migratietool voor OpenClaw. Het herstelt verouderde configuratie/status, controleert de gezondheid en biedt uitvoerbare reparatiestappen.
Snel aan de slag
openclaw doctor
Headless- en automatiseringsmodi
--yes
openclaw doctor --yes
Accepteer standaardwaarden zonder prompts (inclusief reparatiestappen voor herstart/service/sandbox wanneer van toepassing).
--repair
openclaw doctor --repair
Pas aanbevolen reparaties toe zonder prompts (reparaties + herstarts waar veilig).
--repair --force
openclaw doctor --repair --force
Pas ook agressieve reparaties toe (overschrijft aangepaste supervisorconfiguraties).
--non-interactive
openclaw doctor --non-interactive
Voer uit zonder prompts en pas alleen veilige migraties toe (configuratienormalisatie + verplaatsingen van status op schijf). Slaat herstart-/service-/sandboxacties over die menselijke bevestiging vereisen. Migraties van verouderde status worden automatisch uitgevoerd wanneer ze worden gedetecteerd.
--deep
openclaw doctor --deep
Scan systeemservices op extra Gateway-installaties (launchd/systemd/schtasks).
Als je wijzigingen wilt bekijken voordat je schrijft, open dan eerst het configuratiebestand:
cat ~/.openclaw/openclaw.json
Wat het doet (samenvatting)
Gezondheid, UI en updates
- Optionele preflight-update voor git-installaties (alleen interactief).
- Versheidscontrole van het UI-protocol (bouwt Control UI opnieuw wanneer het protocolschema nieuwer is).
- Gezondheidscontrole + herstartprompt.
- Statussamenvatting van Skills (geschikt/ontbrekend/geblokkeerd) en Plugin-status.
Configuratie en migraties
- Configuratienormalisatie voor verouderde waarden.
- Migratie van talk-configuratie van verouderde platte
talk.*-velden naartalk.provider+talk.providers.<provider>. - Browsermigratiecontroles voor verouderde Chrome-extensieconfiguraties en gereedheid voor Chrome MCP.
- Waarschuwingen voor OpenCode-provideroverrides (
models.providers.opencode/models.providers.opencode-go). - Waarschuwingen voor Codex OAuth-shadowing (
models.providers.openai-codex). - Controle van OAuth TLS-vereisten voor OpenAI Codex OAuth-profielen.
- Waarschuwingen voor Plugin/tool-allowlists wanneer
plugins.allowbeperkend is, maar het toolbeleid nog steeds om wildcard- of Plugin-eigen tools vraagt. - Migratie van verouderde status op schijf (sessies/agentmap/WhatsApp-authenticatie).
- Migratie van verouderde Plugin-manifestcontractsleutels (
speechProviders,realtimeTranscriptionProviders,realtimeVoiceProviders,mediaUnderstandingProviders,imageGenerationProviders,videoGenerationProviders,webFetchProviders,webSearchProviders→contracts). - Migratie van verouderde Cron-store (
jobId,schedule.cron, velden voor levering/payload op topniveau, payloadprovider, eenvoudige fallbacktaken voornotify: trueWebhook). - Migratie van verouderd agent-runtimebeleid naar
agents.defaults.agentRuntimeenagents.list[].agentRuntime. - Opschoning van verouderde Plugin-configuratie wanneer plugins zijn ingeschakeld; wanneer
plugins.enabled=false, worden verouderde Plugin-verwijzingen behandeld als inerte containmentconfiguratie en behouden.
Status en integriteit
- Inspectie van sessievergrendelingsbestanden en opschoning van verouderde vergrendelingen.
- Reparatie van sessietranscripten voor dubbele prompt-herschrijftakken die zijn gemaakt door getroffen 2026.4.24-builds.
- Detectie van tombstones voor herstart-herstel van vastgelopen subagents, met ondersteuning voor
--fixom verouderde afgebroken herstelflags te wissen zodat het opstarten het kind niet blijft behandelen als door herstart afgebroken. - Controles op statusintegriteit en machtigingen (sessies, transcripten, statusmap).
- Controles op machtigingen van configuratiebestanden (chmod 600) wanneer lokaal uitgevoerd.
- Gezondheid van modelauthenticatie: controleert OAuth-verval, kan bijna verlopen tokens verversen en rapporteert cooldown-/uitgeschakelde statussen van auth-profielen.
- Detectie van extra werkruimtemap (
~/openclaw).
Gateway, services en supervisors
- Sandbox-imageherstel wanneer sandboxing is ingeschakeld.
- Migratie van legacy-services en extra Gateway-detectie.
- Migratie van legacy-status voor Matrix-kanalen (in
--fix- /--repair-modus). - Gateway-runtimecontroles (service geinstalleerd maar niet actief; gecachet launchd-label).
- Waarschuwingen voor kanaalstatus (gepeild vanuit de actieve Gateway).
- Kanaalspecifieke toestemmingscontroles staan onder
openclaw channels capabilities; Discord-spraakkanaaltoestemmingen worden bijvoorbeeld geaudit metopenclaw channels capabilities --channel discord --target channel:<channel-id>. - WhatsApp-responsiviteitscontroles voor verslechterde gezondheid van de Gateway-eventloop terwijl lokale TUI-clients nog actief zijn;
--fixstopt alleen geverifieerde lokale TUI-clients. - Codex-routeherstel voor legacy
openai-codex/*-modelrefs in primaire modellen, fallbacks, Heartbeat/subagent/Compaction-overschrijvingen, hooks, kanaalmodeloverschrijvingen en sessieroutepins;--fixherschrijft ze naaropenai/*en selecteertagentRuntime.id: "codex"alleen wanneer de Codex-plugin is geinstalleerd, ingeschakeld, hetcodex-harnas bijdraagt en bruikbare OAuth heeft. Anders selecteert hetagentRuntime.id: "pi". - Supervisor-configuratieaudit (launchd/systemd/schtasks) met optioneel herstel.
- Opschoning van de embedded-proxyomgeving voor Gateway-services die tijdens installatie of update shellwaarden voor
HTTP_PROXY/HTTPS_PROXY/NO_PROXYhebben vastgelegd. - Best-practicecontroles voor de Gateway-runtime (Node versus Bun, paden van versiebeheerders).
- Diagnostiek voor Gateway-poortconflicten (standaard
18789).
Authenticatie, beveiliging en koppeling
- Beveiligingswaarschuwingen voor open DM-beleid.
- Gateway-authenticatiecontroles voor lokale tokenmodus (biedt tokengeneratie wanneer er geen tokenbron bestaat; overschrijft geen token-SecretRef-configuraties).
- Detectie van problemen met apparaatkoppeling (openstaande eerste koppelverzoeken, openstaande rol-/scope-upgrades, verlopen drift in de lokale apparaat-token-cache en authenticatiedrift in gekoppelde records).
Werkruimte en shell
- systemd-lingercontrole op Linux.
- Controle van bestandsgrootte voor werkruimte-bootstrapbestanden (waarschuwingen voor afkapping/bijna-limiet voor contextbestanden).
- Gereedheidscontrole voor Skills voor de standaardagent; rapporteert toegestane Skills met ontbrekende binaries, omgevingsvariabelen, configuratie of OS-vereisten, en
--fixkan niet-beschikbare Skills uitschakelen inskills.entries. - Statuscontrole en automatische installatie/upgrade van shellaanvulling.
- Gereedheidscontrole voor embeddingprovider voor geheugenzoekopdrachten (lokaal model, externe API-sleutel of QMD-binary).
- Controles voor broninstallaties (pnpm-werkruimte komt niet overeen, ontbrekende UI-assets, ontbrekende tsx-binary).
- Schrijft bijgewerkte configuratie + wizardmetadata.
Dreams-UI-backfill en reset
De Dreams-scene in de Control UI bevat acties Backfill, Reset en Clear Grounded voor de grounded dreaming-workflow. Deze acties gebruiken Gateway doctor-achtige RPC-methoden, maar maken geen deel uit van openclaw doctor CLI-herstel/migratie.
Wat ze doen:
- Backfill scant historische
memory/YYYY-MM-DD.md-bestanden in de actieve werkruimte, voert de grounded REM-dagboekpass uit en schrijft omkeerbare backfill-items naarDREAMS.md. - Reset verwijdert alleen die gemarkeerde backfill-dagboekitems uit
DREAMS.md. - Clear Grounded verwijdert alleen voorbereide grounded-only kortetermijnitems die uit historische replay kwamen en nog geen live recall of dagelijkse ondersteuning hebben opgebouwd.
Wat ze op zichzelf niet doen:
- ze bewerken
MEMORY.mdniet - ze voeren geen volledige doctor-migraties uit
- ze bereiden niet automatisch grounded-kandidaten voor in de live kortetermijn-promotiestore, tenzij je eerst expliciet het voorbereide CLI-pad uitvoert
Als je wilt dat grounded historische replay de normale deep promotion-lane beinvloedt, gebruik dan in plaats daarvan de CLI-flow:
openclaw memory rem-backfill --path ./memory --stage-short-term
Dat bereidt grounded duurzame kandidaten voor in de kortetermijn-dreaming-store, terwijl DREAMS.md het beoordelingsoppervlak blijft.
Gedetailleerd gedrag en rationale
0. Optionele update (git-installaties)
Als dit een git-checkout is en doctor interactief wordt uitgevoerd, biedt het aan om bij te werken (fetch/rebase/build) voordat doctor wordt uitgevoerd.
1. Configuratienormalisatie
Als de configuratie legacy-waardevormen bevat (bijvoorbeeld messages.ackReaction zonder kanaalspecifieke overschrijving), normaliseert doctor deze naar het huidige schema.
Dat omvat legacy platte Talk-velden. De huidige openbare Talk-spraakconfiguratie is talk.provider + talk.providers.<provider>, en realtime spraakconfiguratie is talk.realtime.*. Doctor herschrijft oude vormen van talk.voiceId / talk.voiceAliases / talk.modelId / talk.outputFormat / talk.apiKey naar de provider-map, en herschrijft legacy realtime-selectors op topniveau (talk.mode, talk.transport, talk.brain, talk.model, talk.voice) naar talk.realtime.
Doctor waarschuwt ook wanneer plugins.allow niet leeg is en toolbeleid wildcard- of plugin-owned toolitems gebruikt. tools.allow: ["*"] matcht alleen tools van plugins die daadwerkelijk laden; het omzeilt de exclusieve plugin-allowlist niet. Doctor schrijft plugins.bundledDiscovery: "compat" voor gemigreerde legacy allowlist-configuraties om bestaand gedrag van gebundelde providers te behouden, en verwijst daarna naar de strengere instelling "allowlist".
2. Legacy-configuratiesleutelmigraties
Wanneer de configuratie verouderde sleutels bevat, weigeren andere opdrachten te draaien en vragen ze je om openclaw doctor uit te voeren.
Doctor zal:
- Uitleggen welke legacy-sleutels zijn gevonden.
- De toegepaste migratie tonen.
~/.openclaw/openclaw.jsonherschrijven met het bijgewerkte schema.
Gateway-opstart weigert legacy-configuratieformaten en vraagt je om openclaw doctor --fix uit te voeren; het herschrijft openclaw.json niet bij het opstarten. Migraties van Cron-jobstores worden ook afgehandeld door openclaw doctor --fix.
Huidige migraties:
routing.allowFrom→channels.whatsapp.allowFromrouting.groupChat.requireMention→channels.whatsapp/telegram/imessage.groups."*".requireMentionrouting.groupChat.historyLimit→messages.groupChat.historyLimitrouting.groupChat.mentionPatterns→messages.groupChat.mentionPatternschannels.telegram.requireMention→channels.telegram.groups."*".requireMention- configuraties voor geconfigureerde kanalen zonder zichtbaar antwoordbeleid →
messages.groupChat.visibleReplies: "message_tool" routing.queue→messages.queuerouting.bindings→ top-levelbindingsrouting.agents/routing.defaultAgentId→agents.list+agents.list[].default- verouderde
talk.voiceId/talk.voiceAliases/talk.modelId/talk.outputFormat/talk.apiKey→talk.provider+talk.providers.<provider> - verouderde top-level realtime Talk-selectors (
talk.mode/talk.transport/talk.brain/talk.model/talk.voice) +talk.provider/talk.providers→talk.realtime routing.agentToAgent→tools.agentToAgentrouting.transcribeAudio→tools.media.audio.modelsmessages.tts.<provider>(openai/elevenlabs/microsoft/edge) →messages.tts.providers.<provider>messages.tts.provider: "edge"enmessages.tts.providers.edge→messages.tts.provider: "microsoft"enmessages.tts.providers.microsoftchannels.discord.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.voice.tts.providers.<provider>channels.discord.accounts.<id>.voice.tts.<provider>(openai/elevenlabs/microsoft/edge) →channels.discord.accounts.<id>.voice.tts.providers.<provider>plugins.entries.voice-call.config.tts.<provider>(openai/elevenlabs/microsoft/edge) →plugins.entries.voice-call.config.tts.providers.<provider>plugins.entries.voice-call.config.tts.provider: "edge"enplugins.entries.voice-call.config.tts.providers.edge→provider: "microsoft"enproviders.microsoftplugins.entries.voice-call.config.provider: "log"→"mock"plugins.entries.voice-call.config.twilio.from→plugins.entries.voice-call.config.fromNumberplugins.entries.voice-call.config.streaming.sttProvider→plugins.entries.voice-call.config.streaming.providerplugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold→plugins.entries.voice-call.config.streaming.providers.openai.*bindings[].match.accountID→bindings[].match.accountId- Voor kanalen met benoemde
accountsmaar achterblijvende kanaalwaarden op top-level voor één account, verplaats je die account-scoped waarden naar het gepromote account dat voor dat kanaal is gekozen (accounts.defaultvoor de meeste kanalen; Matrix kan een bestaand overeenkomend benoemd/default-doel behouden) identity→agents.list[].identityagent.*→agents.defaults+tools.*(tools/elevated/exec/sandbox/subagents)agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks→agents.defaults.models+agents.defaults.model.primary/fallbacks+agents.defaults.imageModel.primary/fallbacks- verwijder
agents.defaults.llm; gebruikmodels.providers.<id>.timeoutSecondsvoor trage provider-/model-time-outs browser.ssrfPolicy.allowPrivateNetwork→browser.ssrfPolicy.dangerouslyAllowPrivateNetworkbrowser.profiles.*.driver: "extension"→"existing-session"- verwijder
browser.relayBindHost(verouderde relay-instelling voor extensies) - verouderde
models.providers.*.api: "openai"→"openai-completions"(bij het opstarten van de Gateway worden providers waarvanapiis ingesteld op een toekomstige of onbekende enumwaarde ook overgeslagen in plaats van gesloten te falen)
Doctor-waarschuwingen bevatten ook account-default-richtlijnen voor kanalen met meerdere accounts:
- Als twee of meer
channels.<channel>.accounts-items zijn geconfigureerd zonderchannels.<channel>.defaultAccountofaccounts.default, waarschuwt doctor dat fallback-routering een onverwacht account kan kiezen. - Als
channels.<channel>.defaultAccountis ingesteld op een onbekende account-ID, waarschuwt doctor en toont het de geconfigureerde account-ID's.
2b. OpenCode-provideroverschrijvingen
Als je models.providers.opencode, opencode-zen of opencode-go handmatig hebt toegevoegd, overschrijft dit de ingebouwde OpenCode-catalogus van @mariozechner/pi-ai. Daardoor kunnen modellen naar de verkeerde API worden geforceerd of kosten op nul worden gezet. Doctor waarschuwt zodat je de overschrijving kunt verwijderen en API-routering + kosten per model kunt herstellen.
2c. Browsermigratie en Chrome MCP-gereedheid
Als je browserconfiguratie nog naar het verwijderde Chrome-extensiepad verwijst, normaliseert doctor die naar het huidige host-local Chrome MCP-koppelmodel:
browser.profiles.*.driver: "extension"wordt"existing-session"browser.relayBindHostwordt verwijderd
Doctor controleert ook het host-local Chrome MCP-pad wanneer je defaultProfile: "user" of een geconfigureerd existing-session-profiel gebruikt:
- controleert of Google Chrome op dezelfde host is geïnstalleerd voor standaardprofielen met automatische verbinding
- controleert de gedetecteerde Chrome-versie en waarschuwt wanneer die lager is dan Chrome 144
- herinnert je eraan remote debugging in de browserinspectiepagina in te schakelen (bijvoorbeeld
chrome://inspect/#remote-debugging,brave://inspect/#remote-debuggingofedge://inspect/#remote-debugging)
Doctor kan de Chrome-instelling niet voor je inschakelen. Host-local Chrome MCP vereist nog steeds:
- een Chromium-gebaseerde browser 144+ op de gateway-/node-host
- de browser die lokaal draait
- remote debugging ingeschakeld in die browser
- goedkeuring van de eerste toestemmingsprompt voor koppelen in de browser
Gereedheid hier gaat alleen over lokale koppelvereisten. Existing-session behoudt de huidige Chrome MCP-routelimieten; geavanceerde routes zoals responsebody, PDF-export, downloadonderschepping en batchacties vereisen nog steeds een beheerde browser of raw CDP-profiel.
Deze controle is niet van toepassing op Docker-, sandbox-, remote-browser- of andere headless flows. Die blijven raw CDP gebruiken.
2d. OAuth TLS-vereisten
Wanneer een OpenAI Codex OAuth-profiel is geconfigureerd, peilt doctor het OpenAI-autorisatie-eindpunt om te verifiëren dat de lokale Node/OpenSSL TLS-stack de certificaatketen kan valideren. Als de probe mislukt met een certificaatfout (bijvoorbeeld UNABLE_TO_GET_ISSUER_CERT_LOCALLY, verlopen certificaat of zelfondertekend certificaat), print doctor platformspecifieke herstelrichtlijnen. Op macOS met een Homebrew Node is de oplossing meestal brew postinstall ca-certificates. Met --deep wordt de probe uitgevoerd, zelfs als de gateway gezond is.
2e. Codex OAuth-provideroverschrijvingen
Als je eerder verouderde OpenAI-transportinstellingen onder models.providers.openai-codex hebt toegevoegd, kunnen die het ingebouwde Codex OAuth-providerpad overschaduwen dat nieuwere releases automatisch gebruiken. Doctor waarschuwt wanneer het die oude transportinstellingen naast Codex OAuth ziet, zodat je de verouderde transportoverschrijving kunt verwijderen of herschrijven en het ingebouwde routerings-/fallbackgedrag kunt terugkrijgen. Aangepaste proxies en overschrijvingen met alleen headers worden nog steeds ondersteund en activeren deze waarschuwing niet.
2f. Codex-routereparatie
Doctor controleert op verouderde openai-codex/*-modelrefs. Native Codex-harnessroutering gebruikt canonieke openai/*-modelrefs; OpenAI-agentbeurten lopen via de Codex app-server-harness in plaats van via het OpenClaw PI OpenAI-pad.
In de modus --fix / --repair herschrijft doctor betrokken refs voor standaardagents en per-agent refs, inclusief primaire modellen, fallbacks, heartbeat-/subagent-/compaction-overschrijvingen, hooks, kanaalmodeloverschrijvingen en verouderde persistente sessieroutestatus:
openai-codex/gpt-*wordtopenai/gpt-*.- De overeenkomende agentruntime wordt alleen
agentRuntime.id: "codex"wanneer Codex is geïnstalleerd, ingeschakeld, decodex-harness bijdraagt en bruikbare OAuth heeft. - Anders wordt de overeenkomende agentruntime
agentRuntime.id: "pi". - Bestaande lijsten met model-fallbacks blijven behouden met hun verouderde items herschreven; gekopieerde instellingen per model worden verplaatst van de verouderde sleutel naar de canonieke
openai/*-sleutel. - Persistente sessie-
modelProvider/providerOverride,model/modelOverride, fallbackmeldingen, auth-profielpinnen en Codex-harnesspinnen worden gerepareerd in alle gevonden agentsessie-stores. /codex ...betekent "een native Codex-gesprek vanuit chat beheren of binden."/acp ...ofruntime: "acp"betekent "de externe ACP/acpx-adapter gebruiken."
2g. Sessieroute-opschoning
Doctor scant ook gevonden agentsessie-stores op verouderde automatisch aangemaakte routestatus nadat je geconfigureerde modellen of runtime hebt verplaatst weg van een route die eigendom is van een plugin, zoals Codex.
openclaw doctor --fix kan automatisch aangemaakte verouderde status wissen, zoals modelOverrideSource: "auto"-modelpinnen, runtimemodelmetadata, vastgezette harness-ID's, CLI-sessiebindingen en automatische auth-profieloverschrijvingen wanneer hun eigenaarroute niet langer is geconfigureerd. Expliciete gebruikers- of verouderde sessiemodelkeuzes worden gerapporteerd voor handmatige beoordeling en blijven onaangeroerd; wissel ze met /model ..., /new of reset de sessie wanneer die route niet langer bedoeld is.
3. Verouderde statusmigraties (schijfindeling)
Doctor kan oudere indelingen op schijf migreren naar de huidige structuur:
- Sessie-store + transcripties:
- van
~/.openclaw/sessions/naar~/.openclaw/agents/<agentId>/sessions/
- van
- Agentmap:
- van
~/.openclaw/agent/naar~/.openclaw/agents/<agentId>/agent/
- van
- WhatsApp-authstatus (Baileys):
- van verouderde
~/.openclaw/credentials/*.json(behalveoauth.json) - naar
~/.openclaw/credentials/whatsapp/<accountId>/...(standaardaccount-ID:default)
- van verouderde
Deze migraties zijn best-effort en idempotent; doctor geeft waarschuwingen wanneer het verouderde mappen als back-ups achterlaat. De Gateway/CLI migreert de verouderde sessies + agentmap ook automatisch bij het opstarten, zodat geschiedenis/auth/modellen in het pad per agent terechtkomen zonder handmatige doctor-run. WhatsApp-auth wordt bewust alleen via openclaw doctor gemigreerd. Normalisatie van Talk-provider/provider-map vergelijkt nu op structurele gelijkheid, zodat verschillen die alleen uit sleutelvolgorde bestaan niet langer herhaalde no-op-wijzigingen door doctor --fix activeren.
3a. Verouderde pluginmanifestmigraties
Doctor scant alle geïnstalleerde pluginmanifesten op verouderde top-level capability-sleutels (speechProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, mediaUnderstandingProviders, imageGenerationProviders, videoGenerationProviders, webFetchProviders, webSearchProviders). Wanneer die worden gevonden, biedt het aan ze naar het contracts-object te verplaatsen en het manifestbestand in-place te herschrijven. Deze migratie is idempotent; als de sleutel contracts al dezelfde waarden heeft, wordt de verouderde sleutel verwijderd zonder de gegevens te dupliceren.
3b. Verouderde cron-store-migraties
Doctor controleert ook de cron-job-store (standaard ~/.openclaw/cron/jobs.json, of cron.store wanneer overschreven) op oude jobvormen die de scheduler nog steeds accepteert voor compatibiliteit.
Huidige cron-opschoningen omvatten:
jobId→idschedule.cron→schedule.expr- top-level payloadvelden (
message,model,thinking, ...) →payload - top-level delivery-velden (
deliver,channel,to,provider, ...) →delivery - payload-
provider-delivery-aliassen → explicietedelivery.channel - eenvoudige verouderde
notify: truewebhook-fallbackjobs → explicietedelivery.mode="webhook"metdelivery.to=cron.webhook
Doctor migreert notify: true-taken alleen automatisch wanneer dat kan zonder het gedrag te wijzigen. Als een taak legacy notify-fallback combineert met een bestaande niet-webhook-aflevermodus, geeft doctor een waarschuwing en laat die taak over voor handmatige beoordeling.
Op Linux waarschuwt doctor ook wanneer de crontab van de gebruiker nog steeds legacy ~/.openclaw/bin/ensure-whatsapp.sh aanroept. Dat host-lokale script wordt niet onderhouden door de huidige OpenClaw en kan onterechte Gateway inactive-berichten naar ~/.openclaw/logs/whatsapp-health.log schrijven wanneer cron de systemd-gebruikersbus niet kan bereiken. Verwijder de verouderde crontab-vermelding met crontab -e; gebruik openclaw channels status --probe, openclaw doctor en openclaw gateway status voor actuele healthchecks.
3c. Sessievergrendeling opschonen
Doctor scant elke agentsessiemap op verouderde write-lock-bestanden — bestanden die zijn achtergebleven toen een sessie abnormaal werd afgesloten. Voor elk gevonden vergrendelingsbestand rapporteert het: het pad, de PID, of de PID nog leeft, de leeftijd van de vergrendeling en of deze als verouderd wordt beschouwd (dode PID of ouder dan 30 minuten). In --fix- / --repair-modus verwijdert het verouderde vergrendelingsbestanden automatisch; anders drukt het een opmerking af en instrueert het je om opnieuw uit te voeren met --fix.
3d. Transcriptvertakking van sessie repareren
Doctor scant agentsessie-JSONL-bestanden op de gedupliceerde vertakkingsvorm die is ontstaan door de prompttranscript-herschrijffout van 2026.4.24: een verlaten gebruikersbeurt met interne runtimecontext van OpenClaw plus een actieve sibling met dezelfde zichtbare gebruikersprompt. In --fix- / --repair-modus maakt doctor naast het origineel een back-up van elk getroffen bestand en herschrijft het transcript naar de actieve vertakking, zodat Gateway-geschiedenis en geheugenlezers geen dubbele beurten meer zien.
4. Integriteitscontroles van state (sessiepersistentie, routering en veiligheid)
De state-map is de operationele hersenstam. Als die verdwijnt, verlies je sessies, referenties, logs en configuratie (tenzij je elders back-ups hebt).
Doctor controleert:
- State-map ontbreekt: waarschuwt voor catastrofaal state-verlies, vraagt om de map opnieuw te maken en herinnert je eraan dat het ontbrekende gegevens niet kan herstellen.
- Machtigingen voor state-map: verifieert schrijfbaarheid; biedt aan om machtigingen te repareren (en geeft een
chown-hint wanneer een mismatch in eigenaar/groep wordt gedetecteerd). - macOS-cloudgesynchroniseerde state-map: waarschuwt wanneer state onder iCloud Drive (
~/Library/Mobile Documents/com~apple~CloudDocs/...) of~/Library/CloudStorage/...wordt gevonden, omdat sync-backed paden tragere I/O en lock-/sync-races kunnen veroorzaken. - Linux SD- of eMMC-state-map: waarschuwt wanneer state naar een
mmcblk*-mountbron verwijst, omdat willekeurige I/O op SD of eMMC trager kan zijn en sneller kan slijten bij sessie- en referentieschrijfacties. - Sessiemappen ontbreken:
sessions/en de sessiestoremap zijn vereist om geschiedenis te bewaren enENOENT-crashes te vermijden. - Transcriptmismatch: waarschuwt wanneer recente sessievermeldingen ontbrekende transcriptbestanden hebben.
- Hoofdsessie "1-line JSONL": markeert wanneer het hoofdtranscript slechts één regel heeft (geschiedenis stapelt zich niet op).
- Meerdere state-mappen: waarschuwt wanneer meerdere
~/.openclaw-mappen bestaan in home-mappen of wanneerOPENCLAW_STATE_DIRergens anders naar wijst (geschiedenis kan tussen installaties worden opgesplitst). - Herinnering voor externe modus: als
gateway.mode=remote, herinnert doctor je eraan om het op de externe host uit te voeren (de state leeft daar). - Machtigingen voor configuratiebestand: waarschuwt als
~/.openclaw/openclaw.jsonleesbaar is voor groep/wereld en biedt aan dit aan te scherpen naar600.
5. Modelauthenticatiegezondheid (OAuth-verval)
Doctor inspecteert OAuth-profielen in de auth-store, waarschuwt wanneer tokens bijna verlopen of verlopen zijn, en kan ze vernieuwen wanneer dat veilig is. Als het Anthropic OAuth-/tokenprofiel verouderd is, stelt het een Anthropic API-sleutel of het Anthropic setup-tokenpad voor. Vernieuwingsprompts verschijnen alleen wanneer interactief wordt uitgevoerd (TTY); --non-interactive slaat vernieuwingspogingen over.
Wanneer een OAuth-vernieuwing permanent mislukt (bijvoorbeeld refresh_token_reused, invalid_grant, of een provider die zegt dat je opnieuw moet inloggen), rapporteert doctor dat herauthenticatie vereist is en drukt het de exacte opdracht openclaw models auth login --provider ... af om uit te voeren.
Doctor rapporteert ook auth-profielen die tijdelijk onbruikbaar zijn door:
- korte cooldowns (ratelimits/time-outs/authenticatiefouten)
- langere uitschakelingen (facturatie-/tegoedfouten)
6. Modelvalidatie voor hooks
Als hooks.gmail.model is ingesteld, valideert doctor de modelreferentie aan de hand van de catalogus en allowlist en waarschuwt het wanneer deze niet kan worden opgelost of niet is toegestaan.
7. Sandboximage repareren
Wanneer sandboxing is ingeschakeld, controleert doctor Docker-images en biedt het aan om te bouwen of over te schakelen naar legacy namen als de huidige image ontbreekt.
7b. Plugin-installatie opschonen
Doctor verwijdert legacy door OpenClaw gegenereerde staging-state voor plugin-afhankelijkheden in openclaw doctor --fix- / openclaw doctor --repair-modus. Dit dekt verouderde gegenereerde afhankelijkheidsroots, oude install-stage-mappen, package-lokale resten van eerdere reparatiecode voor afhankelijkheden van gebundelde plugins, en verweesde of herstelde beheerde npm-kopieën van gebundelde @openclaw/*-plugins die het huidige gebundelde manifest kunnen overschaduwen.
Doctor kan ook ontbrekende downloadbare plugins opnieuw installeren wanneer configuratie ernaar verwijst maar het lokale pluginregister ze niet kan vinden. Voorbeelden zijn materiële plugins.entries, geconfigureerde kanaal-/provider-/zoekinstellingen en geconfigureerde agent-runtimes. Tijdens package-updates vermijdt doctor het uitvoeren van pakketmanager-pluginreparatie terwijl het core-package wordt vervangen; voer na de update opnieuw openclaw doctor --fix uit als een geconfigureerde plugin nog steeds herstel nodig heeft. Gateway-startup en configuratieherlading voeren geen pakketmanagers uit; plugininstallaties blijven expliciet doctor-/install-/update-werk.
8. Gateway-servicemigraties en opschoonhints
Doctor detecteert legacy Gateway-services (launchd/systemd/schtasks) en biedt aan deze te verwijderen en de OpenClaw-service te installeren met de huidige Gateway-poort. Het kan ook scannen op extra Gateway-achtige services en opschoonhints afdrukken. Profielbenoemde OpenClaw Gateway-services worden als eersteklas beschouwd en worden niet gemarkeerd als "extra."
Op Linux installeert doctor niet automatisch een tweede service op gebruikersniveau als de Gateway-service op gebruikersniveau ontbreekt maar er een OpenClaw Gateway-service op systeemniveau bestaat. Inspecteer met openclaw gateway status --deep of openclaw doctor --deep, verwijder daarna het duplicaat of stel OPENCLAW_SERVICE_REPAIR_POLICY=external in wanneer een systeem-supervisor de Gateway-levenscyclus beheert.
8b. Startup Matrix-migratie
Wanneer een Matrix-kanaalaccount een wachtende of uitvoerbare legacy state-migratie heeft, maakt doctor (in --fix- / --repair-modus) een pre-migratiesnapshot en voert daarna de best-effort migratiestappen uit: legacy Matrix-state-migratie en voorbereiding van legacy versleutelde state. Beide stappen zijn niet-fataal; fouten worden gelogd en startup gaat door. In alleen-lezenmodus (openclaw doctor zonder --fix) wordt deze controle volledig overgeslagen.
8c. Apparaatkoppeling en auth-drift
Doctor inspecteert nu de status van apparaatkoppeling als onderdeel van de normale health-pass.
Wat het rapporteert:
- wachtende eerste koppelingsverzoeken
- wachtende rolupgrades voor al gekoppelde apparaten
- wachtende scope-upgrades voor al gekoppelde apparaten
- public-key mismatch-reparaties waarbij de apparaat-id nog steeds overeenkomt maar de apparaatidentiteit niet langer overeenkomt met het goedgekeurde record
- gekoppelde records zonder actief token voor een goedgekeurde rol
- gekoppelde tokens waarvan de scopes buiten de goedgekeurde koppelingsbaseline zijn verschoven
- lokaal gecachete device-token-vermeldingen voor de huidige machine die dateren van vóór een tokenrotatie aan Gateway-zijde of verouderde scopemetadata bevatten
Doctor keurt koppelingsverzoeken niet automatisch goed en roteert apparaattokens niet automatisch. Het drukt in plaats daarvan de exacte volgende stappen af:
- inspecteer wachtende verzoeken met
openclaw devices list - keur het exacte verzoek goed met
openclaw devices approve <requestId> - roteer een vers token met
openclaw devices rotate --device <deviceId> --role <role> - verwijder een verouderd record en keur het opnieuw goed met
openclaw devices remove <deviceId>
Dit sluit het veelvoorkomende gat "al gekoppeld maar nog steeds pairing required": doctor onderscheidt nu eerste koppeling van wachtende rol-/scope-upgrades en van verouderde token-/apparaatidentiteit-drift.
9. Beveiligingswaarschuwingen
Doctor geeft waarschuwingen wanneer een provider openstaat voor DM's zonder allowlist, of wanneer een beleid op een gevaarlijke manier is geconfigureerd.
10. systemd linger (Linux)
Als het als systemd-gebruikersservice draait, zorgt doctor ervoor dat lingering is ingeschakeld zodat de Gateway actief blijft na uitloggen.
11. Werkruimtestatus (Skills, plugins en legacy mappen)
Doctor drukt een samenvatting af van de werkruimtestatus voor de standaardagent:
- Skills-status: telt geschikte, missing-requirements- en allowlist-geblokkeerde skills.
- Legacy werkruimtemappen: waarschuwt wanneer
~/openclawof andere legacy werkruimtemappen naast de huidige werkruimte bestaan. - Plugin-status: telt ingeschakelde/uitgeschakelde/foutieve plugins; vermeldt plugin-ID's voor eventuele fouten; rapporteert capaciteiten van bundelplugins.
- Plugin-compatibiliteitswaarschuwingen: markeert plugins die compatibiliteitsproblemen hebben met de huidige runtime.
- Plugin-diagnostiek: toont eventuele laad-tijdwaarschuwingen of fouten die door het pluginregister zijn uitgegeven.
11b. Grootte van bootstrapbestand
Doctor controleert of werkruimte-bootstrapbestanden (bijvoorbeeld AGENTS.md, CLAUDE.md of andere geïnjecteerde contextbestanden) dicht bij of boven het geconfigureerde tekenbudget zitten. Het rapporteert per bestand ruwe versus geïnjecteerde tekentellingen, truncatiepercentage, truncatieoorzaak (max/file of max/total) en totale geïnjecteerde tekens als fractie van het totale budget. Wanneer bestanden worden afgekapt of dicht bij de limiet zitten, drukt doctor tips af voor het afstemmen van agents.defaults.bootstrapMaxChars en agents.defaults.bootstrapTotalMaxChars.
11d. Verouderde kanaalplugin opschonen
Wanneer openclaw doctor --fix een ontbrekende kanaalplugin verwijdert, verwijdert het ook de bungelende kanaal-scoped configuratie die naar die plugin verwees: channels.<id>-vermeldingen, heartbeat-targets die het kanaal benoemden, en agents.*.models["<channel>/*"]-overrides. Dit voorkomt Gateway-opstartlussen waarbij de kanaalruntime weg is maar configuratie de Gateway nog steeds vraagt eraan te binden.
11c. Shellaanvulling
Doctor controleert of tabaanvulling is geïnstalleerd voor de huidige shell (zsh, bash, fish of PowerShell):
- Als het shellprofiel een traag dynamisch aanvullingspatroon gebruikt (
source <(openclaw completion ...)), upgradet doctor dit naar de snellere gecachete bestandsvariant. - Als aanvulling in het profiel is geconfigureerd maar het cachebestand ontbreekt, regenereert doctor de cache automatisch.
- Als er helemaal geen aanvulling is geconfigureerd, vraagt doctor om deze te installeren (alleen interactieve modus; overgeslagen met
--non-interactive).
Voer openclaw completion --write-state uit om de cache handmatig te regenereren.
12. Gateway-auth-controles (lokaal token)
Doctor controleert de gereedheid van lokale Gateway-tokenauthenticatie.
- Als tokenmodus een token nodig heeft en er geen tokenbron bestaat, biedt doctor aan er een te genereren.
- Als
gateway.auth.tokendoor SecretRef wordt beheerd maar niet beschikbaar is, waarschuwt doctor en overschrijft het dit niet met platte tekst. openclaw doctor --generate-gateway-tokenforceert generatie alleen wanneer er geen token-SecretRef is geconfigureerd.
12b. Alleen-lezen SecretRef-bewuste reparaties
Sommige reparatiestromen moeten geconfigureerde referenties inspecteren zonder het fail-fast-gedrag tijdens runtime te verzwakken.
openclaw doctor --fixgebruikt nu hetzelfde alleen-lezen SecretRef-samenvattingsmodel als statusfamiliecommando's voor gerichte configuratiereparaties.- Voorbeeld: Telegram
allowFrom/groupAllowFrom@username-reparatie probeert geconfigureerde botreferenties te gebruiken wanneer die beschikbaar zijn. - Als het Telegram-bottoken via SecretRef is geconfigureerd maar niet beschikbaar is in het huidige commandopad, meldt doctor dat de referentie geconfigureerd-maar-niet-beschikbaar is en slaat automatische oplossing over in plaats van te crashen of het token onterecht als ontbrekend te melden.
13. Gateway-gezondheidscontrole + herstart
Doctor voert een gezondheidscontrole uit en biedt aan de gateway opnieuw te starten wanneer die ongezond lijkt.
13b. Gereedheid van geheugenzoekfunctie
Doctor controleert of de geconfigureerde embeddingprovider voor geheugenzoekopdrachten klaar is voor de standaardagent. Het gedrag hangt af van de geconfigureerde backend en provider:
- QMD-backend: peilt of de
qmd-binary beschikbaar en startbaar is. Zo niet, dan wordt hersteladvies weergegeven, inclusief het npm-pakket en een optie voor een handmatig binary-pad. - Expliciete lokale provider: controleert op een lokaal modelbestand of een herkende URL voor een extern/downloadbaar model. Als die ontbreekt, wordt voorgesteld om over te schakelen naar een externe provider.
- Expliciete externe provider (
openai,voyage, enz.): controleert of er een API-sleutel aanwezig is in de omgeving of auth-opslag. Toont uitvoerbare herstelhints als die ontbreekt. - Automatische provider: controleert eerst de beschikbaarheid van lokale modellen en probeert daarna elke externe provider in auto-selectievolgorde.
Wanneer een gecachet gateway-peilresultaat beschikbaar is (de gateway was gezond op het moment van de controle), vergelijkt doctor het resultaat met de CLI-zichtbare configuratie en vermeldt eventuele afwijkingen. Doctor start geen nieuwe embedding-ping op het standaardpad; gebruik het deep-geheugenstatuscommando wanneer je een live providercontrole wilt.
Gebruik openclaw memory status --deep om de embeddinggereedheid tijdens runtime te verifiëren.
14. Kanaalstatuswaarschuwingen
Als de gateway gezond is, voert doctor een kanaalstatuspeiling uit en meldt waarschuwingen met voorgestelde oplossingen.
15. Audit + reparatie van supervisorconfiguratie
Doctor controleert de geïnstalleerde supervisorconfiguratie (launchd/systemd/schtasks) op ontbrekende of verouderde standaardwaarden (bijv. systemd network-online-afhankelijkheden en herstartvertraging). Wanneer er een afwijking wordt gevonden, wordt een update aanbevolen en kan het servicebestand/de taak naar de huidige standaardwaarden worden herschreven.
Opmerkingen:
openclaw doctorvraagt om bevestiging voordat de supervisorconfiguratie wordt herschreven.openclaw doctor --yesaccepteert de standaardreparatieprompts.openclaw doctor --repairpast aanbevolen oplossingen zonder prompts toe.openclaw doctor --repair --forceoverschrijft aangepaste supervisorconfiguraties.OPENCLAW_SERVICE_REPAIR_POLICY=externalhoudt doctor alleen-lezen voor de levenscyclus van de gatewayservice. De servicegezondheid wordt nog steeds gemeld en niet-service-reparaties worden uitgevoerd, maar service-installatie/start/herstart/bootstrap, herschrijven van supervisorconfiguratie en opschonen van legacyservices worden overgeslagen omdat een externe supervisor die levenscyclus beheert.- Op Linux herschrijft doctor geen commando-/entrypointmetadata terwijl de overeenkomende systemd gateway-unit actief is. Ook worden inactieve niet-legacy extra gateway-achtige units genegeerd tijdens de scan op dubbele services, zodat begeleidende servicebestanden geen opschoonruis veroorzaken.
- Als tokenauthenticatie een token vereist en
gateway.auth.tokendoor SecretRef wordt beheerd, valideert doctor-service-installatie/-reparatie de SecretRef maar worden opgeloste plaintext tokenwaarden niet opgeslagen in de omgevingsmetadata van de supervisorservice. - Doctor detecteert beheerde
.env/SecretRef-ondersteunde serviceomgevingswaarden die oudere LaunchAgent-, systemd- of Windows Scheduled Task-installaties inline hebben ingebed en herschrijft de servicemetadata zodat die waarden uit de runtimebron worden geladen in plaats van uit de supervisordefinitie. - Doctor detecteert wanneer het servicecommando nog steeds een oude
--portvastzet nadatgateway.portis gewijzigd en herschrijft de servicemetadata naar de huidige poort. - Als tokenauthenticatie een token vereist en de geconfigureerde token-SecretRef niet kan worden opgelost, blokkeert doctor het installatie-/reparatiepad met uitvoerbaar advies.
- Als zowel
gateway.auth.tokenalsgateway.auth.passwordzijn geconfigureerd engateway.auth.modeniet is ingesteld, blokkeert doctor installatie/reparatie totdat de modus expliciet is ingesteld. - Voor Linux user-systemd-units nemen doctortokendriftcontroles nu zowel
Environment=- alsEnvironmentFile=-bronnen mee bij het vergelijken van serviceauthmetadata. - Doctor-servicereparaties weigeren een gatewayservice van een oudere OpenClaw-binary te herschrijven, stoppen of herstarten wanneer de configuratie voor het laatst door een nieuwere versie is geschreven. Zie Gateway-probleemoplossing.
- Je kunt altijd een volledige herschrijving afdwingen via
openclaw gateway install --force.
16. Gateway-runtime + poortdiagnostiek
Doctor inspecteert de serviceruntime (PID, laatste exitstatus) en waarschuwt wanneer de service is geïnstalleerd maar niet daadwerkelijk draait. Ook wordt gecontroleerd op poortconflicten op de gatewaypoort (standaard 18789) en worden waarschijnlijke oorzaken gemeld (gateway draait al, SSH-tunnel).
17. Best practices voor Gateway-runtime
Doctor waarschuwt wanneer de gatewayservice draait op Bun of een versiebeheerd Node-pad (nvm, fnm, volta, asdf, enz.). WhatsApp- en Telegram-kanalen vereisen Node, en versiebeheerpaden kunnen na upgrades breken omdat de service je shell-init niet laadt. Doctor biedt aan om naar een systeeminstallatie van Node te migreren wanneer die beschikbaar is (Homebrew/apt/choco).
Nieuw geïnstalleerde of gerepareerde macOS LaunchAgents gebruiken een canoniek systeem-PATH (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin) in plaats van het interactieve shell-PATH te kopiëren, zodat Volta, asdf, fnm, pnpm en andere versiebeheermappen niet veranderen welke Node-childprocessen worden opgelost. Linux-services behouden nog steeds expliciete omgevingsroots (NVM_DIR, FNM_DIR, VOLTA_HOME, ASDF_DATA_DIR, BUN_INSTALL, PNPM_HOME) en stabiele user-bin-mappen, maar geraden fallbackmappen voor versiebeheer worden alleen naar het service-PATH geschreven wanneer die mappen op schijf bestaan.
18. Configuratie schrijven + wizardmetadata
Doctor bewaart eventuele configuratiewijzigingen en stempelt wizardmetadata om de doctor-run vast te leggen.
19. Werkruimtetips (back-up + geheugensysteem)
Doctor stelt een geheugensysteem voor de werkruimte voor wanneer dat ontbreekt en toont een back-uptip als de werkruimte nog niet onder git staat.
Zie /concepts/agent-workspace voor een volledige gids over werkruimtestructuur en git-back-up (aanbevolen: private GitHub of GitLab).