Agent Zero v2.12: Remote Files, Native Tool Calls, & Security Hardening

v2.12 hardens Connector and file transfers, unifies Files and Editor, preserves native Responses tool calls, improves prompts and providers, and fixes security issues across messaging plugins.

#releases

Agent Zero v2.12 changelog banner

๐Ÿ”Œ Connector & Remote File Transfers

  • Large operations now use a bounded transfer protocol โ€” Negotiated WebSocket ceilings, checksums, disk spooling, and symmetric transfer state keep oversized operations controlled and cancel them automatically on pause, reset, deletion, or disconnect.
  • Workspace transfers publish atomically โ€” Streaming uploads write through partial files with size verification and fsync, while downloads return SHA-256 receipts.
  • Oversized tool results stay out of the socket โ€” Remote Connector tools expose continuation metadata for large content, reject oversized inline artifacts before base64 expansion, and route bulk files through authenticated HTTP transfers.
  • CLI and Launcher folders appear in Files โ€” Connected hosts expose their folders with host permissions, authenticated transfers, size checks, and checksum verification.
  • Archives and temporary files have harder boundaries โ€” Centralized transfers add expansion and entry budgets, reject unsafe archive members, and clean up only owned temporary files.

๐Ÿ—‚๏ธ Files & Editor

  • Files and Editor have independent directory trees โ€” Each surface lazily loads its own tree in canvas and modal modes with unified styling and separately configured visibility.
  • One shared Editor handles text and code โ€” ACE adds syntax highlighting, line numbers, native source search, and Markdown preview, replacing the legacy file-editor modal.
  • File behavior is configurable in one place โ€” A dedicated settings category covers sorting, view mode, initial tree visibility, remote connections, archives, and separate editing and transfer limits.
  • Safer defaults cover everyday work โ€” Editing defaults to 10 MiB and transfers to 100 MiB across Files and Editor.
  • Chat file links resolve more reliably โ€” The shared path-link renderer now recognizes file URLs and download API paths, while selection controls and icon view receive smaller visual refinements.

๐Ÿง  Responses API & Context Doctor

  • Native function calls remain native โ€” Context Doctor, assistant history, masking, repeat detection, and live streaming preserve canonical tool calls and their arguments instead of converting them into repaired text.
  • Bundled tools describe their arguments directly โ€” Fifteen tool implementations now expose non-strict Responses schemas, with policy-filtered guidance retained in native function descriptions.
  • Codex receives a smaller, more faithful prompt โ€” Responses-only system projection reduces input from roughly 16.4K to 11.3K tokens while preserving native history IDs and encrypted reasoning.
  • Response reconstruction has one owner โ€” The parser maintains the authoritative output-item store, and Chat Completions skips replay preparation and input conversion it does not use.
  • Fallback handling is stricter and clearer โ€” Split-thought repair, reasoning-only responses, plain-text fallbacks, and unusable-output limits now select the correct retry path and surface useful warnings.

โœ๏ธ Prompts, Profiles & Plugins

  • Prompts expose only usable capabilities โ€” Disabled capabilities stay hidden, while MCP guidance carries policy-filtered qualified names and schemas from the prompt templates.
  • Developer and researcher profiles are leaner โ€” Their prompts shrink from roughly 2,600 to 750 tokens while shared guidance emphasizes observable success criteria, evidence, reproduction, and source-preserving synthesis.
  • Profile routing is more compact and predictable โ€” Scoped profiles render one line per ID, and an initial user turn preserves conversation order when no project is selected.
  • Management guidance is available on demand โ€” A new guide covers projects, chats, profiles, and saved tasks through existing APIs.
  • Plugin authoring has one supported lifecycle โ€” Creation and management consolidate behind a0-create-plugin and a0-manage-plugin, with hooks.py required for setup, initialization, and uninstall cleanup.

๐ŸŽ›๏ธ Canvas, Browser & Desktop

  • The canvas rail moves with you โ€” A vertical drag handle and keyboard controls reposition it within viewport bounds and remember the chosen location.
  • Tool-call detail is optional โ€” A new preference controls verbose tool names and arguments, while text-editor actions receive clearer dynamic headings.
  • Live updates no longer replay stale queues โ€” Catch-up in the measured WebUI benchmark drops from 1.95 seconds to immediate, alongside fixes for context popovers, Browser tab reuse, chat action bars, and context refresh after clearing.
  • Browser setup now includes Safari โ€” Structured guidance covers Safari and Chromium-family browsers, and initial D-Bus and CUPS waits are capped at one second.
  • Desktop fits the active canvas โ€” The display no longer falls back to an aspect ratio that crops narrow viewports, and Office installation uses a Python 3.13-compatible Kali snapshot.

โš™๏ธ Models, Parallel Work & Stability

  • Model settings stay in their lane โ€” Chat parameters no longer leak into embedding configurations, Codex OAuth keeps stable cache affinity, and model discovery remains tied to account availability.
  • Provider accounting survives streams โ€” Chat Completions reports usage with a retry when stream_options is rejected; Codex bridge totals and terminal outcomes are preserved without exposing encrypted reasoning.
  • Preset editing does less repeated work โ€” Embedding comparisons avoid redundant reads, cutting the reported median save time from 1,171 ms to 52 ms, and stale model-search results are discarded when drafts change.
  • Parallel terminal work lives until completion โ€” Background commands publish progress without losing streamed child logs, while goal operations remain outside disposable workers.
  • Core lifecycle edges are safer โ€” Shared event-loop initialization is serialized, self-update tracks rollback stash object IDs, and non-LLM result metadata survives history round trips.

๐Ÿ”’ Security Fixes

  • WhatsApp media stays inside its boundary โ€” Media path traversal is blocked and sender or group authorization is checked before downloads begin.
  • Telegram webhooks require real authentication โ€” HTTP updates are rejected for polling bots, and webhook requests require a matching non-empty secret.
  • IMAP sender allowlists cannot be bypassed โ€” Strict mailbox parsing now requires exactly one valid From address.

โš ๏ธ Breaking Changes

  • hist_add_ai_response now requires an llm_result; use LLMResult.non_llm() for greetings, intervention progress, and other non-LLM turns. Legacy message-only and positional-ID calls remain compatible through automatic sentinel injection.
  • thoughts is no longer populated automatically from reasoning when it is absent.
  • Plugin dependency installation, initialization, and uninstall cleanup must use hooks.py; setup through execute.py is no longer supported.