Anvil v2.2.24 is a stability and reach release. It fixes a daemon crash that could drop a session the instant you connected, corrects text selection so a copy starts exactly where your cursor is, brings xAI’s Grok models up to their current line (with Live Search), adds a real sandbox policy gate with macOS enforcement, and closes a background-process leak that could quietly spawn hundreds of orphaned daemons. If you skipped a release, this is a good one to land on.
Sessions connect reliably again
The headline fix: a daemon-backed session could die the moment you connected. The deck stayed empty, no tabs appeared, and no reply ever came — the client just saw an early eof. The cause was subtle. Anvil runs each session inside a background async task in the daemon, and at teardown that task dropped a provider runtime from within the async context, which panics on some platforms and killed the session’s worker.
The fix shuts the runtime down off the async worker, so a session now starts, runs, and tears down cleanly. Alongside it, every build embeds a build timestamp, and a running daemon that predates your current binary is detected and replaced instead of silently serving stale code. Connecting to whatever daemon happened to be alive — even an older one — was a real source of “I fixed it but it’s still broken” confusion. That door is now closed.
Text selection copies from the right place
When you drag to copy conversation text, the selection now begins exactly at your cursor, even when lines above it wrap across the terminal. Previously Anvil recorded selection geometry from unwrapped lines while painting wrapped ones, so any wrapped line above the cursor shifted the copy start earlier — and it got worse the further down you dragged. Selection now maps against exactly what is painted on screen, including correct handling of wide and emoji characters.
xAI / Grok — current models and Live Search
The Grok model list is refreshed to xAI’s current line. Typing grok now targets grok-4.3, the current flagship; the retired grok-3, grok-3-mini, and grok-2 identifiers are gone from the picker; and grok-build-0.1 — xAI’s agentic coding model — is available.
Anvil also supports Grok’s Live Search. This is xAI’s real-time web and X search, exposed as a server-side x_search tool on the Responses API. It is implemented as a fully isolated path, so nothing about the standard chat flow changes for any other provider. Enable it per session on a Grok model:
ANVIL_XAI_LIVE_SEARCH=1 anvil model grok-4.3
A sandbox policy gate you control
Anvil runs agent-generated shell commands, so isolation matters. Previously, when full isolation was not available, Anvil silently downgraded to a workspace-only fallback and said nothing. v2.2.24 lets you set the floor with a single config value:
{
"sandbox": {
"require": "strict"
}
}
off— the previous silent behavior. This is the default, so existing setups are unchanged.preferred— warn once, surface the active backend, and keep running.strict— refuse to run a command that cannot be isolated to the level you asked for.
On macOS, agent commands can now run under a real sandbox-exec seatbelt profile: reads are allowed, writes are confined to your workspace and temp directories, and a write outside the workspace is blocked. The active backend is shown in anvil daemon status.
Ask, answer, and don’t lose work
Two smaller but meaningful fixes. First, when Anvil asks you a question mid-task, that prompt now fans out over the relay the same way permission prompts do — so a daemon-attached session or a browser viewer can answer it, not just the local terminal. An opt-in idle timeout can auto-continue after a set number of seconds; the default is to wait for you.
Second, if a sub-agent streams some output and then hits a rate limit or a server error, that partial work is now kept and flagged with an [incomplete response] marker. The failure is still reported clearly — but the work you already have is no longer thrown away.
Terminal hygiene and a background-process leak
Your terminal is now restored on every exit path — a normal quit, Ctrl+C, and even a panic. Mouse tracking and bracketed-paste modes are cleared on the exit paths that previously skipped cleanup, so your shell is never left in a tracking-mode state. Large pastes reach the model as text on both the local and daemon paths, and a rapid double-paste is de-duplicated into a single insertion.
Under the hood, v2.2.24 closes a daemon leak that could snowball badly. Anvil invocations no longer spawn detached daemons that outlive them: autostart is suppressed under test and headless contexts, the singleton lock that guarantees one daemon per workspace is now atomic (so concurrent launches can’t each spawn one), and an orphaned, idle daemon self-terminates after ten minutes. A new recovery command clears any that slipped through:
anvil daemon reap
Get it
Upgrade with Homebrew, or grab a binary from the release assets — seven platforms: macOS (Apple Silicon and Intel), Linux (x86_64 and ARM64), Windows (x86_64), FreeBSD (x86_64), and NetBSD (x86_64). Every binary ships with a SHA256 checksum from two independent origins.
brew upgrade anvil
# or a fresh install
curl -fsSL https://anvilhub.culpur.net/install.sh | bash
Anvil is the AI coding assistant that doesn’t lock you in: your providers, your credentials, your data, your cost. Full release notes and downloads are on the AnvilHub.
