Agent runs controlled by state machines
Three big changes in this release. Workflow Engine V3 is now stable and every run uses it. Runs fix their own failed CI checks. And agents got a browser, so they can click through your app and share screenshots of what they did. There’s also a long list of smaller improvements and fixes below.
Workflow Engine V3 is now stable
Every run now executes on V3, our stable workflow engine. It fixes the two failure modes that caused the most trouble: runs that got stuck, and runs that quietly gave up and reported themselves as done when they weren’t.
V3 is built on a state machine. Every run is always in exactly one well-defined state, like setting up, writing code, waiting for review, or waiting for CI, and the only way forward is through explicit transitions. That sounds like an implementation detail, but it’s where the reliability comes from. A run remembers exactly where it is at every moment. If a server restarts, the connection blips, or a sandbox is still spinning up, the run doesn’t lose its place. It picks up right where it left off and carries on. You don’t have to babysit a run or restart it by hand because something behind the scenes hiccuped.
The state machine also changes how blueprints work. Steps are no longer a straight line. A run can flow back and forth between them as the work demands: a review comment sends it back to writing code, a failed check sends it back to fixing, and then it moves forward again. A run only advances once the current state is genuinely finished, and it keeps going until the whole task is actually done. No skipped steps, no half-finished work that looks complete. If a run is waiting on something, it waits properly and then continues on its own.
What this means for you day to day: fewer stuck runs, no more runs that falsely claim success, and reliable recovery when infrastructure gets bumpy. You can start a task and trust that it will see itself through. Older runs from before V3 stay fully readable, they can no longer be restarted or continued.
Runs fix their own failed checks
V3 workflows now watch the checks on their pull requests, and when one fails, the run goes back to work. It pulls the failure from GitHub, reads the logs, pushes a fix to the same pull request, and waits for the checks to go green. This is the back-and-forth flow in action: a red check is just another signal that sends the run back to a coding step. You don’t have to notice the failure, copy the error into a follow-up, or restart anything. Most of the time the first you hear of a failed check is a new commit that fixed it.
Agents can browse, and screenshots are proof
Agents now have their own browser. During a run, an agent can open the live preview of your app, click through the change it just made, and take screenshots along the way. Those screenshots show up in the run’s output as a gallery on the assistant’s replies, so you can see what the agent saw instead of taking its word for it.
Screenshots also travel. An agent can attach them to GitHub issues and pull requests as proof of its work, with stable Markdown links that keep working. You control the delivery: share publicly, share with sensitive parts blurred, or keep them private to workspace members. A bug report that ends with a screenshot of the fixed screen is a very different thing from one that ends with “should be fixed now.”
More improvements
- Live CI status – the pull request button shows check status everywhere it appears: a spinner while checks run, red with what to fix when they fail, and a Merge action when they pass.
- Multi-repo pull requests – each PR card acts on its own pull request, and a task only finishes once every one of its pull requests is merged.
- AskUserQuestion timeline card – paused runs render questions with headers, single/multi-select options, and an inline answer form instead of raw JSON.
- Auto blueprint – a new composer option that classifies your request server-side and resolves the right blueprint when the task starts.
- Default model preference – set a user-level default model for ad-hoc and Linear-triggered runs, with a safe fallback to the platform default.
- Connected accounts – link or unlink personal GitHub and Linear accounts via OAuth account linking and a new settings page.
- Hook secrets –
.trevize/settings.jsonhook commands now acceptenvandsecretEnvblocks resolved from workspace secrets. - Undo toasts – archiving or unarchiving a session or task now offers a one-click Undo and confirms the result.
- New OpenCode models – GPT-5.5, GPT-5.6 Terra, GPT-5.6 Luna, and GPT-5.6 Sol are now selectable.
- Tighter plans – blueprints forbid deferred/optional work and route human-only tasks to a non-blocking Human follow-up section, so runs stop stalling on work an agent can’t do.
- Faster navigation – task switching renders local data instantly, links prefetch on hover, and long timelines virtualize so only visible cards render.
- Multi-repo previews – live preview reads each repo’s
.trevize/settings.jsonand merges preview targets across repositories. - Leaner sandboxes – OpenCode LSP servers are disabled on medium sandboxes to stay within the memory budget; large sandboxes keep them.
- Attachment retention – archived runs keep their screenshots, with restore-safe, retryable cleanup.
- Skeleton loading – session and task pages show a layout skeleton instead of a spinner or “Loading…” text.
- Quieter status icons – task rows drop the text status label in favor of a tooltip-backed icon, and progress-icon fill is now consistent across the sidebar, task list, and home.
Fixes
- Follow-ups sent to a run waiting on a failed restore or CI remediation now retry the blocked work instead of being silently dropped.
- Follow-up messages no longer crash the workflow controller and fail the run when posted during a review or CI wait.
- Task follow-ups sync through Zero’s optimistic mutators, fixing the ghost message stuck to the bottom of a restored timeline.
- Runs no longer falsely complete when a server restart interrupts sandbox setup. Bootstrap resumes where it left off.
- Pausing a run is now idempotent, so pressing pause twice can’t strand it in the “Pausing” state.
- Preview session status streams through Zero instead of polling, keeping pages responsive while previews start.
- The Diff tab no longer flashes an inaccurate changed-file count while the file list loads.
- The overflow menu and git actions (merge/close/reopen) are restored for legacy tasks whose current run predates V3.
- Archiving and un-archiving historical V2-and-earlier runs works again as a local operation.
- Task lists no longer flash a loading skeleton over rows already served from the local cache.
- DBOS workflow execution moved to a dedicated singleton worker to prevent overlapping recovery across scaled web servers.
- Removed the unused legacy
skip_stepandadd_contextworkflow events.
As always, everything above shipped through Trevize’s own autonomous runs. Try them on your next session and tell us how it goes.