This release patches 1 CVE for security teams tracking exposure across their dependency inventory.
Topics
Affected surfaces
ReleasePort's take
Moderate signalThe API image endpoint now validates symlinks to block path‑containment bypasses. A guided onboarding wizard replaces manual setup, streamlining initial configuration.
Why it matters: Patch deployments immediately if the API image endpoint is used; adopt the new onboarding wizard in staging before production rollout.
Summary
AI summaryGuided first-run onboarding wizard replaces manual setup.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Medium |
Path-containment bypass in API image endpoint fixed with symlink validation Path-containment bypass in API image endpoint fixed with symlink validation Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Breaking | Medium |
Office skills renamed to task-oriented names: Writer, Calc, Impress Office skills renamed to task-oriented names: Writer, Calc, Impress Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Breaking | Medium |
A0 connector remote workflow split into separate text-editor and code-execution skills A0 connector remote workflow split into separate text-editor and code-execution skills Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Breaking | Medium |
Multi-action tools standardized around tool_args.action with backward compatibility Multi-action tools standardized around tool_args.action with backward compatibility Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Host Browser routes browser actions through CLI to local Chrome instance Host Browser routes browser actions through CLI to local Chrome instance Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
API chats support lifetime_hours validation with automatic background cleanup API chats support lifetime_hours validation with automatic background cleanup Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Guided first-run onboarding replaces manual setup with provider selection wizard Guided first-run onboarding replaces manual setup with provider selection wizard Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Model switcher displays custom per-chat model overrides with live refresh Model switcher displays custom per-chat model overrides with live refresh Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Nebius Token Factory provider registered as OpenAI-compatible provider Nebius Token Factory provider registered as OpenAI-compatible provider Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
chats-header-controls extension hook allows plugins to inject header controls chats-header-controls extension hook allows plugins to inject header controls Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
ZIP downloads display grouped progress toasts with error replacement ZIP downloads display grouped progress toasts with error replacement Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
Browser tool adds selector-based references, coordinate fallbacks, improved snapshots Browser tool adds selector-based references, coordinate fallbacks, improved snapshots Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Document artifact file creation becomes opt-in with cards in final responses Document artifact file creation becomes opt-in with cards in final responses Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Ollama Cloud provider available as OpenAI-compatible chat provider Ollama Cloud provider available as OpenAI-compatible chat provider Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Host Browser configuration simplified with clear option and debugging guidance Host Browser configuration simplified with clear option and debugging guidance Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Model efficiency scorecard published with provider/model rankings and analysis Model efficiency scorecard published with provider/model rankings and analysis Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
First-run onboarding guide published with screenshots linked from docs hub First-run onboarding guide published with screenshots linked from docs hub Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Project creation simplified; model selection moved to Advanced Settings Project creation simplified; model selection moved to Advanced Settings Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Settings navigation redesigned with sticky accordion and active section tracking Settings navigation redesigned with sticky accordion and active section tracking Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Feature | Medium |
Persistent JPEG screenshots saved for each Browser tool call in chat history Persistent JPEG screenshots saved for each Browser tool call in chat history Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Medium |
Ollama Cloud provider added as an OpenAI‑compatible chat provider with hosted API base and model list Ollama Cloud provider added as an OpenAI‑compatible chat provider with hosted API base and model list Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Feature | Medium |
Browser tool adds selector‑based references, coordinate click fallbacks, focused‑field typing, string key chords, and smarter content snapshots ignoring framework wrappers Browser tool adds selector‑based references, coordinate click fallbacks, focused‑field typing, string key chords, and smarter content snapshots ignoring framework wrappers Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Bugfix | Medium |
History compression no longer stalls on large single-line histories History compression no longer stalls on large single-line histories Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Self-update backups skip live sockets and device nodes preventing failures Self-update backups skip live sockets and device nodes preventing failures Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Desktop frontend displays neutral message during runtime preparation instead of error Desktop frontend displays neutral message during runtime preparation instead of error Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Canvas attachment now works for browser sessions and Markdown documents; Desktop reports ready when display and screenshots are available even without active windows Canvas attachment now works for browser sessions and Markdown documents; Desktop reports ready when display and screenshots are available even without active windows Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Bugfix | Medium |
Computer‑use rearm handling fixed: stale Free Run settings no longer treated as ready; agents provide backend‑agnostic guidance Computer‑use rearm handling fixed: stale Free Run settings no longer treated as ready; agents provide backend‑agnostic guidance Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Bugfix | Medium |
Subordinate agent document affordances skipped so delegated reviews retain actual content Subordinate agent document affordances skipped so delegated reviews retain actual content Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Bugfix | Medium |
Model config provider controls reset custom API base URL on provider change and move Supports Vision toggle out of Advanced Settings Model config provider controls reset custom API base URL on provider change and move Supports Vision toggle out of Advanced Settings Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Refactor | Medium |
Desktop functionality moved to separate _desktop plugin with dedicated routes Desktop functionality moved to separate _desktop plugin with dedicated routes Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Refactor | Medium |
Shared surfaces layer enables Browser and Desktop UI registration Shared surfaces layer enables Browser and Desktop UI registration Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Refactor | Medium |
Office plugin focuses on document artifacts and Markdown sessions only Office plugin focuses on document artifacts and Markdown sessions only Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Skill ownership hardened: built-in plugin skills cannot be deleted via connector Skill ownership hardened: built-in plugin skills cannot be deleted via connector Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Legacy a0_office_collabora supervisor stopped and removed during Docker self-update Legacy a0_office_collabora supervisor stopped and removed during Docker self-update Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Browser Playwright cache moved to /a0/tmp/playwright with automatic migration Browser Playwright cache moved to /a0/tmp/playwright with automatic migration Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Refactor | Medium |
Office plugin reduced to focus on document artifacts, Markdown sessions, and file actions; binary editing routed through Desktop requests Office plugin reduced to focus on document artifacts, Markdown sessions, and file actions; binary editing routed through Desktop requests Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Refactor | Medium |
Office and Desktop state migrated from /usr/_office and /usr/_desktop to plugin‑specific storage paths Office and Desktop state migrated from /usr/_office and /usr/_desktop to plugin‑specific storage paths Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Refactor | Medium |
Document artifact handling made opt‑in via document_artifact flag; file cards appear only in final responses Document artifact handling made opt‑in via document_artifact flag; file cards appear only in final responses Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
Full changelog
Agent Zero Release Notes
Highlights
This release introduces a redesigned first-run onboarding experience, separates Desktop and Office into focused plugins, adds host browser routing through the A0 CLI connector, and delivers significant prompt and tool contract improvements informed by cross-provider evidence sweeps.
New Features
- Guided first-run onboarding — A new wizard walks users through Cloud vs. Local provider selection, account connection, model picking, and a ready state, replacing the previous manual setup flow.
- Ollama Cloud provider — Available as an OpenAI-compatible chat provider with hosted API base and model listing.
- Nebius Token Factory provider — Registered as an OpenAI-compatible provider, available in onboarding and model config.
- Host Browser (Bring Your Own Browser) — Route browser actions through the A0 CLI connector to a local Chrome/Chromium instance with remote-debugging support, including profile mode selection (existing profile or clean Agent profile).
- Browser runtime selection exposed to CLI — A protected connector endpoint allows the A0 CLI to switch between Docker browser and Bring Your Own Browser mode.
- Persistent browser history screenshots — Each Browser tool call saves a static JPEG to chat history for immutable transcript previews.
- ZIP download toast feedback — Immediate grouped progress toasts for backup and file-browser ZIP downloads with error replacement.
- API chat lifetime and cleanup —
lifetime_hoursis validated and persisted per chat; a background job loop removes expired API chats automatically. - Connector model overrides in Web UI — Custom per-chat model overrides now render in the model switcher instead of a generic "Custom" label, with live refresh on changes.
chats-header-controlsextension hook — Plugins can inject controls into the chats list header via the establishedx-extensionpattern.
Architecture & Plugin Changes
- Desktop split into
_desktopplugin — Xpra/Xfce lifecycle,/desktoproute, Desktop state, session APIs, surface registration, and the linux-desktop skill now live in_desktop. - Office reduced to document ownership —
_officefocuses on document artifacts, Markdown sessions, LibreOffice-compatible file actions, and persistence. Binary document editing routes through explicit Desktop requests. - Shared surfaces frontend service — Browser and Desktop register docked or floating live UI through a dedicated surfaces layer, preserving active viewers across canvas/modal switches.
- Office and Desktop state moved under plugin storage — Retired
/usr/_officeand/usr/_desktoptrees migrate into/usr/plugins/<plugin>at startup. - Serialized runtime package preparation — Office and Desktop apt operations share an in-process retry guard to handle transient apt locks gracefully.
- Desktop install progress — The Desktop frontend shows a neutral install message during runtime preparation instead of a misleading missing-dependencies error.
Tool & Prompt Improvements
- Normalized tool action contracts — Multi-action tools standardized around
tool_args.actionwhile maintaining backward compatibility with older dialects. - Renamed skills to task-oriented names — Office skills become Writer, Calc, Impress; high-impact skills get task-oriented names; plugin-owned skills move into their owning plugin folders.
- Reduced default prompt pressure — Browser and scheduler prompts compacted into skill-backed manifests, skill catalog descriptions shortened, noisy framework knowledge pruned.
- A0 connector remote skills split by affordance — Separate text-editor and code-execution remote skills replace the combined CLI remote workflow skill; computer-use remote scoped to desktop control and skill-gated as beta.
- Browser tool ergonomics — Selector-based reference actions, coordinate click fallbacks, focused-field typing, string key chords, and smarter content helper snapshots that ignore framework event wrappers.
- Document artifact stabilization — File creation is opt-in through
document_artifact, file cards appear only in final responses, and Desktop canvas sessions refresh after saved edits.
Security Fixes
- Path-containment bypass in
/api/image_getresolved — Requested images are now resolved against the Agent Zero base directory with symlink-aware validation. SVG/SVGZ responses includenosniffand sandboxed CSP headers.
Bug Fixes
- Blocking history compression edge cases — Stalled automatic compression no longer spins forever; large single-line histories (85k+ characters) split by verified token budget.
- Canvas attachment for browser and documents — Browser canvas attaches to active Docker sessions with initial snapshots; Markdown documents open through the right-canvas Desktop editor.
- Bare desktop canvas treated as ready — Linux Desktop reports healthy when XFCE has no active application window but display and screenshots are available.
- Computer-use rearm handling — Stale Free Run settings no longer treated as ready; agents provide backend-agnostic rearm guidance.
- Subordinate agent document affordances — Automatic office document response affordances skipped for delegated agents so reviews keep their actual content.
- Model config provider controls — Custom API base URL resets on provider change; Supports Vision toggle moved out of Advanced Settings.
Infrastructure & Maintenance
- Browser Playwright cache moved to
/a0/tmp/playwright— Startup migration cleans retired usr-based caches automatically. - uv cache cleaned during self-update — Best-effort
uv cache cleanruns when the self-update manager processes an update. - Legacy Collabora retirement — Old
a0_office_collaborasupervisor program stopped and removed during Docker self-update; stale runtime paths cleaned. - Legacy runtime artifact cleanup — Stale directories removed, retired packages (including dynamically discovered
collaboraoffice*splits) purged at startup/self-update. - Self-update backups skip runtime sockets — Live sockets, device nodes, vanished files, and unreadable entries no longer trip rollback checks.
- Connector hello metadata — Remote tool metadata stored through a dedicated hello path with context-bound websocket SID acknowledgment.
- Skill ownership hardened — Connector list/delete scoped to enabled catalog; built-in plugin skills cannot be deleted; invalid skill YAML surfaced instead of silently accepted.
UI Improvements
- Simplified project LLM setup — Project creation focuses on basic details and Git cloning; model selection moved to a collapsed Advanced Settings accordion on the edit screen.
- Settings accordion redesign — Sticky accordion with active section tracking replaces two-step settings navigation.
- Action button order aligned — Primary actions appear before Cancel across plugin settings and related modals.
- Browser chat action button removed — The Browser plugin no longer injects a button under the chat input.
- Project skills settings repositioned — Moved directly after project instructions, before file structure and secrets.
- Host Browser config simplified — "Use host when ready" replaced with clear "Bring Your Own Browser" option and Chrome remote-debugging guidance.
Documentation
- Refreshed user-facing guides — README, quickstart, and docs index updated around Browser, Desktop, A0 CLI, projects, memory, skills, profiles, and model presets with optimized screenshots.
- First-run onboarding guide — Screenshot-led walkthrough linked from docs hub, quickstart, and installation flow.
- Model efficiency scorecard — Scored tool-efficiency chart with provider/model rankings, failure clusters, and applied improvements.
- Refactor guardrails — Internal docs covering modal/surface boundary, Desktop ownership, Office scope, renamed skills, and connector ownership rules.
Security Fixes
- CVE not specified – Path‑containment bypass in /api/image_get resolved (symlink‑aware validation, CSP headers)
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Earlier breaking changes
- v1.16 Legacy speech settings and APIs removed; use _kokoro_tts and _whisper_stt plugins instead.
Beta — feedback welcome: [email protected]