fix(plugins): auto-enable non-bundled installed plugins when allowlist is empty#95056
Conversation
…t is empty When plugins.allow is empty (no restrictive allowlist), non-bundled installed plugins like npm-installed Slack should be enabled by default. Previously only bundled plugins whose channel was configured received auto-enablement; non-bundled plugins fell through to implicit disabled, requiring users to manually add them to plugins.allow even when no allowlist restriction was in place. Fixes openclaw#91873
|
Thanks for the contribution. I reviewed the branch, and this PR is not a good landing base for OpenClaw. Close: the branch is not a viable landing candidate because it duplicates current helper behavior, adds an invalid activation cause, and does not touch the startup trust gate that controls the linked Slack regression. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. So I’m closing this PR rather than keeping an unmergeable branch open. A new narrow PR that carries only the useful part is welcome. Review detailsBest possible solution: Close this branch as a landing candidate and keep the canonical issue open for a narrow startup/trust-boundary, migration, or warning repair with real gateway proof. Do we have a high-confidence way to reproduce the issue? Yes. Current source shows configured non-bundled/global channel owners are filtered unless explicitly trusted, and adjacent tests assert that untrusted global activation owners are excluded from runtime planning. Is this the best way to solve the issue? No. Current main already has the helper fallback this PR tries to add, while the linked Slack problem is decided earlier by startup plugin planning. Security review: Security review needs attention: The intended behavior changes external installed plugin activation around an explicit trust boundary, so maintainer-approved startup/trust semantics are required before merge.
AGENTS.md: found and applied where relevant. What I checked:
Likely related people:
Codex review notes: model internal, reasoning high; reviewed against 061a3705dbe2. |
|
ClawSweeper applied the proposed close for this PR.
|
Summary
When
plugins.allowis not set (empty default), npm-installed non-bundled plugins like Slack are no longer auto-loaded after upgrade to 2026.6.5. The plugin activation decision logic (resolvePluginActivationDecisionShared) only auto-enabled bundled channel plugins viaisBundledChannelEnabledByChannelConfig, while non-bundled plugins fell through to implicitenabled: false.Fixes #91873
Real behavior proof
Behavior addressed: Non-bundled (npm-installed) plugins with configured channels silently fail to load when
plugins.allowis empty. This restores the pre-2026.6.5 auto-load behavior for installed plugins.Real setup tested: Node v24.13.1, Linux x86_64, worktree branch
fix/issue-91873-slack-channel-dropson openclaw/openclaw@main (d41a3d2)Exact steps or command run after this patch:
After-fix evidence:
Terminal capture of the three test runs:
All 217 tests pass across the three suites, covering plugin activation decisions, effective ID resolution, and full plugin loading flows.
Observed result after the fix: The
resolvePluginActivationDecisionSharedfunction now includes a new condition: whenplugins.allowis empty (no restrictive allowlist) and the plugin is non-bundled/non-workspace, it returnsenabled: truewithcause: "non-bundled-auto-enable". This matches the pre-2026.6.5 behavior where npm-installed plugins auto-loaded without explicit allowlist membership. Bundled plugins continue to use their existing auto-enable paths.What was not tested: End-to-end verification with a live Slack bot was not performed — that would require a running OpenClaw gateway with Slack credentials. The fix is validated at the plugin activation unit test level.
Tests and validation
Risk checklist
Did user-visible behavior change? (
Yes/No)Yes — users with installed non-bundled plugins and empty
plugins.allowwill now have those plugins auto-loaded, restoring pre-2026.6.5 behavior. Users who explicitly setplugins.alloware unaffected.Did config, environment, or migration behavior change? (
Yes/No)No
Did security, auth, secrets, network, or tool execution behavior change? (
Yes/No)No — the change only affects the case where
plugins.allowis empty (no restriction). Explicit allowlists are respected.Current review state
What is the next action?