openclaw - ✅(Solved) Fix [Bug]: Regression: Control UI / gateway becomes unresponsive for 30-45s during chat runs after v2026.4.14 [1 pull requests, 1 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#72365Fetched 2026-04-27 05:30:51
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Participants
Timeline (top)
cross-referenced ×1labeled ×1referenced ×1subscribed ×1

Hi, I’m seeing a regression after upgrading from v2026.4.14 to the newer v2026.4.24 beta/main line.

Before the upgrade, the Docker gateway was usable after ~5s, chat messages appeared immediately in Control UI, and simple responses usually arrived within ~5s.

After the upgrade, Control UI often stays on loading or does not update while a chat message is running. A simple message can take ~30-45s to appear/respond, and the user message often becomes visible only shortly before the assistant response. Refreshing/opening Control UI during that window can also be delayed.

This happens even with openai-codex/gpt-5.4 on low thinking. When idle, / and /healthz are very fast, usually ~1-5ms, so the gateway is not generally slow.

Environment:

  • Windows 11 + WSL2 Ubuntu + Docker Desktop
  • Gateway at 127.0.0.1:18789
  • Control UI version seen: v2026.4.26
  • Source commit tested around: 760a1525fb
  • Plugins loaded: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram
  • OPENCLAW_TRAJECTORY=0 was tested and did not fix the runtime delay
  • Model pricing refresh was disabled

Relevant observations:

  • Idle GET /: ~0.002s
  • Idle GET /healthz: ~0.001s
  • During bad windows, openclaw-gateway can use ~100% of one CPU core
  • Control UI / websocket requests appear delayed
  • The model itself can respond quickly in isolation

Logs / slow endpoints observed:

[gateway] ready (8 plugins: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram; 9.6s)
[gateway] starting channels and sidecars...
[ws] res ✗ chat.history 0ms errorCode=UNAVAILABLE errorMessage=chat.history unavailable during gateway startup
[ws] res ✓ node.list 38223ms
[ws] res ✓ device.pair.list 38223ms
[ws] res ✓ models.list 24541ms

tools.effective ~45955ms
doctor.memory.dreamDiary ~17275ms
wiki.importInsights ~17361ms
wiki.palace ~17364ms
doctor.memory.status ~18168ms
sessions.usage ~3500-4000ms
usage.cost ~2000-2700ms
What I already tried:

Disabled trajectory capture with OPENCLAW_TRAJECTORY=0
Disabled model pricing refresh
Reduced/removed old duplicated openclaw.json files
Verified gateway health is fast when idle
Verified the model itself can respond quickly in isolation
I suspect this may be gateway/control-plane event-loop blocking, Control UI eager-loading expensive endpoints, startup sidecar gating, or slow memory/wiki/tools/usage/model endpoints blocking other websocket requests.

Root Cause

This affects day-to-day use because even simple test prompts can make the Control UI feel blocked.

PR fix notes

PR #72558: fix: address Control UI unresponsiveness during chat runs (#72365)

Description (problem / solution / changelog)

Summary

Fixed regression where Control UI becomes unresponsive for 30-45s during chat runs. The issue was caused by the tools.effective gateway request handler blocking the event loop while executing the CPU-intensive resolveEffectiveToolInventory() operation (~46s).

Changes

  • Made tools.effective handler async
  • Added setImmediate yield before calling resolveEffectiveToolInventory() to prevent blocking the gateway event loop
  • Changed direct respond() call to store result first, then respond

Testing

  • All 18 existing tests in tools-effective.test.ts pass

Root Cause

The tools.effective handler was synchronous and called resolveEffectiveToolInventory() directly, which is a CPU-intensive operation (~46s). This blocked the entire gateway event loop, causing all other requests (Control UI, node.list, device.pair.list, etc.) to be delayed until completion.

By making the handler async and yielding with setImmediate, other gateway requests can proceed while the expensive operation runs.

Fixes openclaw/openclaw#72365

Changed files

  • src/gateway/server-methods/tools-effective.ts (modified, +21/-21)

Code Example

[gateway] ready (8 plugins: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram; 9.6s)
[gateway] starting channels and sidecars...
[ws] res ✗ chat.history 0ms errorCode=UNAVAILABLE errorMessage=chat.history unavailable during gateway startup
[ws] res ✓ node.list 38223ms
[ws] res ✓ device.pair.list 38223ms
[ws] res ✓ models.list 24541ms

tools.effective ~45955ms
doctor.memory.dreamDiary ~17275ms
wiki.importInsights ~17361ms
wiki.palace ~17364ms
doctor.memory.status ~18168ms
sessions.usage ~3500-4000ms
usage.cost ~2000-2700ms
What I already tried:

Disabled trajectory capture with OPENCLAW_TRAJECTORY=0
Disabled model pricing refresh
Reduced/removed old duplicated openclaw.json files
Verified gateway health is fast when idle
Verified the model itself can respond quickly in isolation
I suspect this may be gateway/control-plane event-loop blocking, Control UI eager-loading expensive endpoints, startup sidecar gating, or slow memory/wiki/tools/usage/model endpoints blocking other websocket requests.

### Steps to reproduce

1. Run OpenClaw in Docker/WSL2 with Control UI exposed on `127.0.0.1:18789`.

2. Use a config with several enabled plugins, for example:
   `acpx`, `browser`, `device-pair`, `memory-core`, `memory-wiki`, `phone-control`, `talk-voice`, `telegram`.

3. Start/recreate the gateway container:

---

Idle gateway health is fast:


curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/
# ~0.001-0.005s

curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/healthz
# ~0.001-0.005s
Startup / sidecar-related logs:

[gateway] ready (8 plugins: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram; 9.6s)
[gateway] starting channels and sidecars...
[ws] res ✗ chat.history 0ms errorCode=UNAVAILABLE errorMessage=chat.history unavailable during gateway startup
[ws] res ✓ node.list 38223ms
[ws] res ✓ device.pair.list 38223ms
[ws] res ✓ models.list 24541ms
Other slow endpoints observed:

tools.effective ~45955ms
doctor.memory.dreamDiary ~17275ms
wiki.importInsights ~17361ms
wiki.palace ~17364ms
doctor.memory.status ~18168ms
sessions.usage ~3500-4000ms
usage.cost ~2000-2700ms
During the bad window:

Control UI can stay on loading/connect screen.
User message may appear only shortly before the assistant response.
Opening/refreshing Control UI can be delayed.
openclaw-gateway can use around 100% of one CPU core.
After the window ends:

UI becomes responsive again.
/ and /healthz return to ~1-5ms.
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Hi, I’m seeing a regression after upgrading from v2026.4.14 to the newer v2026.4.24 beta/main line.

Before the upgrade, the Docker gateway was usable after ~5s, chat messages appeared immediately in Control UI, and simple responses usually arrived within ~5s.

After the upgrade, Control UI often stays on loading or does not update while a chat message is running. A simple message can take ~30-45s to appear/respond, and the user message often becomes visible only shortly before the assistant response. Refreshing/opening Control UI during that window can also be delayed.

This happens even with openai-codex/gpt-5.4 on low thinking. When idle, / and /healthz are very fast, usually ~1-5ms, so the gateway is not generally slow.

Environment:

  • Windows 11 + WSL2 Ubuntu + Docker Desktop
  • Gateway at 127.0.0.1:18789
  • Control UI version seen: v2026.4.26
  • Source commit tested around: 760a1525fb
  • Plugins loaded: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram
  • OPENCLAW_TRAJECTORY=0 was tested and did not fix the runtime delay
  • Model pricing refresh was disabled

Relevant observations:

  • Idle GET /: ~0.002s
  • Idle GET /healthz: ~0.001s
  • During bad windows, openclaw-gateway can use ~100% of one CPU core
  • Control UI / websocket requests appear delayed
  • The model itself can respond quickly in isolation

Logs / slow endpoints observed:

[gateway] ready (8 plugins: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram; 9.6s)
[gateway] starting channels and sidecars...
[ws] res ✗ chat.history 0ms errorCode=UNAVAILABLE errorMessage=chat.history unavailable during gateway startup
[ws] res ✓ node.list 38223ms
[ws] res ✓ device.pair.list 38223ms
[ws] res ✓ models.list 24541ms

tools.effective ~45955ms
doctor.memory.dreamDiary ~17275ms
wiki.importInsights ~17361ms
wiki.palace ~17364ms
doctor.memory.status ~18168ms
sessions.usage ~3500-4000ms
usage.cost ~2000-2700ms
What I already tried:

Disabled trajectory capture with OPENCLAW_TRAJECTORY=0
Disabled model pricing refresh
Reduced/removed old duplicated openclaw.json files
Verified gateway health is fast when idle
Verified the model itself can respond quickly in isolation
I suspect this may be gateway/control-plane event-loop blocking, Control UI eager-loading expensive endpoints, startup sidecar gating, or slow memory/wiki/tools/usage/model endpoints blocking other websocket requests.

### Steps to reproduce

1. Run OpenClaw in Docker/WSL2 with Control UI exposed on `127.0.0.1:18789`.

2. Use a config with several enabled plugins, for example:
   `acpx`, `browser`, `device-pair`, `memory-core`, `memory-wiki`, `phone-control`, `talk-voice`, `telegram`.

3. Start/recreate the gateway container:
   ```bash
   docker compose -f infra/compose.yml up -d --force-recreate clawbot


### Expected behavior

Expected behavior:

Control UI should remain responsive while a chat run is active.
The user message should appear immediately after sending.
Refresh/opening the UI should not block behind a chat run or heavy analytics/control endpoints.
Expensive endpoints like tools/memory/wiki/usage should not block chat/control-plane responsiveness.
Open Control UI at:
http://127.0.0.1:18789

After the UI is loaded and the gateway appears idle, send a very small chat message, for example:
test respond with received

While the message is running, try one or more of the following:

Refresh the Control UI tab.
Open http://127.0.0.1:18789 in another browser/tab.
Watch Docker CPU usage for openclaw-gateway.
Watch gateway websocket logs.
Observe that the UI can stay on loading / fail to update for ~30-45s, and the user message may appear only shortly before the assistant response.

Check that when idle, basic health endpoints are fast:

curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/
curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/healthz
Compare with older v2026.4.14, where the same setup was responsive and the user message appeared immediately.

### Actual behavior

Control UI becomes partially or fully unresponsive during chat runs.

A small test message can take ~30-45s before it appears/responds in the UI. In some cases the user message only becomes visible shortly before the assistant response, which suggests the model response itself is not the only delay.

Refreshing the Control UI during that window can show the loading/connect screen for a long time. Opening the UI in another browser/tab can also be delayed until the chat run is almost finished.

When idle, the gateway is fast:
- `GET /` is usually ~1-5ms
- `GET /healthz` is usually ~1-5ms

During the bad window, `openclaw-gateway` can use around 100% of one CPU core and websocket/control requests appear delayed.

I also saw slow control/diagnostic endpoints in logs, for example:
- `node.list` ~38s during startup-sidecar phase
- `models.list` ~24s
- `tools.effective` ~45s
- memory/wiki diagnostic endpoints ~17-18s
- `sessions.usage` ~3.5-4s
- `usage.cost` ~2-3s

This started after upgrading from `v2026.4.14` to the newer `v2026.4.24 beta/main` line. The same setup was much more responsive before.


### OpenClaw version

v2026.4.26

### Operating system

Windows 11 + WSL2 Ubuntu + Docker Desktop Gateway/container runs in Linux Docker environment, accessed from Windows browser at `http://127.0.0.1:18789`.

### Install method

_No response_

### Model

openai-codex/gpt-5.4 and openai-codex/gpt-5.5  The issue was observed with `gpt-5.4` on low thinking as well, so it does not appear to be specific to `gpt-5.5` or high reasoning.

### Provider / routing chain

Primary provider/model: `openai-codex/gpt-5.4`  Also tested/observed: `openai-codex/gpt-5.5`  Fallbacks configured: - `ollama/qwen3.5:397b-cloud` - `ollama/minimax-m2.7:cloud` - `ollama/gemma4:31b-cloud` - `ollama/qwen3-coder:480b-cloud` - `ollama/qwen3.5:4b`  The slowdown also happens with `openai-codex/gpt-5.4` and low thinking, so it does not seem caused only by fallback routing or `gpt-5.5`.

### Additional provider/model setup details

Model config uses merge mode with OpenAI Codex as primary and Ollama models as fallbacks.

Ollama is configured through:
`http://host.docker.internal:11434`

The configured primary/default model is:
`openai-codex/gpt-5.4`

Subagents are also configured to use:
`openai-codex/gpt-5.4`

Image generation model:
`openai/gpt-image-2`

The issue was reproduced even when the active chat model was `openai-codex/gpt-5.4` with low thinking, so it does not appear to be caused only by a specific model choice or high reasoning mode.

`OPENCLAW_TRAJECTORY=0` was also tested and did not resolve the runtime UI/gateway delay.


### Logs, screenshots, and evidence

```shell
Idle gateway health is fast:


curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/
# ~0.001-0.005s

curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/healthz
# ~0.001-0.005s
Startup / sidecar-related logs:

[gateway] ready (8 plugins: acpx, browser, device-pair, memory-core, memory-wiki, phone-control, talk-voice, telegram; 9.6s)
[gateway] starting channels and sidecars...
[ws] res ✗ chat.history 0ms errorCode=UNAVAILABLE errorMessage=chat.history unavailable during gateway startup
[ws] res ✓ node.list 38223ms
[ws] res ✓ device.pair.list 38223ms
[ws] res ✓ models.list 24541ms
Other slow endpoints observed:

tools.effective ~45955ms
doctor.memory.dreamDiary ~17275ms
wiki.importInsights ~17361ms
wiki.palace ~17364ms
doctor.memory.status ~18168ms
sessions.usage ~3500-4000ms
usage.cost ~2000-2700ms
During the bad window:

Control UI can stay on loading/connect screen.
User message may appear only shortly before the assistant response.
Opening/refreshing Control UI can be delayed.
openclaw-gateway can use around 100% of one CPU core.
After the window ends:

UI becomes responsive again.
/ and /healthz return to ~1-5ms.

Impact and severity

Severity: High for Control UI usability.

The gateway itself eventually responds, but the Control UI becomes unreliable during chat runs or heavy gateway/control operations. This makes the assistant feel frozen or disconnected even when the model may be responding.

Impact:

  • User messages may not appear immediately after sending.
  • The UI can stay on loading/connect for ~30-45s.
  • Refreshing the UI can make it look like the gateway is unavailable.
  • Opening the UI in another tab/browser can also be delayed.
  • It is hard to know whether the message was sent, whether the assistant is working, or whether the UI/gateway is stuck.
  • This is a regression compared with v2026.4.14, where the same Docker/WSL setup was responsive.

This affects day-to-day use because even simple test prompts can make the Control UI feel blocked.

Additional information

This setup is a customized Docker stack, but the issue started only after upgrading from v2026.4.14 to the newer v2026.4.24 beta/main line.

Current setup notes:

  • Docker/WSL2 environment
  • Gateway exposed locally at 127.0.0.1:18789
  • Telegram plugin enabled
  • Browser plugin enabled with remote CDP attach-only
  • Memory plugins enabled: memory-core, memory-wiki
  • bonjour disabled
  • OPENCLAW_TRAJECTORY=0 tested
  • model pricing refresh disabled
  • Basic health endpoints are fast when idle

I suspect this may be related to one or more of:

  • websocket/control-plane requests being blocked by long-running gateway work
  • Control UI eager-loading expensive endpoints
  • startup sidecar gating
  • slow tools.effective, memory/wiki, usage, or model catalog endpoints blocking other gateway requests
  • event-loop blocking inside the gateway process

The important part is that the model itself can be fast in isolation, but the Control UI/gateway becomes unresponsive or delayed while chat/control work is happening.

extent analysis

TL;DR

The most likely fix for the regression issue is to investigate and optimize the slow endpoints and event-loop blocking in the gateway process, potentially by disabling or optimizing expensive endpoints like tools.effective, memory/wiki, and usage diagnostics.

Guidance

  • Investigate the slow endpoints observed in the logs, such as tools.effective, doctor.memory.dreamDiary, wiki.importInsights, and sessions.usage, to determine their impact on the gateway's responsiveness.
  • Consider disabling or optimizing these endpoints to reduce their load on the gateway process.
  • Look into the event-loop blocking issue inside the gateway process, which might be caused by long-running tasks or expensive computations.
  • Verify that the model itself is responding quickly in isolation, and that the issue is indeed related to the gateway or Control UI.

Example

No specific code snippet is provided, but an example of how to disable an endpoint might look like:

# Disable the tools.effective endpoint
# (Note: this is a hypothetical example and may not be the actual solution)
docker compose -f infra/compose.yml up -d --force-recreate clawbot --disable-endpoint tools.effective

Notes

The issue seems to be related to the gateway process and Control UI, rather than the model itself. The slow endpoints and event-loop blocking are likely contributing factors. Further investigation and optimization of these areas may be necessary to resolve the issue.

Recommendation

Apply a workaround by disabling or optimizing the slow endpoints and investigating the event-loop blocking issue, as this is likely to have the most significant impact on resolving the regression issue.

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…

FAQ

Expected behavior

Expected behavior:

Control UI should remain responsive while a chat run is active. The user message should appear immediately after sending. Refresh/opening the UI should not block behind a chat run or heavy analytics/control endpoints. Expensive endpoints like tools/memory/wiki/usage should not block chat/control-plane responsiveness. Open Control UI at: http://127.0.0.1:18789

After the UI is loaded and the gateway appears idle, send a very small chat message, for example: test respond with received

While the message is running, try one or more of the following:

Refresh the Control UI tab. Open http://127.0.0.1:18789 in another browser/tab. Watch Docker CPU usage for openclaw-gateway. Watch gateway websocket logs. Observe that the UI can stay on loading / fail to update for ~30-45s, and the user message may appear only shortly before the assistant response.

Check that when idle, basic health endpoints are fast:

curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/ curl -w "%{time_total}\n" -o /dev/null -s http://127.0.0.1:18789/healthz Compare with older v2026.4.14, where the same setup was responsive and the user message appeared immediately.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: Regression: Control UI / gateway becomes unresponsive for 30-45s during chat runs after v2026.4.14 [1 pull requests, 1 participants]