microsoft / microsoft/PowerToys

Proposal: Command Palette JS/TS Extensions

Open
#48,707 0 comments 2 reactions 1 assignee View on GitHub

@michaeljolley is already working on this.

Since Jun 18, 2026.

CmdPal-JS-SDK Idea-Enhancement Product-Command Palette
Dominant language
C
Stars
139k
Forks
8.6k
PR merge metrics
PR metrics pending

Description

We have drafted a new specification for JavaScript and TypeScript extensions in Command Palette.

The goal is to expand CmdPal extension authoring beyond in-process WinRT/COM by enabling isolated Node.js-based extensions communicating with the host over JSON-RPC 2.0 via stdio.

This issue is intended to collect high-level feedback on the proposal and track follow-up work items.

Spec document:
CmdPal JSON-RPC Spec Overview (jsonrpc-spec branch)

What this proposal covers (high level)

  • Per-extension process isolation (one Node.js process per extension)
  • JSON-RPC 2.0 transport over stdio with LSP-style framing
  • Type-safe TypeScript SDK surface aligned with CmdPal concepts
  • Lifecycle model (discover, initialize, query, dispose, restart)
  • Developer ergonomics such as hot-reload and debugger attach
  • Support for core command/page/content scenarios expected from CmdPal extensions

Why this direction

  • Improves accessibility for web developers (TypeScript, npm, Node.js ecosystem)
  • Increases resilience through process isolation and crash containment
  • Keeps host/extension boundaries explicit and protocol-driven
  • Provides a scalable foundation for future extension capabilities

Out of scope for this initial spec

  • WebView/browser-rendered extension UI
  • Marketplace and auto-update infrastructure
  • Full permission sandboxing model
  • Non-JS language runtimes (for now)

Feedback requested

We would especially appreciate input on:

  • API shape and ergonomics for extension developers
  • JSON-RPC method boundaries and protocol design
  • Extension lifecycle and failure handling behavior
  • Manifest/schema expectations for packaging/discovery
  • Security boundaries and permission model priorities
  • Performance considerations for one-process-per-extension

Tracking and follow-ups

Please keep this thread focused on high-level spec feedback.

For implementation details, bugs, or discrete feature work, please open separate atomic issues and link them here so we can track progress cleanly.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.