A Claude Code plugin

Claude stops describing.
Claude starts showing.

claude-canvas opens a real interactive pane beside your conversation — pick a file, approve a diff hunk, fill in a form — and your answer comes back as an exact value, not prose Claude has to guess at.

View on GitHub ↗
picker — pick a file to refactor

Watch it work

One pane. Three very different asks.

A diff to review, a screenshot to read, a calendar to check — claude-canvas opens the same pane for all of it.

claude — tmux pane 0

Approve three hunks of a diff and reject the fourth — with arrow keys, not a wall of + and -.

Pick a meeting time, a file to refactor, a seat on a flight — from a real list, not a numbered chat menu.

Ships as a prebuilt plugin. No build step, no dependencies — just /plugin install and somewhere a pane can open: a running tmux session, or Windows Terminal.

Nine canvases

Not a numbered menu. A real interface.

picker

Choose one or more options from a list.

form

Fill in structured fields and submit them together.

table

Read tabular data, with a fixed header and scrolling body.

image

Look at a PNG in the pane: full resolution on kitty, iTerm2 and Sixel terminals, quadrant block cells everywhere else.

diff

Review a unified diff hunk by hunk, approving or rejecting each.

dashboard

Several of the above in one pane, at a glance.

calendar

Display events, or pick a meeting time from several calendars.

document

View or edit markdown, with text selection.

flight

Compare flights and pick a seat (a demo of the machinery).

How it works

Three steps. No new habits.

  1. 01

    Install the plugin

    /plugin marketplace add sgomez-dev/claude-canvas
    /plugin install canvas@claude-canvas
  2. 02

    Be somewhere a pane can open

    tmux

    A canvas opens as a split beside your shell, so it needs a terminal that can make one: an active tmux session — installed is not enough, it has to be running — or Windows Terminal, which needs no extra step.

  3. 03

    Ask Claude something whose answer is a choice

    • "Show me the failing tests in a table."
    • "Which of these files should I refactor? Let me pick."
    • "Find a time next week when Alice and Bob are both free."

Answers

What is it, and what does it need?

What is claude-canvas?

A plugin for Claude Code, Anthropic’s terminal coding agent. When the answer to a question is a choice rather than a sentence — which file, which hunks of a diff, which meeting slot, which values in a form — it opens an interactive terminal pane beside the conversation. You operate it with the arrow keys, and your selection returns to Claude as structured data over a local socket instead of prose it has to interpret.

Does it need tmux?

For a split pane beside the conversation, yes: an active tmux session, or Windows Terminal instead. Having tmux installed is not enough, because the plugin looks for the $TMUX environment variable, which only exists inside a session. Without either host, spawning is refused with a message naming both rather than failing silently.

Does it work on macOS?

Yes. The default macOS Terminal renders 24-bit colour, so the block-character image tiers work at full fidelity there. The pane itself still needs a running tmux session. macOS, Linux and Windows are all supported.

Which terminals show images at full resolution?

kitty and Ghostty through the kitty graphics protocol, iTerm2 through its inline images protocol, and WezTerm, foot, Windows Terminal and xterm through Sixel. Everywhere else, including the default macOS Terminal, images render as quadrant block characters: four pixels per character cell, which measured 61% less error than half blocks on a 3384×2160 screenshot at 76×24 cells.

How do you install it?

Two commands inside Claude Code: /plugin marketplace add sgomez-dev/claude-canvas, then /plugin install canvas@claude-canvas. It ships as a prebuilt bundle, so there is no build step and no dependency install.

Is it free and open source?

Yes. MIT licensed, with the source on GitHub at sgomez-dev/claude-canvas.

Who made it?

Santiago Gómez de la Torre Romero. It is a fork of David Siegel’s dvdsgl/claude-canvas, substantially extended.

Which terminals render images how?

Image tiers, chosen automatically. No configuration.
TierTerminalsResult
kitty protocolkitty, GhosttyFull resolution; the terminal decodes the PNG
iTerm2 inline imagesiTerm2Full resolution
SixelWezTerm, foot, Windows Terminal, xtermFull resolution, 256 colours
quadrant blocksthe default everywhere else, including the macOS Terminal2×2 pixels per character cell
half blocksa font without the quadrant glyphs1×2 pixels per cell

Stop typing pick a number. Start pointing at the answer.

Two commands, one plugin, no build step.

/plugin marketplace add sgomez-dev/claude-canvas
/plugin install canvas@claude-canvas

MIT licensed · one command to remove