microsoft / microsoft/foundry-dev-tools

Allow selected Canvas actions to queue while Copilot is working

Open
#692 1 comment 0 reactions 1 assignee View on GitHub

@qinezh is already working on this.

Since Aug 17, 2026.

canvas
Dominant language
JavaScript
Stars
2.1k
Forks
260
Avg merge
42m
Merged PRs (30d)
29

Description

Context

GitHub Copilot App v1.1.10 enables background items and queued-message management by default and lets users remove pending queued or steering messages from the conversation transcript:
https://github.com/github/app/releases/tag/v1.1.10

The Copilot SDK supports session.send({ prompt, mode: "enqueue" }), but the Microsoft Foundry canvas currently disables all prompt-producing actions while Copilot is working and also rejects them server-side with 409 copilot_running.

Relevant guards currently live in:

  • client/domain.ts (getActionAvailability)
  • src/api/canvas-services.mjs (sendPrompt)

Proposed behavior

Allow selected independent canvas actions to be queued while Copilot is busy. Initial candidates include applying another model, tool, skill, or guardrail to the current agent request.

  • Send eligible actions explicitly with mode: "enqueue".
  • Use the Copilot conversation transcript as the source of truth for queue visibility and removal; do not build a duplicate queue manager in the canvas.
  • Clearly present the action as queued rather than immediately running.
  • Keep create-agent and deploy actions blocked initially because they have workspace prerequisites and refresh/telemetry lifecycle state that currently assumes an active operation.

Correctness considerations

  • A removed queued message must not leave stale pending refresh or telemetry state.
  • Multiple queued canvas prompts must preserve FIFO behavior and their selected project/agent context.
  • session.idle may not occur until the full queue drains, so refresh logic must not assume an idle event after every queued turn.
  • Deployment must continue to verify that a local agent exists before it is accepted.
  • Queue support should degrade safely on older or unsupported hosts.

Acceptance criteria

  • An allowlist defines which canvas actions may queue while a session is running.
  • Eligible actions can be submitted while Copilot is working and appear in the host transcript queue.
  • Users can remove a queued canvas action using the host UI without leaving stale canvas operation state.
  • Create-agent and deploy remain unavailable until their dependency and cancellation semantics are implemented.
  • Queued actions preserve project, selected agent, and resource context.
  • Tests cover FIFO submission, queue removal, session restart, errors, and the final idle transition.
  • The behavior is validated in a packaged canvas on GitHub Copilot App v1.1.10 or newer.

Expected benefit

Users can continue configuring an agent without waiting for the current Copilot turn to finish, while queue ordering and cancellation remain visible in the native Copilot experience.

Contributor guide

No contributing guide indexed for this repository

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.