openclaw - 💡(How to fix) Fix Menubar app shows "Health check pending / Cannot reach gateway" while gateway is healthy and web dashboard connects fine [1 participants]

Official PRs (…)
ON THIS PAGE

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#68593Fetched 2026-04-19 15:09:51
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Author
Participants
Timeline (top)
labeled ×2

The native macOS menubar app's General tab shows a persistent "Health check pending" (or "Cannot reach gateway at localhost:18789") banner even though the gateway is fully healthy and accepting connections — including from the app itself. The web dashboard at http://localhost:18789 connects and works normally using the same gateway and token. The Channels tab is also blank (no sidebar, no Add button), which appears related to the same stuck state.

Root Cause

The native macOS menubar app's General tab shows a persistent "Health check pending" (or "Cannot reach gateway at localhost:18789") banner even though the gateway is fully healthy and accepting connections — including from the app itself. The web dashboard at http://localhost:18789 connects and works normally using the same gateway and token. The Channels tab is also blank (no sidebar, no Add button), which appears related to the same stuck state.

Fix Action

Fix / Workaround

Workaround that works: open http://localhost:18789 directly in a browser and authenticate with the gateway token from ~/.openclaw/openclaw.json. Everything in the web dashboard works correctly, so the gateway and config are fine — the bug is confined to the native menubar app.

Code Example

## Evidence the gateway is healthy

