Skip to content

Silent channel disable when plugins.allow excludes bundled channel plugins #56714

@jzcyqf

Description

@jzcyqf

Bug Report

Version: 2026.3.24 / 2026.3.28-beta.1
Platform: macOS arm64, Node 25.8.0

Summary

When plugins.allow is set but does not include telegram or whatsapp, these channel plugins are silently disabled. The gateway boots normally, openclaw doctor passes, config validate passes, and openclaw status shows gateway=loaded — but channels never initialize. The channels list is simply empty with no explanation.

Root Cause

resolveEffectiveEnableState() in config-state-BCw27kbO.js returns { enabled: false, reason: 'not in allowlist' } for channel plugins when they're missing from plugins.allow. This happens silently — no log warning, no status indication, no doctor alert.

Interestingly, resolveGatewayStartupPluginIds() correctly identifies telegram/whatsapp as needed based on channel config, but resolveEffectiveEnableState() overrides this without any output.

Steps to Reproduce

  1. Have a working OpenClaw setup with Telegram and WhatsApp configured
  2. Install a third-party plugin that modifies plugins.allow
  3. While debugging the third-party plugin, reduce plugins.allow to only the third-party plugin ID (e.g., ['acpx'])
  4. Restart the gateway
  5. Channels silently disappear — no error, no warning

Impact

This caused a 2.5-hour outage. Every diagnostic tool said the system was healthy. The root cause was only found by reading the minified dist source and calling resolveEffectiveEnableState() directly in a REPL.

Expected Behavior

At minimum, one of:

  • A warning log: [telegram] plugin disabled: not in plugins.allow
  • openclaw status channels list showing telegram: disabled (not in allowlist) instead of empty
  • openclaw doctor detecting configured channels that are not in plugins.allow and flagging it

Ideal fix: Bundled channel plugins with valid channel config (i.e., channels.telegram.enabled: true) should either bypass the allowlist check or be auto-added to plugins.allow when a channel is configured.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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