Chat is a poor workbench
VS Code 1.142 adds canvases in preview. A canvas opens beside chat so a person and an agent can inspect and update one artifact. Microsoft's example is a Kanban board. People can move cards through the interface while the agent can split work and update status.
The first win is mechanical. State no longer hides inside a long conversation. A board, document, dashboard, or checklist can keep its important parts in fixed positions.
A canvas makes the artifact visible. It does not make every change trustworthy.
Shared does not mean equal
GitHub's canvas documentation calls the surface bidirectional. The agent can update it, and the person can edit the same state. A generated canvas can also expose callable capabilities such as get_board, add_card, and move_card.
That combination matters. A visible card move may be a harmless state edit. Another control may launch a session, update a repository file, or call a service. Put the actor, target, and effect next to each consequential action. Do not make readers infer authority from the fact that a button exists.
Storage is part of the contract
GitHub documents two placement choices for generated canvases. Project-scoped extensions live under .github/extensions. Personal extensions live under ~/.copilot/extensions. A typical extension can include metadata, an entry file that defines behavior, and JSON artifacts for persisted state.
Those locations answer different questions. A repository path can make the interface reviewable with the project. A user path keeps it personal to one machine. Neither choice proves who changed a value, which revision rendered it, or whether a later action succeeded. Keep those facts in the receipt.
The catalog proves range, not safety
The community catalog includes canvases for Kanban work, action artifacts, animated images, cloud costs, and cloud resources. That range shows the format can hold more than a whiteboard. It does not establish one permission or review model for every extension.
Treat each canvas as an executable interface. Read its capabilities and dependencies before installation. Name the external systems it can reach. Keep read-only inspection separate from mutating actions.
Four layers before launch
- Name the artifact and its authoritative storage location.
- Define the shared state and how conflicts are handled.
- List human controls and agent-callable actions separately.
- Record revision, actor, action result, and review state.
The control below drafts this structure. Selecting every layer does not inspect an extension or approve its actions.