When the Feishu WebSocket connection drops (e.g., due to Feishu server maintenance or network glitch), the Lark SDK enters a **permanent reconnect loop** with exponential backoff. The gateway process stays alive but becomes completely unresponsive — the Feishu bot goes offline and messages can neither be sent nor received.
[info] [ws] unable to connect to the server after trying 890 times ← after ~24 hours
According to the docs, WebSocket reconnection should use "exponential backoff with a max of 3 retries and 30s interval." In practice:
655:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 1 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:41:38.156Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:41:38.156+08:00"}
1659:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 2 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:43:18.696Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:43:18.696+08:00"}
1663:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 3 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:44:59.112Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:44:59.112+08:00"}
1667:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 4 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:46:39.922Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:46:39.922+08:00"}
1670:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 5 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:48:20.262Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:48:20.262+08:00"}
Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
Problem Description
When the Feishu WebSocket connection drops (e.g., due to Feishu server maintenance or network glitch), the Lark SDK enters a **permanent reconnect loop** with exponential backoff. The gateway process stays alive but becomes completely unresponsive — the Feishu bot goes offline and messages can neither be sent nor received. [info] [ws] unable to connect to the server after trying 890 times ← after ~24 hoursSteps to reproduce
Key observations:
openclaw channels status --probestill reports "works" even while the bot is effectively unreachableopenclaw gateway restartbreaks the loop and restores connectivityEnvironment
Expected behavior
Expected Behavior
According to the docs, WebSocket reconnection should use "exponential backoff with a max of 3 retries and 30s interval." In practice:
Proposed Fix
Add a watchdog mechanism at the OpenClaw gateway level:
openclaw channels login) or full WebSocket session resetchannels.feishu.reconnectMaxAttemptsto let users tune this behaviorActual behavior
he retry counter never resets or caps — it grows indefinitely
openclaw channels status --probestill reports "works" even while the bot is effectively unreachableopenclaw gateway restartbreaks the loop and restores connectivityOpenClaw version
2026.3.13
Operating system
Ubuntu(WSL2)
Install method
npm
Model
minimax 2.7
Provider / routing chain
openclaw -minimax-feishu
Additional provider/model setup details
No response
Logs, screenshots, and evidence
655:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 1 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:41:38.156Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:41:38.156+08:00"} 1659:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 2 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:43:18.696Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:43:18.696+08:00"} 1663:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 3 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:44:59.112Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:44:59.112+08:00"} 1667:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 4 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:46:39.922Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:46:39.922+08:00"} 1670:{"0":"[info]: [ 'ws', 'unable to connect to the server after trying 5 times")' ]","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-01T13:48:20.262Z","logLevelId":3,"logLevelName":"INFO","path":{"fullFilePath":"file:///home/lyd/.npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852:46","fileName":"subsystem-D2xHvZZd.js","fileNameWithLine":"subsystem-D2xHvZZd.js:852","fileColumn":"46","fileLine":"852","filePath":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js","filePathWithLine":".npm-global/lib/node_modules/openclaw/dist/subsystem-D2xHvZZd.js:852","method":"console.info"}},"time":"2026-04-01T21:48:20.262+08:00"}Impact and severity
No response
Additional information
No response