Skip to content

[Bug]: **Feishu plugin registers all tools twice** #52572

@wongsaan

Description

@wongsaan

Bug type

Behavior bug (incorrect output/state without crash)

Summary

Feishu plugin registers all tools twice

Running openclaw status --verbose on v2026.3.13 (61d171a) shows every Feishu sub-plugin (feishu_doc, feishu_chat, feishu_wiki, feishu_drive, feishu_bitable) registered twice.

Root cause

The feishu extension has two overlapping registration paths that both fire:

  1. openclaw.plugin.json declares "skills": ["./skills"], which triggers declarative auto-registration of all tools in the skills/ directory.
  2. index.ts exports a register() function that programmatically calls registerFeishuDocTools(), registerFeishuChatTools(), etc.

Both paths run during plugin load, resulting in duplicate registration.

Expected behavior

Each tool should be registered exactly once.

Suggested fix

Remove the "skills" field from extensions/feishu/openclaw.plugin.json and let register() in index.ts be the sole registration entry point (it also handles setFeishuRuntime and registerChannel).

Alternatively, remove the manual registerXxxTools() calls from register() and rely on the declarative skills loading — but that would require moving the runtime/channel init elsewhere.

Repro

openclaw status --verbose

Environment

  • OpenClaw 2026.3.13 (61d171a)
  • macOS 15.7.4

Steps to reproduce

[09:52:24] [~/.openclaw] ❱❱❱ openclaw status --verbose

Expected behavior

[09:52:24] [~/.openclaw] ❱❱❱ openclaw status --verbose

🦞 OpenClaw 2026.3.13 (61d171a) — I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.

09:52:28 [plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes
09:52:28 [plugins] feishu_chat: Registered feishu_chat tool
09:52:28 [plugins] feishu_wiki: Registered feishu_wiki tool
09:52:28 [plugins] feishu_drive: Registered feishu_drive tool
09:52:28 [plugins] feishu_bitable: Registered bitable tools

Actual behavior

[09:52:24] [~/.openclaw] ❱❱❱ openclaw status --verbose

🦞 OpenClaw 2026.3.13 (61d171a) — I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.

09:52:28 [plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes
09:52:28 [plugins] feishu_chat: Registered feishu_chat tool
09:52:28 [plugins] feishu_wiki: Registered feishu_wiki tool
09:52:28 [plugins] feishu_drive: Registered feishu_drive tool
09:52:28 [plugins] feishu_bitable: Registered bitable tools

09:52:28 [plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes
09:52:28 [plugins] feishu_chat: Registered feishu_chat tool
09:52:28 [plugins] feishu_wiki: Registered feishu_wiki tool
09:52:28 [plugins] feishu_drive: Registered feishu_drive tool
09:52:28 [plugins] feishu_bitable: Registered bitable tools

OpenClaw version

2026.3.13

Operating system

macOS 15.7.4

Install method

No response

Model

anthropic/claude-opus-4-6

Provider / routing chain

anthropic

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingbug:behaviorIncorrect behavior without a crash

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions