v2.9
agent0ai/agent-zerov2.9Aug 12, 2026by github-actions[bot]
AI Summary
This release introduces a full-featured **Agent Editor** for managing profiles directly in the WebUI, alongside scoped tool and skill policies for granular control. It also includes significant hardening of profile and chat lifecycle operations, a background shadow-repo cleanup system, and a collection of critical security and usability fixes.
Key Highlights
- New Agent Editor UI with Easy and Advanced modes for editing agent identity, prompts, and policies without destructive overwrites.
- Scoped tool and skill policies with a unified project-aware resolver and sparse allow/block rules.
- Security hardening including a fix for SSRF regression (CVE-2026-4308) and improved profile mutations.
- Time Travel Retention system with automated background cleanup of orphaned shadow repositories.
- Enhanced plugins including a new Migrate Agents workflow and improved Kokoro voice blending.
New Features
- Agent Editor with Easy and Advanced modes, project-scoped profiles, and lifecycle management (duplication, restore).
- Scoped tool and skill policies with explicit default switches and sparse overrides.
- Shadow-repo cleanup and retention sweeps running in the background.
- Migrate Agents plugin with preview safeguards and WebUI assets.
- Enhanced Kokoro voice blending with speed controls and singleton pipeline reuse.
- /permissions slash command to open the Agent Editor directly from chat.
- SSRF vulnerability fix (CVE-2026-4308) for remote document downloads.
- File download path resolution fixes for individual and bulk downloads.
- Project change persistence improvements to prevent rewriting every loaded chat.
- Desktop canvas resize fix to prevent pointer event capture during resizing.
- Idle goal polling removal in favor of shared state monitor.
Full Release Notes
# Agent Editor, Scoped Profiles & Tool Policies This release introduces the **Agent Editor** — a full-featured interface for creating, customizing, and managing agent profiles directly from the WebUI. It also brings scoped tool and skill policies, significant hardening across profile and chat lifecycle operations, and a collection of important fixes. --- ## Agent Editor - **New Agent Editor UI** with Easy and Advanced modes for editing agent identity, prompts, model presets, tool policies, skill visibility, and avatars — all without destructive overwrites or model calls. - **Project-scoped profiles**: switch between Global and project scope when managing agents; sparse reads, writes, resets, and policy configs stay bound to the selected layer. - **Profile lifecycle management**: per-scope availability, duplication, active-profile status, inline project selection, scoped restore for inherited profiles, and synchronized profile switching across the sidebar and runtime. - **Reusable profile commands**: create profiles quickly via `/profile` in chat or through the Connector API, then open a fresh chat with the new profile in the selected scope. - **`/permissions` slash command**: opens the current profile's Agent Editor directly from chat. - **Tools, MCPs, and Skills** get explicit default switches with segmented per-item policy controls, preserving sparse overrides. - **Polished layouts and interactions**: responsive Easy and Advanced surfaces, direct prompt editing, compact transfer lists, per-row profile actions, full-height ACE editor, themed segmented controls using the standard blue accent, and streamlined Manage Agents with separator rows. - **Comprehensive documentation** replacing legacy guided-profile instructions with screenshot-led workflows covering sparse YAML, Markdown, and JSON overrides. ## Scoped Tool & Skill Policies - **Scoped tool access policies**: a unified project/profile-aware resolver for local, plugin, and MCP tool identities, enforced across prompts, schemas, connectors, execution, and delegated agents. - **Hardened layered policy enforcement**: empty upper configs no longer shadow inherited restrictions; canonical tool identities carry through local and MCP execution; blocked tools are removed from rendered prompts. - **Profile skill visibility policies**: sparse allow/block rules with an explicit default for future skills, enforced across discovery, loading, and chat activation while preserving history and legacy behavior. ## Agent Profile Infrastructure - **Presence-aware profile overrides**: layered profile metadata merges by field presence — missing keys inherit, explicit empty values clear inherited values. - **Hardened profile mutations**: validated destructive requests and project-derived scopes at the API boundary; atomic project availability; collision, confirmation, and running-profile guards. - **Hidden utility profile**: the internal default profile is omitted from profile selectors, new chats, and legacy global settings are normalized to Agent 0. - **Lightweight profile catalog reads**: sparse editor overrides are detected without building full removal plans for every agent. ## Built-in Plugins - **Migrate Agents plugin**: bundled five-harness migration workflow with preview/import safeguards, documentation, WebUI assets, and corrected upload modal. - **Enhanced native Kokoro voice blending**: updated American voice catalog, speed controls, in-memory weighted blending, singleton pipeline reuse, and blend input validation. - **Capability discovery alignment**: MCP catalog labels are humanized with server names; skill discovery prompts are suppressed when `skills_tool` is unavailable; `behaviour_adjustment` prompt moves under the Memory plugin. - **Slash commands separated from skills**: skill results come only from `skills_tool`; command discovery and invocation stay with the Commands plugin. - **Scoped plugin configuration indexes**: project- or agent-scoped plugins can open the shared settings surface even without a custom form. - **Thumbnails for core utilities**: Tool Access, Pin to Top, Chat Naming, and Agent Editor get distinct artwork optimized for fast rendering. ## Time Travel Retention - **Shadow-repo cleanup**: automatic retention sweeps remove orphaned shadow repositories from deleted chats, optionally age-out stale history, repair stranded `index.lock` files, and set aside corrupt repos — all configurable from plugin settings. - Sweeps run in a background thread (default every 6 hours) with durable logging and running totals. ## Fixes - **SSRF regression in document queries** (CVE-2026-4308): remote document downloads now route through the public-only HTTP fetcher, rejecting private targets including through redirects. - **File download path resolution**: individual and bulk downloads resolve from the filesystem root, matching what the File Browser and editor expose. - **Chat deletion guard**: empty or whitespace-only context IDs are rejected before any cleanup begins, preventing malformed requests from resolving to the shared chat directory. - **Project change persistence**: project updates and deletion no longer rewrite every loaded chat — only affected chats are saved. - **Assistant-first provider history**: orphaned leading assistant messages are omitted so Claude-compatible providers receive a user-first conversation. - **Plugin Hub dirty-edit preservation**: tracked plugin edits are stashed during updates and restored if the update conflicts, with the conflict surfaced in the UI. - **Responses API fallback**: opaque 400 errors from OpenAI-compatible Responses endpoints trigger a retry through Chat Completions. - **OAuth Codex version header**: upstream model gates are satisfied by attaching the resolved Codex client version header. - **Desktop canvas resize**: the live desktop iframe no longer captures pointer events during left-edge resize drags. - **Idle goal polling removed**: goal revisions push through the shared state monitor instead of recurring API requests. - **Hour-aware duration formatting** for the goal elapsed counter and other long-running displays. - **Open file button in canvas tab bar**: existing files can now be opened at any time without closing all editor tabs.