Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When the Android node (OpenClaw app v2026.5.7 on Pixel 10) sends notification events via node.event during reconnect, the gateway rejects them with "invalid handshake: first request must be connect" because node.event is sent before the websocket connect handshake completes. Android does not retry the failed event, so the notification is lost and notification-based automations never wake the agent.
Root cause:
- apps/android/app/src/main/java/ai/openclaw/app/gateway/GatewaySession.kt sets GatewaySession.currentConnection before conn.connect() completes.
-
- apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt does not queue or retry failed sendNodeEvent calls.
-
-
- apps/android/app/src/main/java/ai/openclaw/app/node/DeviceNotificationListenerService.kt does not reconcile/replay missed posted notifications after reconnect.
Gateway log evidence:
{
"lastFrameMethod": "node.event",
"handshakeError": "invalid handshake: first request must be connect",
"client": "openclaw-android",
"clientDisplayName": "Pixel 10"
}
Impact: Android notifications such as BBVA notifications never trigger system events, so all notification-based automations fail.
Steps to reproduce
- Run OpenClaw gateway v2026.5.7.
-
- Pair/connect an Android node running OpenClaw app v2026.5.7 on a Pixel 10.
-
- Ensure Android notification forwarding is enabled.
-
- Force the Android node into a reconnect window (for example, restart the gateway, briefly interrupt network connectivity, or otherwise cause websocket reconnect).
-
- While the reconnect is in progress, receive an Android notification (for example, a BBVA notification).
-
- Inspect gateway logs and agent/system events.
Observed log evidence includes:
{
"lastFrameMethod": "node.event",
"handshakeError": "invalid handshake: first request must be connect",
"client": "openclaw-android",
"clientDisplayName": "Pixel 10"
}
Expected behavior
The Android node should not send node.event frames until the websocket connect handshake has completed successfully. Notification events that arrive during reconnect should be queued/retried, flushed after reconnect, and missed posted notifications should be reconciled so the agent receives the system event and notification-based automations run.
Actual behavior
repo:openclaw/openclaw deEvent() sees GatewaySession.currentConnection != null and sends node.event as the first websocket frame before conn.connect() has completed. The gateway rejects the frame with "invalid handshake: first request must be connect". Android does not retry or replay the failed notification event, so the notification is permanently lost and the agent is not woken.
OpenClaw version
2026.5.7
Operating system
Ubuntu 24
Install method
npm
Model
minimax 2.7
Provider / routing chain
openclaw
Additional provider/model setup details
Android app v2026.5.7; gateway v2026.5.7key--clearmodifiersTabtype--delay5--clearmodifiersAndroid on Pixel 10; gateway v2026.5.7key--clearmodifiersTabtype--delay5--clearmodifiersAndroid app paired node with OpenClaw gatewaykey--clearmodifiersTabtype--delay5--clearmodifiersN/A - Android notification node.event pathkey--clearmodifiersTabtype--delay5--clearmodifiersAndroid node -> websocket gateway -> system event / notification automation
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
No response
Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When the Android node (OpenClaw app v2026.5.7 on Pixel 10) sends notification events via node.event during reconnect, the gateway rejects them with "invalid handshake: first request must be connect" because node.event is sent before the websocket connect handshake completes. Android does not retry the failed event, so the notification is lost and notification-based automations never wake the agent.
Root cause:
Gateway log evidence:
{ "lastFrameMethod": "node.event", "handshakeError": "invalid handshake: first request must be connect", "client": "openclaw-android", "clientDisplayName": "Pixel 10" }Impact: Android notifications such as BBVA notifications never trigger system events, so all notification-based automations fail.
Steps to reproduce
Observed log evidence includes:
{ "lastFrameMethod": "node.event", "handshakeError": "invalid handshake: first request must be connect", "client": "openclaw-android", "clientDisplayName": "Pixel 10" }Expected behavior
The Android node should not send node.event frames until the websocket connect handshake has completed successfully. Notification events that arrive during reconnect should be queued/retried, flushed after reconnect, and missed posted notifications should be reconciled so the agent receives the system event and notification-based automations run.
Actual behavior
repo:openclaw/openclaw deEvent() sees GatewaySession.currentConnection != null and sends node.event as the first websocket frame before conn.connect() has completed. The gateway rejects the frame with "invalid handshake: first request must be connect". Android does not retry or replay the failed notification event, so the notification is permanently lost and the agent is not woken.
OpenClaw version
2026.5.7
Operating system
Ubuntu 24
Install method
npm
Model
minimax 2.7
Provider / routing chain
openclaw
Additional provider/model setup details
Android app v2026.5.7; gateway v2026.5.7key--clearmodifiersTabtype--delay5--clearmodifiersAndroid on Pixel 10; gateway v2026.5.7key--clearmodifiersTabtype--delay5--clearmodifiersAndroid app paired node with OpenClaw gatewaykey--clearmodifiersTabtype--delay5--clearmodifiersN/A - Android notification node.event pathkey--clearmodifiersTabtype--delay5--clearmodifiersAndroid node -> websocket gateway -> system event / notification automation
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
No response