Plugins with global scope or a management permission (allow:global,
manage:projects, manage:teams, manage:delete) keep running outside a file
and can drive the management API. That feature is still in progress, so
only the bundled MCP plugin and plugins served from localhost, 127.0.0.1
or [::1] get it. The host check ignores letter case and a trailing dot.
The check runs at three points:
- parse-manifest throws global-not-allowed, so the plugin manager and the
dashboard install link refuse remote global plugins with a specific
message. Opening an installed plugin fetches its manifest again, so
plugins stored before this change are refused too.
- start-plugin! and load-plugin! refuse to run such a plugin and warn the
user; this also covers bundled plugins without a URL.
- has-permission? withholds the global permissions from stored remote
plugins, so the management API rejects them.
AI-assisted-by: claude-opus-5-5