- `curl http://localhost:18789/health``200 OK {"ok":true,"status":"live"}`
- `lsof -iTCP:18789 -sTCP:LISTEN` shows node listening on both IPv4 and IPv6
- `lsof -p $(pgrep -x OpenClaw) -iTCP -n` shows three ESTABLISHED TCP sessions from OpenClaw.app to 127.0.0.1:18789 (the app is actively connected to the gateway while the UI says it can't reach it)
- Web dashboard connects via WebSocket (`ws://localhost:18789`) using the gateway token from `~/.openclaw/openclaw.json`

## Config (`~/.openclaw/openclaw.json`, redacted)


gateway.mode: local
gateway.bind: loopback
gateway.tailscale.mode: off
gateway.auth.mode: token


## Additional observations

- Port **18791** binds only IPv4 (`127.0.0.1`), not IPv6 (`::1`). `curl [::1]:18791` gets immediate `Connection refused`; IPv4 returns 401 without a token, 404 with one (no `/health` on that port). If any health-check path prefers IPv6 and doesn't fail over, it would hang.
- macOS Console logs show `tcp_timers ... retransmit SYN` for a connection ID that is NOT to the gateway — possibly telemetry or an update-check endpoint that's unreachable and blocking UI state updates.
- Clearing caches (`~/Library/Caches/ai.openclaw.mac`, `~/Library/HTTPStorages/ai.openclaw.mac`, saved-app-state) and relaunching did **not** fix either issue.
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

The native macOS menubar app's General tab shows a persistent "Health check pending" (or "Cannot reach gateway at localhost:18789") banner even though the gateway is fully healthy and accepting connections — including from the app itself. The web dashboard at http://localhost:18789 connects and works normally using the same gateway and token. The Channels tab is also blank (no sidebar, no Add button), which appears related to the same stuck state.

Steps to reproduce

  1. Install companion app OpenClaw 2026.4.15 (041266a) on macOS 26.3, Apple Silicon M4
  2. Install CLI globally: npm i -g openclaw (with user-owned prefix ~/.npm-global to avoid EACCES)
  3. Symlink CLI into /usr/local/bin so the GUI app's PATH sees it: sudo ln -s ~/.npm-global/bin/openclaw /usr/local/bin/openclaw
  4. Launch app → General tab detects Node 24.15.0 + openclaw CLI 2026.4.15
  5. Observe: "Health check pending" banner never resolves (or flips to "Cannot reach gateway at localhost:18789"); Channels tab renders empty
  6. Verify gateway is actually healthy: curl http://localhost:18789/health → 200 OK
  7. Verify web dashboard works: open http://localhost:18789 in a browser, authenticate with the token from ~/.openclaw/openclaw.json — everything loads and functions

Expected behavior

With the gateway running on localhost:18789 and returning 200 on /health, the General tab health indicator should turn green and reflect the healthy state. The Channels tab should render the channel list with an Add channel control so onboarding can proceed.

Actual behavior

The General tab indicator stays on "Health check pending" or flips to "Cannot reach gateway at localhost:18789" — despite the native app itself having three ESTABLISHED TCP sessions to 127.0.0.1:18789 (confirmed via lsof -p $(pgrep -x OpenClaw) -iTCP -n). The Channels tab renders empty with no sidebar and no Add control. Meanwhile the web dashboard at http://localhost:18789 connects successfully using the same token from the same config file and works normally — proving the gateway is functional.

OpenClaw version

2026.4.15 (041266a)

Operating system

macOS 26.3 (build 25D125), Apple Silicon M4

Install method

mac app (companion) + npm global CLI symlinked to /usr/local/bin

Model

n/a — onboarding blocked before model was configured

Provider / routing chain

n/a — onboarding blocked

Additional provider/model setup details

Not yet configured — the bug blocks onboarding before any provider/model is set up.

Logs, screenshots, and evidence

## Evidence the gateway is healthy

- `curl http://localhost:18789/health``200 OK {"ok":true,"status":"live"}`
- `lsof -iTCP:18789 -sTCP:LISTEN` shows node listening on both IPv4 and IPv6
- `lsof -p $(pgrep -x OpenClaw) -iTCP -n` shows three ESTABLISHED TCP sessions from OpenClaw.app to 127.0.0.1:18789 (the app is actively connected to the gateway while the UI says it can't reach it)
- Web dashboard connects via WebSocket (`ws://localhost:18789`) using the gateway token from `~/.openclaw/openclaw.json`

## Config (`~/.openclaw/openclaw.json`, redacted)


gateway.mode: local
gateway.bind: loopback
gateway.tailscale.mode: off
gateway.auth.mode: token


## Additional observations

- Port **18791** binds only IPv4 (`127.0.0.1`), not IPv6 (`::1`). `curl [::1]:18791` gets immediate `Connection refused`; IPv4 returns 401 without a token, 404 with one (no `/health` on that port). If any health-check path prefers IPv6 and doesn't fail over, it would hang.
- macOS Console logs show `tcp_timers ... retransmit SYN` for a connection ID that is NOT to the gateway — possibly telemetry or an update-check endpoint that's unreachable and blocking UI state updates.
- Clearing caches (`~/Library/Caches/ai.openclaw.mac`, `~/Library/HTTPStorages/ai.openclaw.mac`, saved-app-state) and relaunching did **not** fix either issue.

Impact and severity

Severity: Medium-High for new users. Frequency: 100% reproducible on this setup across reboots and cache clears. Impact: the native macOS app is effectively unusable for configuration/onboarding — Channels tab is blank and there's no way to add a chat app through the UI. Web dashboard is a working fallback, so it isn't a hard block for advanced users, but it's confusing and will likely cause support load. A new user without the CLI diagnostic path (lsof, curl, Console logs) would be stuck with an app that looks broken.

Additional information

Workaround that works: open http://localhost:18789 directly in a browser and authenticate with the gateway token from ~/.openclaw/openclaw.json. Everything in the web dashboard works correctly, so the gateway and config are fine — the bug is confined to the native menubar app.

extent analysis

TL;DR

The native macOS menubar app's "Health check pending" issue may be resolved by investigating and addressing potential IPv6 connectivity issues or telemetry/update endpoint blocking.

Guidance

  • Investigate the app's health check mechanism to determine if it prefers IPv6 over IPv4 and if it fails to fail over to IPv4 when IPv6 is unavailable.
  • Check the macOS Console logs for any errors related to tcp_timers and retransmit SYN for connections not related to the gateway, as this might be blocking UI state updates.
  • Verify that the app's configuration and caching mechanisms are not causing the issue by clearing caches and relaunching the app.
  • Consider using the web dashboard as a temporary workaround, as it has been confirmed to work correctly.

Example

No code snippet is provided as the issue seems to be related to the app's internal mechanisms and configuration.

Notes

The issue appears to be specific to the native macOS menubar app and does not affect the web dashboard. The fact that the app is able to establish TCP connections to the gateway but still displays the "Health check pending" error suggests that the issue might be related to the app's internal state or configuration.

Recommendation

Apply workaround: use the web dashboard until the native app issue is resolved, as it provides a functional alternative for configuration and onboarding. This is recommended because the web dashboard has been confirmed to work correctly, and using it can help mitigate the impact of the native app 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

With the gateway running on localhost:18789 and returning 200 on /health, the General tab health indicator should turn green and reflect the healthy state. The Channels tab should render the channel list with an Add channel control so onboarding can proceed.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING