v0.164.0
v0.164.0 stops simultaneous settings changes from overwriting each other, cleans up the processes an agent leaves behind when you quit, and fixes duplicated text while a background result streams.
Chat
- A turn the agent runs off a background result no longer streams doubled, interleaved text while it generates (#3432).
- Recalling a queued message the agent had already read now shows a warning that sending it unchanged would deliver a second copy, with Clear draft and Send anyway (#3413).
- A chat task whose producer vanished no longer spins forever: a periodic sweep marks it failed with a diagnosis, and waits long enough never to cut off a long, productive turn (#3418).
- Narrow markdown-table columns no longer collapse to one character per line (#3412).
Settings & setup
- Two settings changes at the same moment no longer silently drop one of them — plugin install/enable/update/uninstall, MCP servers, model connections and delegates (#2743).
- Adding, importing or removing an MCP server no longer freezes the agent while it reloads (#2743).
- A failed share/unshare of an MCP server no longer loses the server, and two creates of the same delegate name no longer overwrite each other (#2743).
- Plugin setup gaps — say, a board with no coder or no bound repo — now show as banners you can dismiss for the session, with a button to the right settings when the plugin offers one. Runtime status also publishes them as structured
setup_gaps(#3421, #3395). - A bare
workspace createon a hosted box can reach a model again, and new agents are created in the provider-registry shape (#3425).
Agents & delegates
- Quitting no longer leaves agents' shell commands, coding delegates and scripts running (#3428).
- A delegate's question for a human now reaches the calling agent in a form it can answer — a form's fields and choices, an approval's action — not just its title (#3414).
- The gateway client now always speaks chat-completions: a model name containing "codex" no longer sends an OpenAI-compatible endpoint to
/v1/responses. Native ChatGPT/Codex sign-in is unchanged;PROTOAGENT_GATEWAY_RESPONSES_API=1restores the name-based choice (#3424). load_skillflags a skill's required tools that aren't available in the current context (#3403).onboard_projectreports how far a reused checkout has drifted from its upstream, without fetching (#3402).
Also new if you're updating from v0.162.0 (v0.163.0 didn't ship to the desktop app)
- Rooms: addressed participants now answer each other, not just you —
room.max_roundsdefaults to 3; set it to 1 for the old single pass (#3404). - Project onboarding is switched on by default so you can find it; nothing can be cloned or registered until you set its allow-list and root (#3396).
- Parallel
edit_filecalls and parallel artifact updates no longer discard each other's edits (#3400, #3401). - A coding delegate's reply reads as prose again, not one unbroken wall (#3408).
- Scheduler failure backoff no longer loses a slot (#3381), and
onboard_projectrefuses an unset root instead of cloning into the server's working directory (#3397).
What's Changed
- feat: fix(console): adopt @protolabsai/ui 0.60.2 markdown table wrapping fix by @mabry1985 in #3412
- feat: fix(chat): make already-consumed queued-message recall visibly duplicate-safe (#3413) by @mabry1985 in #3417
- feat: fix(skills): surface unavailable required tools when loading a skill (#3403) by @mabry1985 in #3419
- feat: Render setup-gap warnings as actionable, dismissible console banners by @mabry1985 in #3421
- fix(hitl): a delegate's parked question reaches its caller answerable (#3414) by @mabry1985 in #3416
- feat: fix(onboarding): report tracking-branch drift when reusing a checkout (#3402) by @mabry1985 in #3415
- feat: Publish structured setup gaps in the runtime-status response by @mabry1985 in #3395
- ci(deps): regenerate attribution on dependabot PRs by @mabry1985 in #3410
- fix(tests): stop two environment-dependent assertions flaking the Windows shard by @mabry1985 in #3422
- feat: fix(a2a): reap orphaned WORKING tasks without timing out productive turns (#3418) by @mabry1985 in #3420
- fix(llm): pin the gateway client to the chat-completions wire (#3392) by @mabry1985 in #3424
- fix(workspaces): create new agents in the provider-registry shape (#3128) by @mabry1985 in #3425
- docs(llm): the name-based wire inference predates the drift (#3424) by @mabry1985 in #3426
- docs(llm): gpt-5.6-sol joined the prefixes in 1.6.1, not 1.6.2 by @mabry1985 in #3427
- fix(proc): an exit takes the process trees this process owns with it (#3428) by @mabry1985 in #3429
- fix(proc): forget a cancelled child once reaped; prune dead groups on track (#3428 follow-up) by @mabry1985 in #3430
- fix(plugins): merge plugins.enabled inside the config write lock (#2743) by @mabry1985 in #3431
- fix(chat): one producer per bubble for a server-fired turn's preview (#3432) by @mabry1985 in #3433
- fix(config): the rest of the live-config writers merge inside the lock (#2743) by @mabry1985 in #3434
Full Changelog: v0.163.0...v0.164.0