When the OpenClaw gateway/CLI is updated via npm (e.g., the openclaw doctor --fix prompt or openclaw self-update), the desktop app is not prompted to update alongside it. The user is left with a version-skewed pair, and the only symptom is a generic "protocol mismatch" error when trying to use the desktop chat.
Run an older OpenClaw desktop app version while keeping the app mostly closed/in-tray
Update the gateway via npm (openclaw self-update or accept doctor --fix upgrade prompt)
Open the desktop app and attempt to chat
→ protocol mismatch error; no in-app guidance to update
================================================================================
OpenClaw Desktop App Version Skew — Log Bundle
Bundled: 2026-06-08T22:37:25-04:00
Host: <HOST>.local (macOS 26.3 arm64)
Gateway version (current): OpenClaw 2026.6.1 (2e08f0f)
Desktop app version (current): 2026.6.1
================================================================================
Timeline (Eastern Time):
~21:42 EDT — user accepted gateway update via openclaw doctor --fix
~22:00 EDT — desktop app (2026.4.26) failed to reconnect to new gateway
~22:14 EDT — desktop manually upgraded to 2026.6.1, reconnect succeeded
================================================================================
SECTION 1 — Gateway-side: failed reconnect from outdated desktop app
Source: ~/.openclaw/logs/gateway.err.log
================================================================================
2026-06-08T21:14:48.981-04:00 [skills-remote] remote bin probe timed out (<USER> Mac mini (<REDACTED-NODEHASH>)); check node connectivity for <USER> Mac mini (<REDACTED-NODEHASH>)
2026-06-08T21:39:01.845-04:00 [ws] unauthorized conn=<REDACTED-UUID> remote=127.0.0.1 client=openclaw-control-ui webchat v2026.3.23-2 reason=token_missing
2026-06-08T21:39:01.851-04:00 [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=http://127.0.0.1:18789 host=127.0.0.1:18789 ua=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 code=4008 reason=connect failed
================================================================================
SECTION 2 — Gateway-side: pre-upgrade successful connection (for contrast)
Source: ~/.openclaw/logs/gateway.log
================================================================================
2026-06-08T21:14:31.682-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T21:42:13.885-04:00 [ws] webchat connected conn=<REDACTED-UUID> remote=127.0.0.1 client=openclaw-control-ui webchat v2026.3.23-2
2026-06-08T21:42:13.969-04:00 [ws] ⇄ res ✓ chat.history 57ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T21:42:13.974-04:00 [ws] ⇄ res ✓ node.list 63ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T21:42:13.976-04:00 [ws] ⇄ res ✓ device.pair.list 66ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T21:42:35.641-04:00 [gateway] update.run completed actor=openclaw-control-ui device=<REDACTED-DEVICEHASH> ip=unknown-ip conn=<REDACTED-UUID> changedPaths=<n/a> restartReason=update.run status=ok
2026-06-08T21:42:35.642-04:00 [ws] ⇄ res ✓ update.run 8468ms conn=<REDACTED-UUID> id=<REDACTED-ID>
================================================================================
SECTION 3 — Desktop app side: gateway startup logs around the failure window
Source: ~/Library/Logs/OpenClaw/gateway.log
================================================================================
2026-06-08T21:42:39.544-04:00 [gateway] loading configuration…
2026-06-08T21:42:39.573-04:00 [gateway] resolving authentication…
2026-06-08T21:42:39.582-04:00 [gateway] starting...
2026-06-08T21:42:49.438-04:00 [gateway] loading configuration…
2026-06-08T21:42:49.465-04:00 [gateway] resolving authentication…
2026-06-08T21:42:49.472-04:00 [gateway] starting...
2026-06-08T21:42:52.251-04:00 [gateway] loading configuration…
2026-06-08T21:42:52.278-04:00 [gateway] resolving authentication…
2026-06-08T21:42:52.284-04:00 [gateway] starting...
2026-06-08T21:43:03.088-04:00 [gateway] loading configuration…
2026-06-08T21:43:03.115-04:00 [gateway] resolving authentication…
2026-06-08T21:43:03.121-04:00 [gateway] starting...
2026-06-08T21:43:13.609-04:00 [gateway] loading configuration…
2026-06-08T21:43:13.636-04:00 [gateway] resolving authentication…
2026-06-08T21:43:13.642-04:00 [gateway] starting...
2026-06-08T21:43:24.494-04:00 [gateway] loading configuration…
2026-06-08T21:43:24.520-04:00 [gateway] resolving authentication…
2026-06-08T21:43:24.527-04:00 [gateway] starting...
2026-06-08T21:43:35.338-04:00 [gateway] loading configuration…
2026-06-08T21:43:35.364-04:00 [gateway] resolving authentication…
2026-06-08T21:43:35.371-04:00 [gateway] starting...
2026-06-08T21:43:43.885-04:00 [gateway] loading configuration…
2026-06-08T21:43:43.911-04:00 [gateway] resolving authentication…
2026-06-08T21:43:43.918-04:00 [gateway] starting...
2026-06-08T21:43:54.736-04:00 [gateway] loading configuration…
2026-06-08T21:43:54.762-04:00 [gateway] resolving authentication…
2026-06-08T21:43:54.768-04:00 [gateway] starting...
2026-06-08T21:44:05.575-04:00 [gateway] loading configuration…
2026-06-08T21:44:05.601-04:00 [gateway] resolving authentication…
2026-06-08T21:44:05.608-04:00 [gateway] starting...
2026-06-08T21:44:16.424-04:00 [gateway] loading configuration…
2026-06-08T21:44:16.450-04:00 [gateway] resolving authentication…
2026-06-08T21:44:16.457-04:00 [gateway] starting...
2026-06-08T21:44:18.572-04:00 [gateway] loading configuration…
2026-06-08T21:44:18.598-04:00 [gateway] resolving authentication…
2026-06-08T21:44:18.604-04:00 [gateway] starting...
2026-06-08T21:44:29.417-04:00 [gateway] loading configuration…
2026-06-08T21:44:29.443-04:00 [gateway] resolving authentication…
2026-06-08T21:44:29.450-04:00 [gateway] starting...
2026-06-08T21:44:40.271-04:00 [gateway] loading configuration…
2026-06-08T21:44:40.298-04:00 [gateway] resolving authentication…
2026-06-08T21:44:40.304-04:00 [gateway] starting...
2026-06-08T21:44:48.283-04:00 [gateway] loading configuration…
2026-06-08T21:44:48.310-04:00 [gateway] resolving authentication…
2026-06-08T21:44:48.316-04:00 [gateway] starting...
2026-06-08T21:44:59.126-04:00 [gateway] loading configuration…
2026-06-08T21:44:59.152-04:00 [gateway] resolving authentication…
2026-06-08T21:44:59.159-04:00 [gateway] starting...
2026-06-08T21:45:09.964-04:00 [gateway] loading configuration…
2026-06-08T21:45:09.991-04:00 [gateway] resolving authentication…
2026-06-08T21:45:09.997-04:00 [gateway] starting...
2026-06-08T21:45:20.813-04:00 [gateway] loading configuration…
2026-06-08T21:45:20.841-04:00 [gateway] resolving authentication…
2026-06-08T21:45:20.850-04:00 [gateway] starting...
2026-06-08T21:45:21.822-04:00 [gateway] loading configuration…
2026-06-08T21:45:21.848-04:00 [gateway] resolving authentication…
2026-06-08T21:45:21.854-04:00 [gateway] starting...
2026-06-08T21:45:32.662-04:00 [gateway] loading configuration…
2026-06-08T21:45:32.688-04:00 [gateway] resolving authentication…
2026-06-08T21:45:32.695-04:00 [gateway] starting...
2026-06-08T21:45:42.781-04:00 [gateway] loading configuration…
2026-06-08T21:45:42.807-04:00 [gateway] resolving authentication…
2026-06-08T21:45:42.813-04:00 [gateway] starting...
2026-06-08T21:45:53.292-04:00 [gateway] loading configuration…
2026-06-08T21:45:53.318-04:00 [gateway] resolving authentication…
2026-06-08T21:45:53.324-04:00 [gateway] starting...
2026-06-08T21:46:04.131-04:00 [gateway] loading configuration…
2026-06-08T21:46:04.158-04:00 [gateway] resolving authentication…
2026-06-08T21:46:04.164-04:00 [gateway] starting...
2026-06-08T21:46:14.973-04:00 [gateway] loading configuration…
2026-06-08T21:46:15.001-04:00 [gateway] resolving authentication…
2026-06-08T21:46:15.008-04:00 [gateway] starting...
2026-06-08T21:46:25.904-04:00 [gateway] loading configuration…
2026-06-08T21:46:25.930-04:00 [gateway] resolving authentication…
2026-06-08T21:46:25.936-04:00 [gateway] starting...
2026-06-08T21:46:36.752-04:00 [gateway] loading configuration…
2026-06-08T21:46:36.779-04:00 [gateway] resolving authentication…
2026-06-08T21:46:36.785-04:00 [gateway] starting...
2026-06-08T21:46:47.593-04:00 [gateway] loading configuration…
2026-06-08T21:46:47.620-04:00 [gateway] resolving authentication…
2026-06-08T21:46:47.627-04:00 [gateway] starting...
2026-06-08T21:46:54.232-04:00 [gateway] loading configuration…
2026-06-08T21:46:54.258-04:00 [gateway] resolving authentication…
2026-06-08T21:46:54.264-04:00 [gateway] starting...
2026-06-08T21:47:05.065-04:00 [gateway] loading configuration…
2026-06-08T21:47:05.092-04:00 [gateway] resolving authentication…
2026-06-08T21:47:05.098-04:00 [gateway] starting...
2026-06-08T21:47:15.906-04:00 [gateway] loading configuration…
2026-06-08T21:47:15.932-04:00 [gateway] resolving authentication…
2026-06-08T21:47:15.939-04:00 [gateway] starting...
2026-06-08T21:47:26.752-04:00 [gateway] loading configuration…
2026-06-08T21:47:26.779-04:00 [gateway] resolving authentication…
2026-06-08T21:47:26.785-04:00 [gateway] starting...
2026-06-08T21:47:31.554-04:00 [gateway] loading configuration…
2026-06-08T21:47:31.580-04:00 [gateway] resolving authentication…
2026-06-08T21:47:31.586-04:00 [gateway] starting...
2026-06-08T21:47:42.399-04:00 [gateway] loading configuration…
2026-06-08T21:47:42.425-04:00 [gateway] resolving authentication…
2026-06-08T21:47:42.431-04:00 [gateway] starting...
2026-06-08T21:47:53.236-04:00 [gateway] loading configuration…
2026-06-08T21:47:53.262-04:00 [gateway] resolving authentication…
2026-06-08T21:47:53.269-04:00 [gateway] starting...
2026-06-08T21:47:56.247-04:00 [gateway] loading configuration…
2026-06-08T21:47:56.273-04:00 [gateway] resolving authentication…
2026-06-08T21:47:56.279-04:00 [gateway] starting...
2026-06-08T21:48:17.112-04:00 [gateway] loading configuration…
2026-06-08T21:48:17.138-04:00 [gateway] resolving authentication…
2026-06-08T21:48:17.145-04:00 [gateway] starting...
2026-06-08T21:48:28.014-04:00 [gateway] loading configuration…
2026-06-08T21:48:28.056-04:00 [gateway] resolving authentication…
2026-06-08T21:48:28.063-04:00 [gateway] starting...
2026-06-08T21:48:28.546-04:00 [gateway] starting HTTP server...
2026-06-08T21:48:28.569-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T21:48:29.232-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T21:48:29.232-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T21:48:29.233-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T21:48:29.237-04:00 [gateway] starting channels and sidecars...
2026-06-08T21:48:29.304-04:00 [gateway] ready
2026-06-08T21:48:29.337-04:00 [heartbeat] started
2026-06-08T21:48:30.680-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T21:48:30.732-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T21:48:30.834-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T21:48:30.850-04:00 [sessions/store] pruned stale session entries
2026-06-08T21:48:31.253-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T21:48:31.374-04:00 [telegram] outbound send ok accountId=default chatId=5617760183 messageId=870 operation=sendMessage deliveryKind=text chunkCount=1
2026-06-08T21:48:31.619-04:00 [gateway] provider auth state pre-warmed in 1190ms eventLoopMax=157.9ms
2026-06-08T21:48:39.382-04:00 [gateway] agent runtime plugins pre-warmed in 78ms
2026-06-08T21:50:49.242-04:00 [reload] config change detected; evaluating reload (meta.lastTouchedVersion, meta.lastTouchedAt, gateway.auth)
2026-06-08T21:50:49.245-04:00 [gateway] signal SIGUSR1 received
2026-06-08T21:50:49.245-04:00 [gateway] received SIGUSR1; restarting
2026-06-08T21:50:49.265-04:00 [shutdown] started: gateway restarting
2026-06-08T21:50:49.391-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T21:50:49.391-04:00 [shutdown] completed cleanly in 126ms
2026-06-08T21:50:49.393-04:00 [gateway] restart mode: full process restart (supervisor restart)
2026-06-08T21:50:50.191-04:00 [gateway] signal SIGTERM received
2026-06-08T21:50:50.194-04:00 [gateway] received SIGTERM during shutdown; ignoring
2026-06-08T21:50:51.548-04:00 [gateway] loading configuration…
2026-06-08T21:50:51.591-04:00 [gateway] resolving authentication…
2026-06-08T21:50:51.598-04:00 [gateway] starting...
2026-06-08T21:50:52.077-04:00 [gateway] starting HTTP server...
2026-06-08T21:50:52.098-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T21:50:52.763-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T21:50:52.763-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T21:50:52.764-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T21:50:52.770-04:00 [gateway] starting channels and sidecars...
2026-06-08T21:50:52.851-04:00 [gateway] ready
2026-06-08T21:50:52.888-04:00 [heartbeat] started
2026-06-08T21:50:53.966-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T21:50:54.073-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T21:50:54.460-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T21:50:54.732-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T21:50:55.129-04:00 [gateway] provider auth state pre-warmed in 1171ms eventLoopMax=15.3ms
2026-06-08T21:51:02.861-04:00 [gateway] agent runtime plugins pre-warmed in 9ms
2026-06-08T21:51:39.755-04:00 [gateway] signal SIGTERM received
2026-06-08T21:51:39.757-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T21:51:39.796-04:00 [shutdown] started: gateway stopping
2026-06-08T21:51:39.937-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T21:51:39.940-04:00 [shutdown] completed cleanly in 145ms
2026-06-08T21:51:40.488-04:00 [gateway] loading configuration…
2026-06-08T21:51:40.534-04:00 [gateway] resolving authentication…
2026-06-08T21:51:40.541-04:00 [gateway] starting...
2026-06-08T21:51:41.082-04:00 [gateway] starting HTTP server...
2026-06-08T21:51:41.108-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T21:51:41.841-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T21:51:41.842-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.3s)
2026-06-08T21:51:41.842-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T21:51:41.848-04:00 [gateway] starting channels and sidecars...
2026-06-08T21:51:41.934-04:00 [gateway] ready
2026-06-08T21:51:41.980-04:00 [heartbeat] started
2026-06-08T21:51:43.078-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T21:51:43.184-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T21:51:43.538-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T21:51:43.571-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T21:51:44.241-04:00 [gateway] provider auth state pre-warmed in 1172ms eventLoopMax=13.8ms
2026-06-08T21:51:49.992-04:00 [gateway] signal SIGTERM received
2026-06-08T21:51:49.994-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T21:51:50.034-04:00 [shutdown] started: gateway stopping
2026-06-08T21:51:50.151-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T21:51:50.152-04:00 [shutdown] completed cleanly in 119ms
2026-06-08T21:51:50.686-04:00 [gateway] loading configuration…
2026-06-08T21:51:50.731-04:00 [gateway] resolving authentication…
2026-06-08T21:51:50.737-04:00 [gateway] starting...
2026-06-08T21:51:51.227-04:00 [gateway] starting HTTP server...
2026-06-08T21:51:51.249-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T21:51:51.939-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T21:51:51.940-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T21:51:51.940-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T21:51:51.946-04:00 [gateway] starting channels and sidecars...
2026-06-08T21:51:52.028-04:00 [gateway] ready
2026-06-08T21:51:52.065-04:00 [heartbeat] started
2026-06-08T21:51:53.166-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T21:51:53.275-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T21:51:53.628-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T21:51:53.660-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T21:51:54.332-04:00 [gateway] provider auth state pre-warmed in 1175ms eventLoopMax=28.4ms
2026-06-08T21:52:02.039-04:00 [gateway] agent runtime plugins pre-warmed in 9ms
2026-06-08T21:53:46.618-04:00 [ws] ⇄ res ✓ health 718ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T21:56:33.587-04:00 [gateway] signal SIGTERM received
2026-06-08T21:56:33.591-04:00 [gateway] received SIGTERM; restarting
2026-06-08T21:56:33.640-04:00 [shutdown] started: gateway restarting
2026-06-08T21:56:33.758-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T21:56:33.759-04:00 [shutdown] completed cleanly in 121ms
2026-06-08T21:56:33.760-04:00 [gateway] restart mode: full process restart (supervisor restart)
2026-06-08T21:56:45.297-04:00 [gateway] loading configuration…
2026-06-08T21:56:45.340-04:00 [gateway] resolving authentication…
2026-06-08T21:56:45.346-04:00 [gateway] starting...
2026-06-08T21:56:45.828-04:00 [gateway] starting HTTP server...
2026-06-08T21:56:45.849-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T21:56:46.529-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T21:56:46.529-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T21:56:46.530-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T21:56:46.531-04:00 [gateway] starting channels and sidecars...
2026-06-08T21:56:46.598-04:00 [gateway] ready
2026-06-08T21:56:46.633-04:00 [heartbeat] started
2026-06-08T21:56:47.946-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T21:56:48.058-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T21:56:48.314-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T21:56:48.715-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T21:56:48.845-04:00 [gateway] provider auth state pre-warmed in 1143ms eventLoopMax=126.9ms
2026-06-08T21:56:56.608-04:00 [gateway] agent runtime plugins pre-warmed in 8ms
2026-06-08T22:03:01.280-04:00 [gateway] signal SIGTERM received
2026-06-08T22:03:01.283-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T22:03:01.337-04:00 [shutdown] started: gateway stopping
2026-06-08T22:03:01.455-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T22:03:01.456-04:00 [shutdown] completed cleanly in 121ms
2026-06-08T22:03:02.107-04:00 [gateway] loading configuration…
2026-06-08T22:03:02.149-04:00 [gateway] resolving authentication…
2026-06-08T22:03:02.156-04:00 [gateway] starting...
2026-06-08T22:03:02.641-04:00 [gateway] starting HTTP server...
2026-06-08T22:03:02.663-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T22:03:03.330-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T22:03:03.330-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T22:03:03.331-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T22:03:03.331-04:00 [gateway] starting channels and sidecars...
2026-06-08T22:03:03.403-04:00 [gateway] ready
2026-06-08T22:03:03.435-04:00 [heartbeat] started
2026-06-08T22:03:04.760-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T22:03:04.877-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T22:03:05.133-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T22:03:05.230-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T22:03:05.689-04:00 [gateway] provider auth state pre-warmed in 1157ms eventLoopMax=125.4ms
2026-06-08T22:03:13.412-04:00 [gateway] agent runtime plugins pre-warmed in 9ms
2026-06-08T22:03:22.820-04:00 [gateway] signal SIGTERM received
2026-06-08T22:03:22.823-04:00 [gateway] received SIGTERM; restarting
2026-06-08T22:03:22.876-04:00 [shutdown] started: gateway restarting
2026-06-08T22:03:22.993-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T22:03:22.994-04:00 [shutdown] completed cleanly in 119ms
2026-06-08T22:03:22.995-04:00 [gateway] restart mode: full process restart (supervisor restart)
2026-06-08T22:03:28.096-04:00 [gateway] loading configuration…
2026-06-08T22:03:28.140-04:00 [gateway] resolving authentication…
2026-06-08T22:03:28.146-04:00 [gateway] starting...
2026-06-08T22:03:28.630-04:00 [gateway] starting HTTP server...
2026-06-08T22:03:28.651-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T22:03:29.336-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T22:03:29.337-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T22:03:29.337-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T22:03:29.338-04:00 [gateway] starting channels and sidecars...
2026-06-08T22:03:29.426-04:00 [gateway] ready
2026-06-08T22:03:29.463-04:00 [heartbeat] started
2026-06-08T22:03:30.552-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T22:03:30.659-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T22:03:31.012-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T22:03:31.045-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T22:03:31.705-04:00 [gateway] provider auth state pre-warmed in 1162ms eventLoopMax=22.6ms
2026-06-08T22:03:39.436-04:00 [gateway] agent runtime plugins pre-warmed in 9ms
2026-06-08T22:04:38.880-04:00 [gateway] signal SIGTERM received
2026-06-08T22:04:38.882-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T22:04:38.923-04:00 [shutdown] started: gateway stopping
2026-06-08T22:04:38.924-04:00 [gateway] signal SIGTERM received
2026-06-08T22:04:38.925-04:00 [gateway] received SIGTERM during shutdown; ignoring
2026-06-08T22:04:39.045-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T22:04:39.046-04:00 [shutdown] completed cleanly in 125ms
2026-06-08T22:06:08.967-04:00 [gateway] loading configuration…
2026-06-08T22:06:09.009-04:00 [gateway] resolving authentication…
2026-06-08T22:06:09.016-04:00 [gateway] starting...
2026-06-08T22:06:09.492-04:00 [gateway] starting HTTP server...
2026-06-08T22:06:09.513-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T22:06:10.176-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T22:06:10.177-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T22:06:10.177-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T22:06:10.178-04:00 [gateway] starting channels and sidecars...
2026-06-08T22:06:10.263-04:00 [gateway] ready
2026-06-08T22:06:10.300-04:00 [heartbeat] started
2026-06-08T22:06:11.381-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T22:06:11.492-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T22:06:11.857-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T22:06:11.875-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T22:06:12.528-04:00 [gateway] provider auth state pre-warmed in 1156ms eventLoopMax=20.5ms
2026-06-08T22:06:20.271-04:00 [gateway] agent runtime plugins pre-warmed in 7ms
2026-06-08T22:06:22.700-04:00 [ws] ⇄ res ✓ channels.status 131ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:06:22.792-04:00 [ws] ⇄ res ✓ doctor.memory.status 56ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:07:24.600-04:00 [gateway] signal SIGTERM received
2026-06-08T22:07:24.603-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T22:07:24.654-04:00 [shutdown] started: gateway stopping
2026-06-08T22:07:24.656-04:00 [gateway] signal SIGTERM received
2026-06-08T22:07:24.656-04:00 [gateway] received SIGTERM during shutdown; ignoring
2026-06-08T22:07:24.773-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T22:07:24.774-04:00 [shutdown] completed cleanly in 121ms
2026-06-08T22:07:42.764-04:00 [gateway] loading configuration…
2026-06-08T22:07:42.808-04:00 [gateway] resolving authentication…
2026-06-08T22:07:42.815-04:00 [gateway] starting...
2026-06-08T22:07:43.336-04:00 [gateway] starting HTTP server...
2026-06-08T22:07:43.357-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T22:07:44.039-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T22:07:44.039-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T22:07:44.040-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T22:07:44.041-04:00 [gateway] starting channels and sidecars...
2026-06-08T22:07:44.145-04:00 [gateway] ready
2026-06-08T22:07:44.183-04:00 [heartbeat] started
2026-06-08T22:07:45.083-04:00 [ws] ⇄ res ✓ health 87ms cached=true conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:07:45.150-04:00 [ws] ⇄ res ✓ status 152ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:07:45.158-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T22:07:45.272-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T22:07:46.122-04:00 [ws] ⇄ res ✓ config.get 1125ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:07:46.131-04:00 [gateway] signal SIGTERM received
2026-06-08T22:07:46.131-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T22:07:46.149-04:00 [shutdown] started: gateway stopping
2026-06-08T22:07:46.150-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=unannounced
2026-06-08T22:07:46.988-04:00 [ws] ⇄ res ✓ status 123ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:07:46.989-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T22:07:46.993-04:00 [ws] ⇄ res ✓ config.get 129ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:07:51.285-04:00 [telegram] [default] released stopped Telegram polling lease
2026-06-08T22:07:56.310-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T22:07:56.313-04:00 [shutdown] completed cleanly in 10164ms
2026-06-08T22:07:56.968-04:00 [gateway] loading configuration…
2026-06-08T22:07:57.012-04:00 [gateway] resolving authentication…
2026-06-08T22:07:57.019-04:00 [gateway] starting...
2026-06-08T22:07:57.545-04:00 [gateway] starting HTTP server...
2026-06-08T22:07:57.568-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T22:07:58.260-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T22:07:58.261-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T22:07:58.261-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T22:07:58.262-04:00 [gateway] starting channels and sidecars...
2026-06-08T22:07:58.367-04:00 [gateway] ready
2026-06-08T22:07:58.405-04:00 [heartbeat] started
2026-06-08T22:07:59.764-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T22:07:59.884-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T22:07:59.888-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T22:08:00.238-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T22:08:00.726-04:00 [gateway] provider auth state pre-warmed in 1203ms eventLoopMax=130.3ms
2026-06-08T22:08:08.375-04:00 [gateway] agent runtime plugins pre-warmed in 8ms
2026-06-08T22:09:54.515-04:00 [telegram] Inbound message telegram:5617760183 -> @AlexInfowarsBot (direct, 10 chars)
2026-06-08T22:10:42.568-04:00 [telegram] Inbound message telegram:5617760183 -> @AlexInfowarsBot (direct, 96 chars)
2026-06-08T22:11:15.126-04:00 [telegram] Inbound message telegram:5617760183 -> @AlexInfowarsBot (direct, 3 chars)
2026-06-08T22:14:00.273-04:00 [gateway] signal SIGTERM received
2026-06-08T22:14:00.275-04:00 [gateway] received SIGTERM; shutting down
2026-06-08T22:14:00.311-04:00 [shutdown] started: gateway stopping
2026-06-08T22:14:00.613-04:00 [ws] ⇄ res ✓ health 89ms cached=true conn=<REDACTED-UUID> id=F5AA5D2E…78A1
2026-06-08T22:14:00.618-04:00 [ws] ⇄ res ✓ health 94ms cached=true conn=<REDACTED-UUID> id=AEF1D309…024A
2026-06-08T22:14:00.639-04:00 [ws] ⇄ res ✓ voicewake.get 116ms conn=<REDACTED-UUID> id=BA89DC0A…9A75
2026-06-08T22:14:00.640-04:00 [ws] ⇄ res ✓ node.pair.list 117ms conn=<REDACTED-UUID> id=2572C7A1…C227
2026-06-08T22:14:00.643-04:00 [ws] ⇄ res ✓ device.pair.list 118ms conn=<REDACTED-UUID> id=66970605…4BB8
2026-06-08T22:14:00.645-04:00 [ws] ⇄ res ✓ node.list 121ms conn=<REDACTED-UUID> id=D7FEE5BA…8961
2026-06-08T22:14:01.448-04:00 [ws] ⇄ res ✓ config.get 924ms conn=<REDACTED-UUID> id=50D9F932…39B6
2026-06-08T22:14:01.948-04:00 [gateway] signal SIGTERM received
2026-06-08T22:14:01.948-04:00 [gateway] received SIGTERM during shutdown; ignoring
2026-06-08T22:14:05.304-04:00 [gmail-watcher] gmail watcher stopped
2026-06-08T22:14:05.308-04:00 [shutdown] completed cleanly in 4997ms
2026-06-08T22:14:05.864-04:00 [gateway] loading configuration…
2026-06-08T22:14:05.909-04:00 [gateway] resolving authentication…
2026-06-08T22:14:05.916-04:00 [gateway] starting...
2026-06-08T22:14:06.434-04:00 [gateway] starting HTTP server...
2026-06-08T22:14:06.455-04:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-08T22:14:07.127-04:00 [gateway] agent model: anthropic/claude-opus-4-7 (thinking=medium, fast=off)
2026-06-08T22:14:07.128-04:00 [gateway] http server listening (11 plugins: bonjour, browser, canvas, device-pair, file-transfer, memory-core, microsoft, phone-control, talk-voice, telegram, xai; 1.2s)
2026-06-08T22:14:07.128-04:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-08.log
2026-06-08T22:14:07.130-04:00 [gateway] starting channels and sidecars...
2026-06-08T22:14:07.234-04:00 [gateway] ready
2026-06-08T22:14:07.271-04:00 [heartbeat] started
2026-06-08T22:14:08.603-04:00 [telegram] [default] starting provider (@AlexInfowarsBot)
2026-06-08T22:14:08.719-04:00 [telegram] menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 66 commands visible.
2026-06-08T22:14:08.974-04:00 [plugins] bonjour: advertised gateway fqdn=<USER> Mac mini (OpenClaw)._openclaw-gw._tcp.local. host=<HOST>.local. port=18789 state=announcing
2026-06-08T22:14:09.072-04:00 [telegram] [diag] isolated polling ingress started spool=/Users/<USER>/.openclaw/telegram/ingress-spool-default
2026-06-08T22:14:09.087-04:00 [telegram] Inbound message telegram:5617760183 -> @AlexInfowarsBot (direct, 95 chars)
2026-06-08T22:14:09.584-04:00 [gateway] provider auth state pre-warmed in 1215ms eventLoopMax=132.9ms
2026-06-08T22:14:09.586-04:00 [ws] ⇄ res ✓ node.pair.list 58ms conn=<REDACTED-UUID> id=0703DC75…C783
2026-06-08T22:14:14.615-04:00 [gateway] device pairing auto-approved device=<REDACTED-DEVICEHASH> role=operator
2026-06-08T22:14:14.627-04:00 [ws] webchat connected conn=<REDACTED-UUID> remote=127.0.0.1 client=openclaw-control-ui webchat vcontrol-ui
2026-06-08T22:14:14.703-04:00 [ws] ⇄ res ✓ health 50ms cached=true conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:14:14.716-04:00 [ws] ⇄ res ✓ sessions.subscribe 63ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:14:14.717-04:00 [ws] ⇄ res ✓ sessions.messages.subscribe 64ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:14:14.718-04:00 [ws] ⇄ res ✓ agent.identity.get 65ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:14:14.758-04:00 [ws] ⇄ res ✓ chat.startup 105ms conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:14:15.105-04:00 [telegram] Inbound message telegram:5617760183 -> @AlexInfowarsBot (direct, 65 chars)
2026-06-08T22:14:17.243-04:00 [gateway] agent runtime plugins pre-warmed in 7ms
2026-06-08T22:31:17.542-04:00 [ws] ⇄ res ✗ config.schema.lookup 762ms errorCode=INVALID_REQUEST errorMessage=config schema path not found conn=<REDACTED-UUID> id=<REDACTED-ID>
2026-06-08T22:31:21.171-04:00 [ws] ⇄ res ✓ config.get 95ms conn=<REDACTED-UUID> id=<REDACTED-ID>
================================================================================
SECTION 4 — Historical precedent: similar opaque rejections across versions
Source: ~/.openclaw/logs/gateway.err.log (filtered)
================================================================================
2026-02-15T04:32:14.235Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized
2026-02-15T04:32:14.669Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:14.833Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:15.272Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:16.195Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:16.626Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:16.794Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:17.219Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:18.164Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:18.591Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:18.752Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:19.176Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:20.147Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:22.479Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:26.915Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=n/a code=1008 reason=connect failed
2026-02-15T04:32:32.509Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:32.513Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:32.594Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:32.677Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
2026-02-15T04:32:32.761Z [ws] closed before connect conn=<REDACTED-UUID> remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=OpenClaw/202602140 CFNetwork/3860.400.51 Darwin/25.3.0 code=1008 reason=unauthorized: device token mismatch (rotate/reissue device token)
================================================================================
SECTION 5 — Sparkle (desktop updater) state at time of failure
================================================================================
"NSWindow Frame SUUpdateAlert2" = "979 778 602 402 0 0 2560 1410 ";
SUAutomaticallyUpdate = 1;
SUEnableAutomaticChecks = 1;
SUHasLaunchedBefore = 1;
SULastCheckTime = "2026-06-09 01:14:26 +0000";
SUUpdateGroupIdentifier = <REDACTED>;
Appcast feed: https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
Feed advertised: 2026.6.1, published Wed, 03 Jun 2026 21:26:22 +0000
Local desktop at time of failure: 2026.4.26 (5 days behind feed)
================================================================================
END OF BUNDLE
================================================================================
Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When the OpenClaw gateway/CLI is updated via npm (e.g., the openclaw doctor --fix prompt or openclaw self-update), the desktop app is not prompted to update alongside it. The user is left with a version-skewed pair, and the only symptom is a generic "protocol mismatch" error when trying to use the desktop chat.
Steps to reproduce
Run an older OpenClaw desktop app version while keeping the app mostly closed/in-tray
Update the gateway via npm (openclaw self-update or accept doctor --fix upgrade prompt)
Open the desktop app and attempt to chat
→ protocol mismatch error; no in-app guidance to update
Expected behavior
Any of the following would prevent this:
Gateway-side guard: When the connecting desktop app reports a protocol/version below the gateway's minimum, the gateway should respond with a structured "client out of date — update required" message that the desktop app surfaces as a clear update prompt (with a button to download).
Desktop-side on-connect check: On failed handshake, the desktop app should fetch the appcast immediately rather than waiting for Sparkle's scheduled interval, and offer an update if one exists.
Coordinated update: Since gateway and desktop ship the same v2026.x.y tag, a successful gateway update should trigger a Sparkle check on next desktop app launch instead of relying purely on the scheduled interval.
Actual behavior
Generic "protocol mismatch" with no actionable guidance
User has to manually identify the version skew, download the DMG from GitHub releases, quit the running app, and replace /Applications/OpenClaw.app
OpenClaw version
Gateway: 2026.6.1 / Desktop app (before): 2026.4.26
Operating system
OS: macOS 26.3 (arm64)
Install method
No response
Model
anthropic/claude-opus-4-7— via Anthropic direct API key, default account.Provider / routing chain
browser → local gateway → in-process Anthropic SDK → api.anthropic.com
Additional provider/model setup details
Environment
OS: macOS 26.3 (arm64)
Gateway: 2026.6.1 (just updated via npm)
Desktop app (before): 2026.4.26 (~6 weeks old)
Sparkle prefs at time of failure:
SUEnableAutomaticChecks = 1
SUAutomaticallyUpdate = 1
SULastCheckTime was only refreshed after the gateway upgrade, suggesting the desktop app hadn't run Sparkle's scheduled check in a while
Appcast feed: 2026.6.1 had been published for 5 days but desktop never picked it up
bug-logs.txt
Logs, screenshots, and evidence
Impact and severity
Affected: Users with mismatched Server and desktop app versions
Severity: Blocks workflow and causes desktop app chat to be unusable
Frequency: Always occurs in the mismatched state
Consequences: Poor interaction with agent
Additional information
No response