Repository navigation
Agent Zero — Release Notes
Highlights
This is a large release that promotes core tools into standalone plugins, overhauls the welcome screen, hardens channel security, improves streaming and UI responsiveness, and adds new search, migration, and documentation capabilities.
Tool Plugin Architecture
- Extracted bundled tools into standalone plugins:
wait,notify_user,search_engine,a2a_chat,scheduler,behavior_adjustment, and the scheduler Tasks UI are now standard plugins, each with dedicated badge styling, log types, and prompt files. - Unified memory tools: The four separate
memory_load,memory_save,memory_delete, andmemory_forgettools are consolidated into a singlememorytool with anactionargument, matching the action-dispatch pattern used by other tools. - Per-action tool permissions: Profiles can now allow or deny individual operations across all 12 bundled multi-action tools (e.g., allow file reads but block writes, or allow listing scheduled tasks but block deletion). The Agent Editor shows grouped action controls with expandable entries.
- Centralized boolean argument coercion across all promoted and core tools, removing duplicated helpers and strict-validation error paths.
- Dedicated badge rendering for goal, document_query, skills, vision, browser, office, and computer_use_remote tool calls, each with distinct accent colors and descriptive headlines.
- Dropped agent-name prefix from all tool log headlines, warning rows, and fallback entries for cleaner chat output.
- Added catalog thumbnails for all 47 bundled plugins.
Output Handling & Model Recovery
- Surface output-limit truncation instead of misformat retries: When a turn stops at the token limit without a complete tool request, the agent retries with a dedicated truncation warning instead of the generic misformat message. Fixes #1836.
- Guard truncated native calls: Reject incomplete native-call argument JSON during output-limit recovery while allowing complete calls to proceed. Stream finish metadata is now preserved through early cancellation.
- Recover DSML tool calls: Recognize standalone DSML
function_callsenvelopes, repeated tool names, and outer headlines, routing them through normal dispatch instead of failed conversion. - Keep rejected tool syntax out of model history: Store neutral
{}for rejected or incomplete leaked calls so retries don't reinforce malformed output. Replayable Responses output items are removed from the history copy. - Restore Context Doctor repair before retrying malformed calls: Missing delimiters and other repairable output can execute in the same turn again, restoring pre-PR #1920 behavior.
- Keep model prose as thoughts and retry silently: Free text and reasoning-only output is preserved in the current generation and retried without intermediate warning rows.
- Fix include placeholder expansion in tool arguments:
§§include(path)is now expanded recursively at the tool execution boundary for Chat, native Responses, and parallel calls. - Explain missing LiteLLM chat streams with an actionable error instead of raising TypeError.
WebUI Improvements
- Faster response streaming: Reduced state-push coalescing from 100 ms to 25 ms, roughly halving median visible update intervals.
- Paint startup overlay immediately without waiting for render-blocking stylesheets.
- Block duplicate sends while a send is in flight, preventing multiple
/message_asynccalls from rapid clicks or Enter presses. - Serialize Welcome chat creation and first send so rapid input cannot create multiple contexts.
- Make composer pause optimistic against poll snapshots — clicks in flight now suppress snapshot writes to the pause flag.
- Keep action buttons mounted during streamed updates so hover and clicks aren't killed mid-stream.
- Preserve pending setup prompts and retry them automatically after chat preset changes.
- Gate model setup on backend rejection instead of a blocking round-trip before every send.
- Allow agent profile switch while chat runs, matching chat model-preset overrides.
- Keep the switcher label mounted during background refreshes instead of flashing away.
- Render GEN process steps as plain text without KaTeX, preventing dollar-sign sequences from being mangled into math.
- Scope process step DOM IDs by log type so subordinate responses can't overwrite GEN steps.
- Render pending queue thumbnails from local blob URLs until upload confirms; drop stuck entries on failure.
- Require double tildes for markdown strikethrough, matching GitHub behavior.
- Always load the full model catalog without a query so typing doesn't filter away sibling models.
- Drop chat-loading-splash background so only the dots are visible.
- Keep show-less control from shifting the action row on hover.
- Unify translucent glass style across header and canvas surfaces with a shared token.
- Replace hardcoded accent blues with the highlight token for easier theme customization.
- Copy full execution commands while keeping compact chat previews.
- Fix canvas rail dragging when pointer capture fails.
- Fix chunky response streaming by skipping inner scroller measurements for root response bodies.
Welcome Screen
- Dismissible welcome sections with browser-local persistence and unified restoration via "Show all dismissed."
- Reorderable welcome blocks with mouse, touch drag handles, keyboard controls, and persistent order. Plugins can join dynamically.
- Plugin Hub discovery from the welcome screen with a persistent puzzle-piece button.
- Half/full-width toggle for System Resources and Quick Actions panels with responsive layouts.
- Channel plugin discovery and display on the welcome screen, showing installed channel plugins with thumbnails and settings access.
- Compact Quick Actions layout with square tiles and labels below icons at half width.
- Greeting and wave kept on one line across screen sizes.
Sidebar & Search
- Configurable sidebar chat and message search with Standard, Compact, and No search modes, Unicode-safe match emphasis, and keyboard navigation.
- Chat message search in the Connector API with bounded, Unicode-safe literal highlight and 200-character query limit.
Chat Naming & Scheduling
- Exclude greeting seed from chat naming so fresh chats aren't named after the synthetic greeting; real first user messages name the chat immediately.
- Seed subordinate agents with the greeting few-shot example so all agents receive the response tool-call JSON demonstration.
- Clear scheduler errors after successful chat continuation — failed tasks now reconcile with successful replies.
- Reduce redundant same-profile delegation — specialists handle matching work themselves instead of relaying through identical agents.
Agent Editor
- Speed up agent editor loading by deferring Advanced data until first entry into Advanced mode.
- Clarify prompt editing with readable section titles, customization status, save paths, and variable hints.
- Grouped tool action permissions with expandable controls in Easy and Advanced modes.
Notifications
- Copy action below notification toast content for capturing full title and message.
- Hide Copy on notifications with action buttons and on routine confirmation toasts.
- Plugin hooks for notification arrivals and modal header actions, enabling community plugins to retain transient errors and expose history.
Migration
- Pi import support for JSONL session versions 1–3 through the existing Migrate Agents workflow.
- Claude chat history preservation with custom titles and tool-result blocks kept in historical tools.
Shared Files
- Per-chat file browser with own folder, history, and selection by default, plus a setting to share one browsing session. Welcome panels reuse the real file browser.
Security
- Enforce same-origin isolation for browser DOM helper RPC — cross-origin windows can no longer read page content or invoke DOM actions through the helper's postMessage channel.
- Require explicit Telegram administrators for settings changes — accepted senders can no longer use
/permissionsto remove their own tool restrictions or toggle plugins. - Require explicit WhatsApp administrators for settings changes, with a separate
admin_numbersallowlist enforced at mutation boundaries. - Reject unsupported Telegram configuration scopes — Telegram is now explicitly global-only, and legacy scoped configurations pause the bot until reviewed.
- Require remote terminal permission for
input_remote— a custom profile can no longer bypass blockedcode_execution_remotethrough an independently enabled input tool.
Configuration & Infrastructure
- Preserve
.envconfiguration during startup migration — existingusr/.envis kept authoritative without overwriting conflicting legacy files. - Fix self-update ZIP dates and reduce backup compression time (~17% faster with deflate level 1).
- Raise self-update health timeout to 600 seconds for updated and restored runtimes.
- Provider plugin discovery during onboarding with puzzle-icon links opening Plugin Hub filtered by provider.
- Codex onboarding defaults updated to gpt-6.1-terra (Main) and gpt-6-luna (Utility); final onboarding action changed to "Continue" preserving the current chat.
- Codex client version bumped to 0.166.0.
- Plugin composer controls exposed to connectors via capability-gated, session-authenticated API.
- Codex OAuth response defaults (reasoning effort, summary, verbosity) stay visible and editable across connection states.
- Test suite fully collectible — fixed 127 import errors, isolated suite pollution, resolved nested dev checkout path issues, and aligned stubs with current behavior (3,067 passing, 0 failures).
Documentation
- New guides: Local folder mounts and Launcher workspace storage, OpenCode Go setup, Codex account setup from ChatGPT, real agent migration walkthroughs, sidebar search instructions.
- Refreshed: README with plain-language introduction and complete quickstart, Quick Start around first message flow, Agent Profiles for action permissions, Model Presets, CLI onboarding preview, Plugin Hub screenshot, and Launcher onboarding.
- 12 new real screenshots across Quick Start and everyday documentation, optimized from 605 KB to 251 KB total.
Breaking Changes
- Unified memory tool: The four separate
memory_load/memory_save/memory_delete/memory_forgettools are replaced by a singlememorytool with anactionargument. Legacy calls are preserved for compatibility, but custom integrations referencing the old tool names should migrate. - Telegram configuration is now global-only. Existing project or profile-scoped Telegram configurations will pause the bot on startup until manually reviewed and removed.
- Browser DOM helper bumped to v2 with same-origin enforcement. Existing host browsers must restart and reconnect so old initialization scripts are discarded.
input_remotenow requires remote terminal permission in addition to its own permission. Profiles grantinginput_remotewithoutcode_execution_remoteterminal access will be denied.- Scheduler store must be initialized before snapshots — custom integrations accessing the task store at import time may need adjustment.
- Dev checkouts nested under
/a0will see a one-time workspace ID change; existing shadow repos are re-initialized in a new location.