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:
| Surface | Snapshot size |
|---|---|
| Node studio, 55 nodes | 14,679 characters |
| Image composer, 800 layers | 31,896 characters |
| 3D studio, 800 assets | 110,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.