hermes - 💡(How to fix) Fix [Bug]: Dashboard plugin loader bypasses plugins.enabled config [1 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Additional Logs / Traceback (optional)

Root Cause

Root Cause Analysis (optional)

Fix Action

Fixed

Code Example

Report       https://paste.rs/vTScD
agent.log    https://paste.rs/Ux9oO
gateway.log  https://paste.rs/2MK4J

---
RAW_BUFFERClick to expand / collapse

Bug Description

This issue was reported by Hermes Agent on behalf of @oxngon.


The dashboard plugin loader (_discover_dashboard_plugins() in hermes_cli/web_server.py) loads all bundled plugins that have a dashboard/manifest.json — it never checks the plugins.enabled config. This is inconsistent with the agent-side plugin system, which correctly skips non-backend/non-platform plugins unless they appear in plugins.enabled.

Result: Bundled test/example plugins auto-load in the dashboard even when plugins.enabled: [] (the default opt-in state).

Steps to Reproduce

Have plugins.enabled: [] in ~/.hermes/config.yaml (the default) Start the dashboard Navigate to the Sessions page See the "Example" plugin banner injected via the sessions:top slot

Expected Behavior

The dashboard should respect plugins.enabled like the agent does. With plugins.enabled: [], no bundled standalone plugins (example, kanban, hermes-achievements) should auto-load.

Actual Behavior

All bundled plugins with a dashboard/manifest.json load unconditionally. The "Example" plugin renders a banner on the Sessions page with no way to disable it via config.

Affected Component

Other, Configuration (config.yaml, .env, hermes setup)

Messaging Platform (if gateway-related)

N/A (CLI only)

Debug Report

Report       https://paste.rs/vTScD
agent.log    https://paste.rs/Ux9oO
gateway.log  https://paste.rs/2MK4J

Operating System

Ubuntu 24.04

Python Version

3.11.15

Hermes Version

Hermes v0.14.0 (2026.5.16)

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

_discover_dashboard_plugins() at web_server.py:3908 scans plugins/*/dashboard/manifest.json and returns all found plugins without any config check. Compare with the agent-side loader in plugins.py:920-940 which explicitly skips non-backend/non-platform plugins unless they appear in plugins.enabled.

The two plugin systems are independent: Agent (plugins.py): respects plugins.enabled ✅ Dashboard (web_server.py): ignores plugins.enabled ❌

Proposed Fix (optional)

Add a _get_dashboard_enabled() helper that mirrors _get_enabled_plugins() from plugins.py, and gate _discover_dashboard_plugins() to skip standalone plugins not in the enabled set. Bundled backend/platform plugins still auto-load (matching the agent loader). Add "kind": "standalone" to the three bundled dashboard plugin manifests (example, kanban, hermes-achievements).

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix [Bug]: Dashboard plugin loader bypasses plugins.enabled config [1 pull requests]