← Back to Notes
2026-03-18

Day 16: openclaw-lark Default Account Trap — Credentials Must Go at the Top Level

DevOps

openclaw-lark has a counterintuitive design for the default account: `getLarkAccount()` when `requestedId === 'default'` skips `channels.feishu.accounts.default` entirely and only reads the top-level `channels.feishu`.

The trap: placing appId/appSecret inside accounts.default feels natural (consistent with other accounts), but the default account ends up with `configured: false`, WebSocket never starts, and no messages arrive — silently.

The fix: put appId/appSecret/dmPolicy/groupPolicy/allowFrom directly under the top-level `channels.feishu`, not nested under accounts.

As a bonus, fully disabling the built-in feishu plugin (enabled: false) resolved the dual-plugin conflict entirely — all agents now use unified streaming card output.