Skip to main content

Feishu bot

Feishu (Lark) is a team chat platform used by companies for messaging and collaboration. This plugin connects OpenClaw to a Feishu/Lark bot using the platform’s WebSocket event subscription so messages can be received without exposing a public webhook URL.

Plugin required

Install the Feishu plugin:
Local checkout (when running from a git repo):

Quickstart

There are two ways to add the Feishu channel: If you just installed OpenClaw, run the wizard:
The wizard guides you through:
  1. Creating a Feishu app and collecting credentials
  2. Configuring app credentials in OpenClaw
  3. Starting the gateway
After configuration, check gateway status:
  • openclaw gateway status
  • openclaw logs --follow

Method 2: CLI setup

If you already completed initial install, add the channel via CLI:
Choose Feishu, then enter the App ID and App Secret. After configuration, manage the gateway:
  • openclaw gateway status
  • openclaw gateway restart
  • openclaw logs --follow

Step 1: Create a Feishu app

1. Open Feishu Open Platform

Visit Feishu Open Platform and sign in. Lark (global) tenants should use https://open.larksuite.com/app and set domain: "lark" in the Feishu config.

2. Create an app

  1. Click Create enterprise app
  2. Fill in the app name + description
  3. Choose an app icon
Create enterprise app

3. Copy credentials

From Credentials & Basic Info, copy:
  • App ID (format: cli_xxx)
  • App Secret
Important: keep the App Secret private. Get credentials

4. Configure permissions

On Permissions, click Batch import and paste:
Configure permissions

5. Enable bot capability

In App Capability > Bot:
  1. Enable bot capability
  2. Set the bot name
Enable bot capability

6. Configure event subscription

⚠️ Important: before setting event subscription, make sure:
  1. You already ran openclaw channels add for Feishu
  2. The gateway is running (openclaw gateway status)
In Event Subscription:
  1. Choose Use long connection to receive events (WebSocket)
  2. Add the event: im.message.receive_v1
⚠️ If the gateway is not running, the long-connection setup may fail to save. Configure event subscription

7. Publish the app

  1. Create a version in Version Management & Release
  2. Submit for review and publish
  3. Wait for admin approval (enterprise apps usually auto-approve)

Step 2: Configure OpenClaw

Choose Feishu and paste your App ID + App Secret.

Configure via config file

Edit ~/.openclaw/openclaw.json:

Configure via environment variables

Lark (global) domain

If your tenant is on Lark (international), set the domain to lark (or a full domain string). You can set it at channels.feishu.domain or per account (channels.feishu.accounts.<id>.domain).

Step 3: Start + test

1. Start the gateway

2. Send a test message

In Feishu, find your bot and send a message.

3. Approve pairing

By default, the bot replies with a pairing code. Approve it:
After approval, you can chat normally.

Overview

  • Feishu bot channel: Feishu bot managed by the gateway
  • Deterministic routing: replies always return to Feishu
  • Session isolation: DMs share a main session; groups are isolated
  • WebSocket connection: long connection via Feishu SDK, no public URL needed

Access control

Direct messages

  • Default: dmPolicy: "pairing" (unknown users get a pairing code)
  • Approve pairing:
  • Allowlist mode: set channels.feishu.allowFrom with allowed Open IDs

Group chats

1. Group policy (channels.feishu.groupPolicy):
  • "open" = allow everyone in groups (default)
  • "allowlist" = only allow groupAllowFrom
  • "disabled" = disable group messages
2. Mention requirement (channels.feishu.groups.<chat_id>.requireMention):
  • true = require @mention (default)
  • false = respond without mentions

Group configuration examples

Allow all groups, require @mention (default)

Allow all groups, no @mention required

Allow specific users in groups only


Get group/user IDs

Group IDs (chat_id)

Group IDs look like oc_xxx. Method 1 (recommended)
  1. Start the gateway and @mention the bot in the group
  2. Run openclaw logs --follow and look for chat_id
Method 2 Use the Feishu API debugger to list group chats.

User IDs (open_id)

User IDs look like ou_xxx. Method 1 (recommended)
  1. Start the gateway and DM the bot
  2. Run openclaw logs --follow and look for open_id
Method 2 Check pairing requests for user Open IDs:

Common commands

Note: Feishu does not support native command menus yet, so commands must be sent as text.

Gateway management commands


Troubleshooting

Bot does not respond in group chats

  1. Ensure the bot is added to the group
  2. Ensure you @mention the bot (default behavior)
  3. Check groupPolicy is not set to "disabled"
  4. Check logs: openclaw logs --follow

Bot does not receive messages

  1. Ensure the app is published and approved
  2. Ensure event subscription includes im.message.receive_v1
  3. Ensure long connection is enabled
  4. Ensure app permissions are complete
  5. Ensure the gateway is running: openclaw gateway status
  6. Check logs: openclaw logs --follow

App Secret leak

  1. Reset the App Secret in Feishu Open Platform
  2. Update the App Secret in your config
  3. Restart the gateway

Message send failures

  1. Ensure the app has im:message:send_as_bot permission
  2. Ensure the app is published
  3. Check logs for detailed errors

Advanced configuration

Multiple accounts

Message limits

  • textChunkLimit: outbound text chunk size (default: 2000 chars)
  • mediaMaxMb: media upload/download limit (default: 30MB)

Streaming

Feishu supports streaming replies via interactive cards. When enabled, the bot updates a card as it generates text.
Set streaming: false to wait for the full reply before sending.

Multi-agent routing

Use bindings to route Feishu DMs or groups to different agents.
Routing fields:
  • match.channel: "feishu"
  • match.peer.kind: "direct" or "group"
  • match.peer.id: user Open ID (ou_xxx) or group ID (oc_xxx)
See Get group/user IDs for lookup tips.

Configuration reference

Full configuration: Gateway configuration Key options:

dmPolicy reference


Supported message types

Receive

  • ✅ Text
  • ✅ Rich text (post)
  • ✅ Images
  • ✅ Files
  • ✅ Audio
  • ✅ Video
  • ✅ Stickers

Send

  • ✅ Text
  • ✅ Images
  • ✅ Files
  • ✅ Audio
  • ⚠️ Rich text (partial support)