Skip to content

plugins.allow semantics undocumented — unexpectedly gates bundled channel plugins #56717

Description

@jzcyqf

Documentation / Design Issue

Version: 2026.3.24 / 2026.3.28-beta.1

Summary

The plugins.allow config field is documented (implicitly) as a trust allowlist for third-party/external plugins. However, it also gates bundled channel plugins (telegram, whatsapp, discord, etc.) when the list is non-empty. This is counterintuitive and undocumented.

The Problem

Users reasonably expect:

  • plugins.allow = controls which third-party plugins are trusted
  • Bundled channel plugins = always available if channels.telegram.enabled: true

The actual behavior:

  • plugins.allow = controls ALL plugins including bundled channels
  • If any value is in plugins.allow, ALL plugins not in the list are disabled
  • A user managing third-party plugins who modifies plugins.allow will silently break their channels

Suggested Fix

Either:

  1. Document this clearly — add to docs/config reference that bundled channel plugins must be included in plugins.allow when the list is non-empty
  2. Change the semantics — bundled channel plugins with valid channel config should be exempt from the allowlist check, or auto-added when a channel is configured
  3. Warn clearly — if a channel is configured but its plugin is not in plugins.allow, emit a prominent warning at startup

Related

This is the root cause behind issue #56714 (silent channel disable). Fixing the documentation would have reduced a 2.5-hour debugging session to a 5-minute config check.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions