Handler's backlog is much easier to read. Items are numbered rather than labelled with a status word most of them share, so a dependency can point at the one it's waiting on, and the sheet no longer says your sentence twice in two voices.
The bar above the prompt says what Handler is actually doing, and the lens row is legible.
Switching sessions no longer resizes the agent terminal in front of you. It used to open at the previous session's width and correct itself a frame later. Pane dividers belong to their session too, so dragging one doesn't move it everywhere else.
The site has a blog, for the things that need more room than a release note.
19 builds since 27 August 2026
Changelog
Every build we ship, newest first. Where one only moved plumbing around we say so rather than dressing it up, and where we haven't written it up the full generated list is one link away.
- v1.20692.1002, 27 August 2026
- v1.20693.1003, 28 August 2026
- v1.20695.1004, 30 August 2026
- v1.20696.1005, 31 August 2026
- v1.20697.1006, 1 September 2026
- 2 builds on 2 September 2026
- v1.20699.1009, 3 September 2026
- v1.20700.1010, 4 September 2026
- v1.20702.1011, 6 September 2026
- v1.20704.1012, 8 September 2026
- 2 builds on 9 September 2026
- v1.20706.1015, 10 September 2026
- 2 builds on 14 September 2026
- v1.20711.1020, 15 September 2026
- v1.20713.1021, 17 September 2026
- v1.20714.1022, 18 September 2026
Antgrid's source is MPL-2.0. The relay and the web service stay Elastic 2.0; everything else, including the wire format and the Dart relay client, is MPL now.
Remote sessions were timing out with nothing on the wire to explain it. A frame the checkout gate refused was dropped in silence, so the app waited for an answer that was never coming. Every refusal is answered now.
A burst of output that outran the terminal used to cost you the display for the rest of the run. It costs you the burst instead, and the app tells you what it dropped.
Handler was judging on far less than it thought. It asks for twenty messages of context and was usually getting one. It reads a wide enough window now, and the activity pane shows the history from before you opened it.
You can write your own lens when you arm Handler instead of picking one of ours.
The remote-access switch is inbound only, which is what its name and its own wording have always promised. It governs what can be done to this machine, so with it off your agents here can still open an exchange with another machine and get a reply. Nothing unsolicited gets in.
Switching sessions while a side pane is moving no longer hard-wraps the agent's output.
Support for each coding agent moved into a package of its own. Nothing changes about the agents we ship; it's the groundwork for adding one without touching the bridge.
The terminal, over a remote link
The terminal works differently at a distance. Rather than streaming every byte to your phone, the bridge keeps the real screen and sends pictures of it, up to twenty a second. Scrollback stays on the machine and pages in as you scroll.
It's a coordinated change with no fallback, so an app or a bridge too old to speak it asks to be updated rather than half working.
There's live chat on the site, in your account and in the app. Nothing is requested from the chat provider until you click the launcher, so it costs nothing on a page you never chat from.
We were pushing terminal output at apps with nothing listening for it, indefinitely. One link measured 17,000 dropped frames in 24 minutes. It stops when the listener goes.
Analytics moved to an Umami instance we host ourselves. It's cookieless and first-party, and the privacy notice says so.
Modelwatch. The bridge spawns model calls on your own provider account to name sessions and to run Handler's judge, and until now they were invisible: they spent your money and left no record of what ran or on which model. Now there's a record of every one.
Signing out signs you out. Account state was surviving in a cache for the life of the process, and a machine that had left the account was still listed.
Windows opens relay frames with the operating system's own AES-GCM. The pure Dart cipher it fell back to ran at around 12 MB/s on the UI thread, which a busy terminal or a tunnelled preview paid for directly.
An isolated Codex session could refuse to open, printing “Resuming session…” and exiting a couple of seconds later. It was trying to resume a helper thread that was never a session.
On Windows a session action could fail outright because a virus scanner or the search indexer had one of our files open for a moment. We wait it out.
And this page.
Opening a remote session could land you on a frozen agent terminal with nothing saying why. The pane couldn't tell “there are no terminals” from “the terminals haven't attached yet”, and some of the waits had nothing behind them that could ever end.
We were pushing megabytes of file tree at connected apps. A 224 second capture against one remote session measured 4.6 MB, more than half of it tree snapshots. That's bounded now, and the app can report a stall of its own rather than leaving it visible only from the other end.
Fixed a Windows bug that could leave Ctrl stuck down after a paste.
Image previews open where they were opened from, and a narrow pane stops overflowing.
An opened folder resolves to the project that owns it, so one repository can't appear twice under two identities.
File tree state is pulled by the app when it wants it instead of being pushed at it on every reconnect.
Remote sessions were timing out on large repositories. We sent the whole file tree the moment you connected, which swamped the link before anything else could get through. The tree is paced now and the preview tunnel streams.
Resuming a session keeps what it had, and Codex approval alerts don't fire before the agent has actually asked for anything.
Fixed a file tree bug where the selection could point at the wrong row after a refresh.
Tidied up the annotation panel in the browser preview.
Downloads have a page of their own now. It also stopped handing a Windows installer to anyone reading on a phone.
We stopped polling git for sessions nobody is watching.
Tapping a push notification opens the session it's about.
Live reload works in the browser preview again. We weren't forwarding the HMR subprotocol, so the socket never came up.
Handler grows up
Handler belongs to the session now rather than the machine, and when it refuses to arm it tells you why.
It asks the agent before answering on your behalf, and it confirms any undo that would leave your machine.
Notify-only is retired. Handler acts, and the wrap-up it writes survives a restart.
Markdown files open in a real viewer, with a heading outline and links that go where they say.
The git panel gained commit history, pull and push.
Maintenance build. Nothing here changes what you'd notice using it.
Maintenance build. Nothing here changes what you'd notice using it.
The relay's heartbeat and recovery are harder to knock over.
Handler's backlog dialog is easier to work with.
Approval policy is set per session, so you can let one session skip prompts without touching the others.
Workspace context is scoped to the session it belongs to.
Point at anything in the browser preview and draw on it to leave the agent feedback.
Isolated sessions were becoming permanently undeletable. A coding agent's helpers outlive the terminal that started them and keep hold of the checkout, so git couldn't remove it. A terminal takes its orphans with it now.
Coding agents get to shut down properly. Every teardown path killed an agent's terminal outright, which is why Claude Code kept announcing that its renderer hadn't finished starting last time.
Coming back to a session shows you the screen as it stands rather than the tail of a stream you missed the start of. Files and preview recover the same way.
A session keeps the title we generated for it across a restart.
Push notifications work on Android. They never had: the Firebase config the build needs was ignored by git and had never shipped.
Fork a session, into a workspace cut from where it got to or into the one it's already using, and carry the conversation over.
Two-finger scroll works in the terminal on a laptop trackpad.
Handler reports what it couldn't send instead of calling the work done. Traced from a real session where it sat armed all morning, sent the agent nothing, and wrote a wrap-up anyway.
Pressing left twice at a Claude prompt hands the conversation to Claude's own background supervisor and takes the terminal with it. We don't follow it there.
Updating on Windows brings the app back afterwards, shuts the bridge down rather than having it killed mid-install, and reports what the Store actually did instead of calling every outcome a success.
Sessions are named for what they're about rather than for the first thing you typed.
Tapping a remote session opens that session, not whichever one the cache happened to list first.
Links in the terminal open on a plain click. A full-screen agent takes the mouse before it prints anything, which is why they didn't.
You can see where a link goes before you follow it, and we ask first when the address is built to be misread.
The projects drawer indents. Every level used to start at the same place, so a three-level tree rendered flat.
Running an older build? The app checks for new ones and tells you when there is one, or you can download the latest directly.