openclaw - 💡(How to fix) Fix Control UI Chat view freezes after successful auth/pairing (reproduces in incognito) [4 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#50079Fetched 2026-04-08 00:59:21
View on GitHub
Comments
4
Participants
2
Timeline
6
Reactions
0
Author
Timeline (top)
commented ×4closed ×1locked ×1

Control UI / Dashboard Chat view freezes even after successful auth + device pairing.

I reproduced this against a local Gateway running in WSL, opened from Windows Chrome. Other dashboard areas appear usable, but the Chat page freezes consistently.

At this point the issue does not look like a stale install, stale service, bad token, or unresolved pairing problem.

Root Cause

Control UI / Dashboard Chat view freezes even after successful auth + device pairing.

I reproduced this against a local Gateway running in WSL, opened from Windows Chrome. Other dashboard areas appear usable, but the Chat page freezes consistently.

At this point the issue does not look like a stale install, stale service, bad token, or unresolved pairing problem.

RAW_BUFFERClick to expand / collapse

Summary

Control UI / Dashboard Chat view freezes even after successful auth + device pairing.

I reproduced this against a local Gateway running in WSL, opened from Windows Chrome. Other dashboard areas appear usable, but the Chat page freezes consistently.

At this point the issue does not look like a stale install, stale service, bad token, or unresolved pairing problem.

Environment

  • OpenClaw version: 2026.3.13
  • Gateway host: WSL2/Linux
  • Browser host: Windows Chrome
  • Access pattern: local gateway on WSL, dashboard opened from Windows browser
  • Gateway bind: loopback (127.0.0.1:18789)

Reproduction

  1. Start local gateway.
  2. Open dashboard from Windows browser using the normal dashboard flow / token bootstrap.
  3. If prompted, complete device pairing.
  4. Open the Chat page.

Expected

Chat page loads and remains interactive.

Actual

Chat page freezes / gets stuck.

Important detail: this reproduces both in:

  • the regular browser profile
  • a fresh incognito window after a brand new pairing approval

So this does not appear to be only a poisoned browser profile / persisted local state issue.

What was ruled out

1. Duplicate OpenClaw installs / service drift

Initially there were two installs present (~/.local/... and ~/.nvm/...) and the gateway service had drifted to the nvm copy.

I cleaned this up so that runtime is now consistent:

  • CLI resolves to ~/.local/bin/openclaw
  • service runs /usr/bin/node /home/wyrm/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
  • only one gateway process is listening on 127.0.0.1:18789

After cleanup, the problem still reproduces.

2. Stale / broken device pairing

There was a stale paired Windows Control UI device.

I removed the stale Windows paired device, then approved a fresh pairing for the current browser device. I also repeated the test with a brand new incognito device and approved that pairing as well.

After both successful approvals, Chat still freezes.

3. Basic gateway health

Gateway health looks normal:

  • service running
  • RPC probe OK
  • dashboard websocket connects
  • auth and pairing complete successfully

Relevant log signals

After successful pairing, logs show normal connection + successful RPCs such as:

  • webchat connected
  • config.get ✓
  • device.pair.list ✓
  • node.list ✓

Example sequence after pairing success:

  • device pairing approved device=<...> role=operator
  • webchat connected conn=<...> client=openclaw-control-ui webchat v2026.3.13
  • config.get success
  • device.pair.list success
  • node.list success

This is why the remaining suspicion is that the failure is in the Control UI / Chat frontend layer, not the gateway auth/pairing path.

Notes

There were also earlier states during diagnosis with:

  • token_missing
  • pairing required

Those were fixed during the cleanup / re-pair process and are no longer the main blocker.

The core issue that remains is:

even with a clean runtime, successful token auth, and successful fresh device pairing, Chat still freezes — including in incognito.

Possible direction

Likely worth checking:

  • Chat page frontend render/state logic after initial websocket connect
  • any reconnect loop / session bootstrap bug specific to Chat
  • whether the Chat route expects additional RPC state beyond the successful early calls above and gets stuck if one later call fails silently in the UI

extent analysis

Fix Plan

To address the Chat page freeze issue, we'll focus on the Control UI / Chat frontend layer. The likely cause is a problem with the websocket connection or the render/state logic after the initial connect. Here are the steps to fix the issue:

  • Verify websocket connection: Ensure that the websocket connection is established successfully and that there are no errors in the connection process.
  • Check reconnect loop: Investigate if there's a reconnect loop or session bootstrap bug specific to the Chat page that's causing the freeze.
  • Review RPC state expectations: Verify if the Chat route expects additional RPC state beyond the successful early calls and if it gets stuck if one later call fails silently in the UI.

Example Code Changes

To debug and fix the issue, you can add logging statements to the Chat page frontend code to track the websocket connection and RPC calls. For example:

// Chat page frontend code
import { WebSocket } from 'ws';

// Establish websocket connection
const ws = new WebSocket('ws://127.0.0.1:18789/webchat');

ws.on('open', () => {
  console.log('Websocket connection established');
  // Send initial RPC calls
  ws.send('config.get');
  ws.send('device.pair.list');
  ws.send('node.list');
});

ws.on('message', (data) => {
  console.log(`Received message: ${data}`);
  // Handle RPC responses
  if (data === 'config.get success') {
    console.log('Config get success');
  } else if (data === 'device.pair.list success') {
    console.log('Device pair list success');
  } else if (data === 'node.list success') {
    console.log('Node list success');
  }
});

ws.on('error', (error) => {
  console.error('Websocket error:', error);
});

ws.on('close', () => {
  console.log('Websocket connection closed');
});

Temporary Workaround

If the issue is caused by a reconnect loop or session bootstrap bug, you can try adding a timeout to the websocket connection to prevent it from reconnecting indefinitely. For example:

// Add a timeout to the websocket connection
const ws = new WebSocket('ws://127.0.0.1:18789/webchat', {
  timeout: 30000, // 30 seconds
});

Verification

To verify that the fix worked, you can test the Chat page with the updated frontend code and check if the websocket connection is established successfully and if the RPC calls are handled correctly. You can also check the browser console for any error messages.

Extra Tips

To prevent similar issues in the future, it's recommended to add logging statements to the frontend code to track the websocket connection and RPC calls. Additionally, you can implement a retry mechanism for the websocket connection to handle temporary connection issues.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING