Skip to content

2026.09.46 — 2026-09-27 ​

Breaking ​

  • Check each plugin assistant tool's declared permission before it runs (6661dfc5)

    A plugin's MCP tools now declare what they need, and Studio enforces it. Each mcpTools entry in plugin.json requires scope (cluster or global) and permission (one of the plugin's own permissions), and posture is read or write. Optional params list the values, shapes and notes the tool's schema leaves out.

    Before a plugin tool runs, Studio checks the caller's permission: on the cluster named by the tool's clusterId argument, where a denial is hidden exactly as Studio's own tools hide it, or globally, where it names the permission. The plugin's code never runs when the check fails. studio_help and studio://tools now show each plugin tool's permission, scope and parameters.

    Activation is refused when a plugin registers a tool it does not declare (or the reverse), when a cluster-scoped tool has no required clusterId argument, or when readOnlyHint contradicts the declared posture. A tool declared write no longer fails activation.

Added ​

  • Add a YAML and JSON code editor for plugin screens (0efcf8db)

    The plugin SDK exports CodeEditor, the console's own editor for YAML and JSON documents: line numbers, a lint gutter, and diagnostics passed in by line and column (the server stays the validator), summarised in a live region so a screen reader hears that the document has problems. Without a change handler it is read-only. Its colours are shared with the SQL console.

  • Check each plugin assistant tool's declared permission before it runs (6661dfc5)

    A plugin's MCP tools now declare what they need, and Studio enforces it. Each mcpTools entry in plugin.json requires scope (cluster or global) and permission (one of the plugin's own permissions), and posture is read or write. Optional params list the values, shapes and notes the tool's schema leaves out.

    Before a plugin tool runs, Studio checks the caller's permission: on the cluster named by the tool's clusterId argument, where a denial is hidden exactly as Studio's own tools hide it, or globally, where it names the permission. The plugin's code never runs when the check fails. studio_help and studio://tools now show each plugin tool's permission, scope and parameters.

    Activation is refused when a plugin registers a tool it does not declare (or the reverse), when a cluster-scoped tool has no required clusterId argument, or when readOnlyHint contradicts the declared posture. A tool declared write no longer fails activation.

Fixed ​

  • Pass a plugin assistant tool's malformed-call refusal through as is (c94c4f6b)

    A plugin tool that refused a malformed call with the protocol's own error (-32602) reached the caller as "That call failed inside plugin", so a model could not see what it got wrong. The refusal now arrives unchanged, as it does from Studio's own tools.

Apache-2.0. Apache ActiveMQ and Apache ActiveMQ Artemis are trademarks of the Apache Software Foundation. Artemis Studio is an independent project, not produced by, endorsed by, or affiliated with the ASF.