The canvas artifact
Giving the model a second surface to build on.
Chat is the medium. The artifact is the work. When the model builds something more substantial than a paragraph, chat becomes the wrong surface to hold it. The document spills out of the turn. The next prompt buries the version the user liked. The user ends up copy- pasting into a separate tool.
A canvas artifact is a second surface. It sits alongside the thread, receives edits from the model, receives edits from the user, and keeps both edits visible. The chat becomes the conversation. The canvas becomes the thing being made.
"The user didn't come to chat. They came to ship. Give the work its own surface."
Split pane. Versioned. Authored.
A split pane: thread on one side, canvas on the other. Every model edit creates a new version with a short caption ('added risks section', 'tightened intro'). User edits are flagged with a different marker so the model knows which lines were hand-edited. The user can scrub through versions, restore any previous state, or collapse the canvas to focus on the thread.
Draft the Q3 plan for my team. Start with the goal, then risks, then milestones.
Done · saved to canvas as v1.
Added a risks section. v2.
Tightened the intro directly on the canvas.
Saw your edit. Added milestones. v4.
Chat and canvas are two surfaces. Every edit is versioned; user edits are flagged so the model knows.
A document doesn't belong in a thread.
Threads are ordered, ephemeral, and read top-to-bottom. Documents are named, persistent, and edited in place. Shoving a document into a thread makes both worse. Splitting them into two surfaces, tied together by versioning, is how the product respects both forms.
A canvas that keeps two surfaces honest.
- Version every model edit. Each edit is a named snapshot, not a diff pile.
- Flag user edits. When the user touches the canvas, the next model turn should know what changed. Hand-edits are sacred.
- Show causation in the timeline. Each version caption says what caused it: a prompt, a tool, a user edit. The user can read the canvas like a changelog.
Canvases that fight the thread.
The worst failure mode is a canvas that regenerates itself silently when the user types in the thread. The user spends twenty minutes refining a paragraph; the model rewrites it in the next turn; the refinement is gone. The user learns to work in a separate doc.
What this pattern gets wrong when it gets wrong.
- Artifact drift
- An artifact that edits itself across turns without a clear trail, so the user can't reconstruct how it got to its current state.
- Stale memory
- A persistent fact about the user that's out of date and silently poisoning answers.
- Silent truncate
- The response ran out of room or tokens and the product didn't tell the user where it stopped.
Three shipping variants worth copying.
- A right-side canvas for docs, code, diagrams, or screens
- Each model edit creates a new version with a caption
- User edits are flagged and folded back into the next turn