← Tech

Feishu Gateway Startup 'Duplicate Plugin' Warning: Root Cause and Fix

2026-03-15 DevOps openclawduplicate plugin飞书gateway

Problem

After openclaw gateway start, the log shows:

[warn] Duplicate plugin detected: feishu

Plugin 'feishu' is being loaded multiple times. Only the first instance will be used.

Feishu messages send and receive fine — everything works. But the warning appears on every startup.

Root Cause

The same Feishu plugin is being loaded twice:

1. Auto-load: When extensions/openclaw-lark/ exists, OpenClaw scans and loads it automatically

2. Explicit declaration: A feishu plugin entry is manually defined in openclaw.json

Both paths trigger. The scheduler detects the duplicate, uses the first (auto-loaded) instance, ignores the second, and logs a warning.

This typically happens when you manually configured the Feishu plugin first, then installed the openclaw-lark extension without cleaning up the old config.

Check if It Affects Functionality

# Test Feishu plugin

openclawctl test-plugin feishu

# Or send a test message and watch the gateway log

tail -f ~/.openclaw/logs/gateway.log | grep -E "feishu|plugin"

If messages work and you only see [warn] (not [error]), functionality is completely unaffected. This is a warning, not an error.

How to Suppress the Warning

Find openclaw.json and remove the explicit Feishu plugin entry:

# Backup first

cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak

# Inspect current config

cat ~/.openclaw/openclaw.json | jq '.plugins'

Before:

{

"plugins": [

{ "name": "feishu", "appId": "cli_xxx", "appSecret": "xxx" },

{ "name": "other-plugin" }

]

}

After:

{

"plugins": [

{ "name": "other-plugin" }

]

}

Restart the gateway after the change. The warning disappears. Feishu continues working via the openclaw-lark extension.

When Not to Touch It

Leave it alone if:

The warning is harmless. Suppressing it when everything works is a cosmetic fix, not a required one.

Prevention

After installing a new extension, check for overlap with existing manual config:

# List all loaded plugins

openclawctl list-plugins

# Compare against openclaw.json declarations

cat ~/.openclaw/openclaw.json | jq '.plugins[].name'

If there's overlap, pick one loading method and remove the other.