hermes - 💡(How to fix) Fix [workflow-engine] chore: manifest gaps, side-effectful register(), dead code, unauth kanban dispatch

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…

Fix Action

Fix / Workaround

WE-8: unauthenticated internal kanban dispatch

plugins/workflow-engine/engine/dispatcher/kanban.py:21, 103-104 — POSTs to hardcoded http://127.0.0.1:8642/api/plugins/kanban/tasks with no auth header. If the gateway enforces session auth on plugin APIs this 401s; if not, it's an unauthenticated internal call surface. Fix: forward the gateway session token, or document why localhost-only is acceptable.

RAW_BUFFERClick to expand / collapse

Severity: MEDIUM (convention cleanup bundle)

Several convention divergences from upstream NousResearch plugin standards. Bundled.

WE-5: plugin.yaml manifest gaps

plugins/workflow-engine/plugin.yaml:1-6version: 0.1.0 unquoted (upstream quotes semver); no pip_dependencies though code imports httpx, fastapi, pyyaml; no requires_env; no hooks:. Violates rubric #1. Fix: quote version, declare pip_dependencies, add requires_env: [].

WE-6: register() is not side-effect-free

plugins/workflow-engine/__init__.py:35 and dashboard/plugin_api.py:37register() eagerly calls get_engine() which opens SQLite, runs migrations, seeds defaults, and writes a manifest (heavy I/O). Module-level _engine = get_engine() does the same at import. Violates rubric #2 (register must be thin / no I/O / no client init). Fix: defer engine construction to first request/tool call; the _shared singleton already supports lazy init.

WE-7: dead temp-file path in script node

plugins/workflow-engine/engine/nodes/script.py:132-151use_temp is set True at 134 then unconditionally reset to False in both inline branches (137-138, 142). The temp-file block (145-151) is unreachable; the finally unlink (174-179) never fires. Fix: remove the dead path, or fix the inline bun/uv branches to use it where intended.

WE-8: unauthenticated internal kanban dispatch

plugins/workflow-engine/engine/dispatcher/kanban.py:21, 103-104 — POSTs to hardcoded http://127.0.0.1:8642/api/plugins/kanban/tasks with no auth header. If the gateway enforces session auth on plugin APIs this 401s; if not, it's an unauthenticated internal call surface. Fix: forward the gateway session token, or document why localhost-only is acceptable.


Filed from opus-4.8 plugin audit (workflow-engine).

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 [workflow-engine] chore: manifest gaps, side-effectful register(), dead code, unauth kanban dispatch