
In July I asked an agent, out loud, for a clip that would hold a DJI mic on my AirPods Max. It wrote the part, checked it against a real scan of the headphones, sliced it, fixed a slicer warning, looked through the printer's camera to confirm the bed was empty, and started the print: 33.3 grams of filament, 257 layers, about 1 hour 47 minutes (agents-cli blog, July 21, 2026). Partway in, the filament spool jammed. I went and looked at the spool.
On September 11, VoxelMatters reported that GPT-6 Astra scored 95.9% on BenchCAD, a benchmark that asks a model to rebuild a part as CAD code. Geometry is no longer the bottleneck for agents that make physical things. The work is everything around the model: checking fit against the real object, reading the slicer's warnings, confirming the bed is clear, and noticing when the printer itself fails.
What 95.9% measures
BenchCAD shows a model several rendered views of a part and asks for the CAD program that builds it. Kerry Stevenson at Fabbaloo described the setup on September 16, 2026: the model has to reproduce the modeling sequence, and the result is measured geometrically against the real part. The metric is mean voxel IoU. Fill both solids with small cubes and count the share that overlap.
Two details matter more than the headline. The output is code: a CAD program keeps a hole diameter you can change tomorrow, which a mesh does not. And the score is a tool-using score. Per VoxelMatters (September 11, 2026), Astra reached 95.9% "working with tools", against 84.3% for Claude Fable 5.1 and 83.3% for GPT-5.6 Sol, at roughly 43% lower estimated API cost than Sol and 86% lower than Fable 5.1 in the configurations OpenAI tested.
The curve behind that number is steep. Fabbaloo counts scores in the low 20% range when tracking started earlier this year, and 96% eight months later (September 16, 2026).
VoxelMatters also wrote the sentence this post is about. Whether the output "holds up against the tolerances additive manufacturing workflows require is a separate question from the benchmark score." A benchmark compares the model's part with a ground-truth part. A real job has no ground-truth part. It has the object the part must fit, a printer with its own limits, and a room the printer sits in.
Ten steps, one of them CAD
Here is the July run in order. The full write-up has every screenshot; the agent ran locally, through agents-cli, on my own machine.
The agent wrote the clip as parametric OpenSCAD: a clamp that grips the ear cup and a cradle that holds the mic on a short boom, with cup thickness, boom length and mic diameter as variables. That is step two, and it is the step BenchCAD measures. Four later steps checked the CAD against something the model could not know from the request.
The real object. A clamp that grips a curved ear cup is only as good as its curve. The agent opened a signed-in browser, pulled an AirPods Max scan from Sketchfab, loaded it into Blender, and rendered the clamp against the real mesh.

The fit check: the agent's clamp rendered against a real AirPods Max scan in Blender. Source: agents-cli blog, July 21, 2026.
The slicer. The agent drove Bambu Studio through its window, the way a person drives it, and sliced both parts. The slicer raised a warning: the mic boom was a floating cantilever that would sag mid-air. The geometry matched the intent exactly, and as drawn it could not be printed. The agent read the warning, turned on tree supports and sliced again.
The bed. Before spending 33.3 grams of filament and nearly two hours (July 21, 2026), the plate has to be empty. The agent opened the printer's live camera, waited for the lens to focus, and confirmed the previous print was gone. Then it sent the job.

The frame the agent read before sending the job: the plate is clear. Source: agents-cli blog, July 21, 2026.
The printer. The nozzle reached 220 °C and the bed 65 °C (July 21, 2026), and the first layer went down. Then the spool jammed, a mechanical fault in the filament feed. The reprint finished; the printer's camera shows it at layer 257 of 257, clamp on the left and the boom standing in its tree supports on the right.

The reprint, seen by the printer's own camera at the last layer. Source: agents-cli blog, July 21, 2026.
Count the dots in the figure. One step is the model doing CAD. Four are the agent checking that CAD against the world, through a browser, a 3D tool, a desktop slicer and a camera. One is a failure that no software on the machine could reach.
Why the checks are the work
Each check catches a failure that a perfect benchmark score cannot see.
A part can match its intended shape exactly and still miss the ear cup, because the intended shape was a guess about a curve nobody measured. The scan replaced the guess with the object.
A part can be modeled perfectly and still sag on the printer, because printability depends on orientation, overhangs and supports. BenchCAD scores the solid. The slicer scores whether the solid can be built one layer at a time, and only the slicer's warnings say so.
A file can be correct and printable and still drive the nozzle into a print someone left on the plate. Only a look at the bed rules that out.
And a job can be correct, printable and safely started, and then a spool tangles.
I wrote about the same gap in Every Agent Demo Hides the Same Number: a demo sets the cost of failure to zero. A benchmark does too. Nothing in BenchCAD burns filament, jams a feeder or leaves half a boom on the bed. In a real run each of those costs time and material, and the checks are how an agent keeps that cost small.
The checks share one more property: each lived on a different surface. The scan lived on a website. The fit lived in Blender. The warning lived in a desktop app's window. The bed lived on a camera feed. An agent that can only write files produces an excellent .scad file and stops there. The agent that printed the clip spent most of its run reading pages and screens, which is why we spend so much effort on what it costs an agent to look at a page, as in The Fastest Browser Agent Isn't the Cheapest to Run.
Where the agent stops
The honest limit. The agent could see the printer through its camera and could not touch it. A jammed spool is a job for hands. A better model changes nothing here, and a run that hides the boundary ends with a confident "printed" and a bed holding half a part.
The right behavior at that boundary is to say so. A run that reaches the physical world should end in a state it can prove: done, with the evidence that it is done; failed, with what failed; or waiting on a person, with what that person has to do. In July, that person was me, walking over to the spool.
What this means for Rush
Rush is the API for work. A caller sends a request, an agent does the work in its own cloud sandbox with a computer and a browser, and the result comes back with proof: for a job like this one, files and a report, plus the full trajectory of what the agent did. Rush does not drive the printer on your desk; the July run was local. What carries over is the shape of the result. For a part, the deliverable is the parametric source, the renders against the real object, and the record of every check the agent ran on the way, so whoever prints it can see what was verified and what was left to them. A run whose proof is missing ends as needs_review.
Fabbaloo wrote on September 16, 2026 that a future model might reach 100% on BenchCAD. When one does, step two in that figure will be perfect, and the other nine will still be there: the scan to find, the warning to read, the bed to look at, the spool to clear. The models learned the part of making things that looks like intelligence. The rest is checking, and checking is where an agent earns the word done.

