Updated June 12, 2026

How do I get Claude to update my canvases on its own?

Quick answer

One standing block in your CLAUDE.md tells Claude which canvases to write to and when — drop a todo when it needs your input, push proof screenshots when it ships something, leave a summary before a session ends. Setup is one prompt: copy the prompt on this page into Claude Code and it writes the block for you. No loop, no schedule: Claude reads CLAUDE.md every session, so your canvases start updating themselves while you're away.

The first canvas you push is a snapshot — useful, but static. The shift happens when Claude starts writing to canvases without being asked: a todo appears because it hit something only you can do, a proof canvas shows up because it just shipped your change, a summary lands as a session wraps up. You stop asking "what happened while I was away?" — the canvases already say.

You don't need a loop, a schedule, or any new tooling. Claude Code reads your project's CLAUDE.md at the start of every session, so one standing instruction is all it takes.

One prompt sets it up

Copy this into Claude Code and it does everything — writes the block into your CLAUDE.md, adapts the canvas names to how you already work, and installs the CLI first if you don't have it yet:

claude
Set up Drafty's standing-canvas workflow for me. Add a "## Drafty canvases" block to my CLAUDE.md (ask me: this project or global ~/.claude/CLAUDE.md) with three standing rules: (1) when you need something only I can do — a login, an approval, a decision — add it as one self-contained item to my private "Action items" drafty canvas instead of stopping; (2) when you ship something visual, push proof screenshots of the result to a drafty canvas and give me the link; (3) before ending a long session, push a short summary of what happened and what's still open to my "Session notes" canvas. If the drafty CLI isn't set up yet, read drafty.im/kb/llms.txt and sort that first. Adjust the canvas names to fit how I already work, then show me the block before saving it.

That's the whole setup — Claude shows you the block before saving it, so you still get final say on the wording. The first push creates each canvas; every later push updates it in place, with version history.

What you'll notice

The common thread: the canvas updates came to you. That's the moment Drafty clicks for most people — the canvas stops being a document you publish and starts being the place where you and your agent meet.

Make it yours

The three rules in the prompt are a starting point. Other standing instructions people use: log every deploy with its commit and a one-line outcome; keep a running decisions log; append field notes worth sharing later. Anything you'd want written down is one sentence in CLAUDE.md away — and if you want a canvas that updates itself on a schedule (a metrics dashboard, a status board), that's the cron pattern in How do I keep a canvas updated automatically?

See it from your phone

Frequently asked

Does this cost extra Claude credits?
No. The writes happen inside sessions you're already running — pushing a canvas is one CLI command, a negligible part of the session's work. There's no background loop and no model running on a timer.
Do I have to create the canvases first?
No. The first push creates a canvas if it doesn't exist, and re-pushing the same one updates it in place with version history. Name the canvases in your CLAUDE.md block and Claude handles create-vs-update on its own.
Can other people see these canvases?
Only if you share them. New canvases default to link-visible, so for a private todo list or session notes, have Claude push with --private — then it's owner-plus-invited only, enforced server-side.
How is this different from a self-refreshing canvas?
A self-refreshing canvas re-runs a fixed script on a timer — same report, fresh data, no model involved. This is Claude deciding in the moment that something is worth writing down — a blocker, a proof, a summary. They compose well: dashboards on cron, judgment calls from the session.

Related