Skip to content

Project-scoped extension canvases are declared but not routable by open_canvas #4056

Open

Description

@sull364

Summary

Project-scoped extensions loaded from .github/extensions/ can initialize and register a canvas with createCanvas() + joinSession(), and the canvas appears to be declared in the runtime/system prompt. However, the canvas is not added to the runtime routing table: open_canvas cannot open it and list_canvas_capabilities does not find it.

The same canvas code works when installed as a user-scoped extension under ~/.copilot/extensions/.

Version

  • Copilot CLI: 1.0.69
  • Runtime: 1.0.66-1
  • OS: Windows 11 (x64)

Repro

  1. Create a project-scoped extension under .github/extensions/<extension-name>/extension.mjs.
  2. Register a canvas using createCanvas().
  3. Start the extension session with joinSession({ canvases: [canvas] }).
  4. In Copilot CLI, ask to open that canvas or call open_canvas for the canvas ID.
  5. Call list_canvas_capabilities for the same canvas ID/name.

Note: Extension logs confirm full initialization — joinSession completes, the catalog loads, and the HTTP server responds to requests. The extension process is healthy; only the runtime routing is broken.

Expected behavior

Project-scoped canvases registered through joinSession({ canvases: [...] }) should be added to the runtime canvas routing table and should be openable by open_canvas.

Actual behavior

  • The extension initializes successfully.
  • The canvas appears to be declared to the model/runtime.
  • open_canvas fails with connection closed.
  • list_canvas_capabilities returns No canvas matches.

Workaround

Opening the extension's local HTTP URL directly in a browser canvas works. Installing the same extension as a user-scoped extension under ~/.copilot/extensions/ also works.

Impact

Project-scoped Canvas extensions can be discovered/declared but cannot be opened, which blocks repo-local Canvas experiences from working without a user-scoped install or manual browser workaround.

Activity

  1. added
    area:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agents
    area:toolsBuilt-in tools: file editing, shell, search, LSP, git, and tool call behavior
    and removed on Jul 8, 2026
  2. patniko commented on Oct 26, 2026

    @patniko
    Collaborator

    Thanks for the report. We've shipped fixes in this area since this was filed (most recently in Copilot CLI v1.0.95), and we believe this may now be resolved. Could you retest on the latest release (Copilot CLI v1.0.103) and let us know whether you still see it? If we don't hear back in a couple of weeks, we may close this issue — you can always reopen it.

    Triaged as part of a Copilot SDK backlog review, with help from GitHub Copilot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agentsarea:toolsBuilt-in tools: file editing, shell, search, LSP, git, and tool call behaviormore-info-needed

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions