Follow Discord
Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.265 ·

Plugins gain slash-command and UI-pane APIs

Plugins can now register/run/list slash commands and open persistent UI panes via new host APIs

TierNothing to try yethow much it should matter to you
Useful3my rating, 1 to 5
Signal3worth watching, 1 to 5
AreaUI Panelswhat it touches
KindIn Developmentin v2.1.265,
Group of 8 Nothing to try yet Notable No documentation found

Plugins can now register/run/list slash commands and open persistent UI panes via new host APIs

What

  • Plugins can now register, run, list, and describe custom slash commands using new host operations command.register, command.run, command.list, and command.describe.
    • command.register adds a new slash command (name, description, argument hint, immediate flag), rejecting name collisions with other plugins, built-in commands, or MCP commands, and capping how many commands one plugin can register.
    • command.run lets a plugin queue a command invocation for the current session.
    • command.list lists available commands together with where each comes from (built-in, plugin, user, or MCP).
    • command.describe lets a hook dynamically override a command's description, argument hint, or hidden state.
    • A plugin command with no matching command.run hook now replies with an explanatory stub message instead of failing silently.
  • Plugins can also open and close a new UI surface called a "pane": a persistent, titled window, using new ui.open/ui.close operations (with id, title, and focus options). Each plugin can have at most 8 panes open at once.
  • Internally, the hooks event dispatch table was expanded to recognize ui.open, ui.close, command.run, and command.describe as valid events (and the old PreToolUse event was renamed classic.PreToolUse without changing its behavior).

Why

This gives plugins much deeper integration with Claude Code: they can add slash commands that behave like built-in ones, and they can show their own persistent UI panels instead of being limited to existing surfaces.

Read from
Names in the bundleui.openui.close

See this entry in the whole of v2.1.265 →

Feedback