openclaw - 💡(How to fix) Fix `openclaw status --deep` Channels table omits Feishu when Feishu is configured and connected [1 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#77709Fetched 2026-05-06 06:22:41
View on GitHub
Comments
1
Participants
2
Timeline
1
Reactions
2
Timeline (top)
commented ×1

On OpenClaw 2026.5.3-1 (macOS arm64, Node 25.8.1), the Channels table rendered by openclaw status --deep only lists Telegram, even though channels.feishu is fully configured (10 enabled accounts via WebSocket connection mode), the Feishu plugin successfully started in the previous session, and inbound Feishu messages route to agents normally.

This is a display-only bug — Feishu itself is healthy — but it caused real incident-response confusion (the operator initially thought Feishu was disconnected because the deep-status table appeared to omit it).

Error Message

(no disconnect / reconnect / error since the boot at 2026-05-03 09:03 PDT)

Root Cause

This is a display-only bug — Feishu itself is healthy — but it caused real incident-response confusion (the operator initially thought Feishu was disconnected because the deep-status table appeared to omit it).

Fix Action

Workaround

None needed for actual messaging — Feishu works. For visibility, operators can verify Feishu via:

  • gateway config.get channels.feishu.enabled
  • grep '\[feishu\]' ~/.openclaw/logs/gateway.log | tail -20
  • inbound message routing to agent:<id>:feishu:direct:<openId> sessions in openclaw status Sessions table.

Happy to provide the full sanitized status --deep output, gateway log excerpts, or the merged runtime config for channels.feishu if it helps.

Code Example

Channels
┌──────────┬─────────┬────────┬─────────────────────────────────────────────────┐
ChannelEnabledStateDetail├──────────┼─────────┼────────┼─────────────────────────────────────────────────┤
TelegramONOK     │ token config (… · len 46) · accounts 1/1└──────────┴─────────┴────────┴─────────────────────────────────────────────────┘

---

[feishu] feishu[market_lobster]: WebSocket client started
  [feishu] feishu[decision_lobster]: bot open_id recovered via background retry: ou_…

---

- plugins.entries.feishu: plugin not found: feishu (stale config entry ignored; remove it from plugins config)
RAW_BUFFERClick to expand / collapse

openclaw status --deep Channels table omits Feishu when Feishu is configured and connected

Summary

On OpenClaw 2026.5.3-1 (macOS arm64, Node 25.8.1), the Channels table rendered by openclaw status --deep only lists Telegram, even though channels.feishu is fully configured (10 enabled accounts via WebSocket connection mode), the Feishu plugin successfully started in the previous session, and inbound Feishu messages route to agents normally.

This is a display-only bug — Feishu itself is healthy — but it caused real incident-response confusion (the operator initially thought Feishu was disconnected because the deep-status table appeared to omit it).

Environment

  • OpenClaw: 2026.5.3-1 (pnpm install, npm latest)
  • OS: macOS 26.4.1 (arm64)
  • Node: v25.8.1
  • Channels configured: channels.telegram, channels.feishu
  • Feishu: 10 agent accounts + 1 default account, all enabled: true, connectionMode: websocket, appId/appSecret set
  • Gateway: local loopback, LaunchAgent installed, running

Repro

  1. Configure channels.feishu with at least one enabled account (websocket mode).
  2. Start gateway, confirm Feishu WebSocket connections succeed in ~/.openclaw/logs/gateway.log (e.g. [feishu] feishu[<account>]: WebSocket client started and bot open_id recovered via background retry).
  3. Send a Feishu DM to any configured agent — it routes correctly and the agent responds.
  4. Run openclaw status --deep.

Expected

The Channels table lists both Telegram and Feishu, with Feishu showing per-account state (e.g. accounts 11/11).

Actual

The Channels table lists only Telegram:

Channels
┌──────────┬─────────┬────────┬─────────────────────────────────────────────────┐
│ Channel  │ Enabled │ State  │ Detail                                          │
├──────────┼─────────┼────────┼─────────────────────────────────────────────────┤
│ Telegram │ ON      │ OK     │ token config (… · len 46) · accounts 1/1        │
└──────────┴─────────┴────────┴─────────────────────────────────────────────────┘

The Security audit section in the same status --deep run does reference channels.feishu.accounts.default.groupPolicy, confirming the runtime sees Feishu config. The Health section only lists Telegram. So Feishu is loaded by the runtime but never rendered into the Channels/Health summary tables.

Evidence Feishu is actually live

  • Feishu WebSocket logs show all 10 lobster accounts plus default started cleanly:
    [feishu] feishu[market_lobster]: WebSocket client started
    [feishu] feishu[decision_lobster]: bot open_id recovered via background retry: ou_…
    (no disconnect / reconnect / error since the boot at 2026-05-03 09:03 PDT)
  • Inbound Feishu messages reach the right agent and produce normal responses (sessions appear as agent:<id>:feishu:direct:<openId> in the Sessions table).
  • gateway config.get channels.feishu.enabled returns true; full channels.feishu block is intact in the merged runtime config.

Likely cause

The Channels/Health renderer in status --deep appears to only enumerate channels that surfaced through the legacy plugin loader, not channels declared as built-in under channels.*. After Feishu was promoted from plugins.entries.feishu to a built-in channels.feishu block, the deep-status renderer was not updated to enumerate it.

A related symptom: every config reload still emits

- plugins.entries.feishu: plugin not found: feishu (stale config entry ignored; remove it from plugins config)

even though plugins.entries.feishu is not present in ~/.openclaw/openclaw.json. Something inside the runtime keeps re-injecting/expecting the legacy plugins.entries.feishu shape, and gateway config.patch to clear it is rejected with cannot change protected config paths: plugins.entries.feishu.enabled. This may be the same code path that the deep-status renderer relies on to discover Feishu.

Impact

  • Operator confusion during incidents — looks like Feishu died after upgrade.
  • Misleading health/probe surface for Feishu-primary deployments.

Suggested fix

  1. Update the status --deep Channels and Health renderers to enumerate built-in channels under channels.* (Feishu, and any other promoted-from-plugin channels), not only legacy plugin-discovered channels.
  2. Either persist the stale plugins.entries.feishu warning suppression once the plugin entry is gone, or unblock gateway config.patch for plugins.entries.feishu.* so operators can clean it up themselves.

Workaround

None needed for actual messaging — Feishu works. For visibility, operators can verify Feishu via:

  • gateway config.get channels.feishu.enabled
  • grep '\[feishu\]' ~/.openclaw/logs/gateway.log | tail -20
  • inbound message routing to agent:<id>:feishu:direct:<openId> sessions in openclaw status Sessions table.

Happy to provide the full sanitized status --deep output, gateway log excerpts, or the merged runtime config for channels.feishu if it helps.

extent analysis

TL;DR

Update the status --deep Channels and Health renderers to enumerate built-in channels under channels.*, including Feishu, to resolve the display-only bug.

Guidance

  • Verify that Feishu is correctly configured and connected by checking the gateway logs for WebSocket connection successes and inbound message routing.
  • Check the gateway config.get channels.feishu.enabled to confirm Feishu is enabled.
  • Review the merged runtime config for channels.feishu to ensure it is intact.
  • Consider updating the code to suppress the stale plugins.entries.feishu warning or unblock gateway config.patch for plugins.entries.feishu.* to allow operators to clean up the legacy config entry.

Example

No code snippet is provided as the issue is related to the rendering of the Channels table in the status --deep output, and the fix involves updating the underlying code to enumerate built-in channels.

Notes

The issue is specific to the display of Feishu in the Channels table and does not affect the actual functionality of Feishu. The suggested fix and guidance are based on the information provided in the issue and may require further investigation or debugging to fully resolve.

Recommendation

Apply the suggested fix to update the status --deep Channels and Health renderers to enumerate built-in channels under channels.*, as this will resolve the display-only bug and provide accurate visibility into Feishu's status.

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

openclaw - 💡(How to fix) Fix `openclaw status --deep` Channels table omits Feishu when Feishu is configured and connected [1 comments, 2 participants]