September 1, 2026

What an agent can actually see

An agent editing a canvas has to be told what is on it. That description has a budget, and the budget binds long before the model gets slow.

The agent cannot see your screen. Before every step we write it a description of what is on your canvas, in plain text, and send that along with your request. We call that description the snapshot. It is tempting to assume the limit here is speed. It is not. The limit is how much of your project fits into that description at all.

If it can't see it, it can't touch it

An object the agent can't see is an object it can't name, so it can't move it, restyle it or delete it. The real ceiling on "make the third clip shorter" isn't how fast the model thinks. It's whether the third clip made it into the snapshot.
We measured that ceiling per surface instead of assuming one number would do. The crowded ones overflowed first: a node canvas with a big graph, or a 3D scene with a lot in it. And they overflowed long before anything felt slow.

The numbers that forced the issue

Before any of this existed, our snapshots were enormous:
SurfaceSnapshot size
Node studio, 55 nodes14,679 characters
Image composer, 800 layers31,896 characters
3D studio, 800 assets110,454 characters

Full lines, then a tail of ids

So each surface now bounds itself. Objects get listed in full until the listing budget runs out, and everything after that is listed by id alone in a second, separately bounded tail.
That tail is the part worth stealing. A description that simply stops leaves the agent unable to name the objects it never saw. On surfaces where every tool works by id, that is not a loss of detail. It is a total loss of the ability to act. An id and a type cost about thirty characters, so the tail keeps hundreds of objects reachable for the price of a few full lines.
Bounding one list just moves the overflow. Capping only the full listing was not enough. The image composer still reached 31,896 characters at 800 layers. One id is cheap, but nothing limits how many of them a document can hold. The tail needs its own budget.
The budgets are deliberately per-surface and not one shared constant. A timeline clip is a short line and a node carries a chunk of prompt, so the same character budget buys wildly different numbers of them.
And this description stays out of the fixed instructions we send. Providers only re-use the part of a request that has not changed since last time. Canvas state changes on every step, so putting it near the front means nothing gets re-used. That one has its own write-up.

Why this shapes the product

All of this is why the agent does best on a bounded piece of work, rather than on "rebuild my whole project". Not because it lacks ambition, but because the honest limit of any canvas agent is what it can name.