v2.12
triggerdotdev/trigger.devv2.12Sep 9, 2026by github-actions[bot]
Upgrading?
AI Summary
A major release focusing on security hardening, UI/UX improvements (Canvas, Editor), and consolidating the Responses API to reduce token usage.
Key Highlights
- Connector & Transport hardening with atomic file transfers and checksummed payloads.
- Unified Editor with ACE syntax highlighting and Markdown preview.
- Canvas rail customization with vertical drag handle and keyboard support.
- Responses API consolidation reducing Codex input from ~16.4K to ~11.3K tokens.
Breaking Changes
- Removal of the legacy file-editor modal.
New Features
- Atomic file transfers with size verification and SHA-256 receipts.
- Unified text and code editing in the shared Editor.
- Configurable editing and transfer limits.
- Responses schema descriptions for 15 tool implementations.
Full Release Notes
# Agent Zero Release Notes ## Connector & Transport Hardening - Enforced negotiated WebSocket payload ceilings with a symmetric checksummed transfer protocol for large operations, including bounded transfer state, disk spooling, and automatic cancellation on pause, reset, delete, or disconnect - Made workspace HTTP file transfers atomic with streaming uploads into partial files, size verification, fsync, and SHA-256 download receipts - Bounded remote connector tool payloads with explicit continuation metadata for large content, rejecting oversized inline artifacts before base64 expansion and routing bulk files to authenticated HTTP transfers - Documented connector payload contracts including WebSocket ceilings, transfer state machine, cancellation lifecycle, and remote text limits ## File Browser & Editor - Added independent, lazily loaded directory trees to Files and Editor in canvas and modal modes with unified styling, lighter panel backgrounds, and flat toolbar controls - Unified text and code editing in the shared Editor with ACE syntax highlighting, line numbers, native source search, and Markdown preview — removing the legacy file-editor modal - Added File Browser preferences for sorting, view mode, initial tree visibility, and independent editing and transfer limits - Exposed connected CLI and Launcher folders in Files with host permissions, authenticated HTTP transfers, size/SHA-256 checks, and atomic publication - Centralized streamed file transfers and hardened archive operations with expansion and entry budgets, unsafe member rejection, and owned temporary-file cleanup - Moved File Browser controls into a dedicated Settings category with appearance defaults, remote connections, file limits, and archive limits - Added configurable editing (10 MiB default) and transfer (100 MiB default) limits shared across Files and Editor - Fixed file links in chat messages to recognize file URLs and download API paths in the shared path-link renderer - Polished Files selection toolbar, removed tree tooltips, matched folder icon tint to standard file icons, and hid file sizes in icon view ## Responses API & Native Tool Calls - Preserved native tool calls through Context Doctor, leaving canonical function calls untouched by text repair - Stored canonical function-call content through assistant history and masking, with proper repeated-response detection - Streamed native tool arguments through the existing live display with alias normalization and masking - Described bundled tool arguments in Responses schemas for 15 tool implementations with non-strict definitions - Preserved policy-filtered guidance in native Responses function descriptions with A0 envelope-to-argument conversion - Projected native system instructions only for Responses requests, reducing Codex input from ~16.4K to ~11.3K tokens - Preserved native Responses history within prepared prompts, retaining original IDs and encrypted reasoning - Consolidated Responses prompt bookkeeping outside Agent, reducing agent.py additions from 61 to 24 lines - Made `llm_result` required in `hist_add_ai_response` with `LLMResult.non_llm` sentinel for non-LLM turns - Kept Responses stream reconstruction inside the parser with one authoritative output-item store - Skipped unused Chat replay preparation and shared input conversion for Chat Completions ## Context Doctor & Response Handling - Added split-thoughts repair strategy extracting value selection into a helper with configurable settings - Handled reasoning-only and plain-text fallback responses with dedicated retry warnings and user notices - Tightened usable-response detection requiring at least one A0 key with a non-empty value - Fixed raw-text fallback classification by moving raw thoughts wrapping after repair selection - Counted `thoughts_fallback` warning toward the unusable-response limit - Let Responses text reach the core response dispatcher while continuing to repair recognizable tool intent ## Prompt & Profile Improvements - Hid disabled capabilities from system prompts so policy-filtered tool prompts remain the source of truth - Moved MCP guidance into prompt templates with policy-filtered qualified names and schemas - Compacted developer and researcher profile prompts, reducing token counts from ~2,600 to ~750 each - Strengthened shared problem-solving prompts with observable success criteria, evidence-driven replanning, bug reproduction, and source-preserving synthesis - Reinforced response tool usage in prompts, explicitly stating plain-text output without a tool call is invalid - Stripped trailing newlines in `read_prompt` and `parse_prompt` for consistent template handling - Added initial user turn to preserve AI greeting turn order when no project is selected - Rendered scoped profile routing catalog as one line per profile ID with delegation context ## Canvas & UI - Made the canvas rail movable and customizable with a vertical drag handle, keyboard support, viewport bounds, and remembered position - Added a "Show verbose tool calls" preference gating tool name and args display in the message stream - Added `text_editor` custom message handler with dynamic action+path headings - Themed dark checkboxes with light checkmarks and centered Memory Dashboard selection controls - Polished surface modal headers to a shared 48px height with centered controls - Refreshed context indicator after clearing chat - Showed LiteLLM and Secrets settings by default without collapsible wrappers - Avoided replaying queued WebUI updates — live benchmark showed catch-up reduced from 1.95s to immediate - Fixed context window popover staying within bounds on short labels - Fixed Browser tab switching stuck in loading state when reusing the same viewer URL - Fixed branch button injection skipping markdown-wrapped action bars - Clarified required Agent Editor instructions with validation errors and tooltip cleanup ## Browser & Desktop - Added Safari setup to Browser settings with structured setup guidance for Safari and Chromium-family browsers - Sped up Browser and Desktop startup by limiting initial D-Bus and CUPS waits to one second - Fitted Desktop display to the active canvas, removing the aspect-ratio fallback that cropped narrow viewports - Fixed Desktop and Office package installation using the Python 3.13-compatible Kali snapshot - Preserved the shared browser cleanup thread across context resets ## Model & Provider Management - Prevented chat parameters from leaking into embedding configurations - Preserved Codex OAuth prompt cache affinity with stable session/thread IDs and bounded default cache keys - Kept OAuth model discovery tied to account availability without replacing empty catalogs with generic registry models - Reported provider usage for streamed Chat Completions turns with automatic retry when `stream_options` is rejected - Kept encrypted Chat reasoning out of readable output by filtering provider encrypted-reasoning markers - Preserved Codex Chat bridge usage and terminal outcomes with token count translation - Reported invalid model parameter JSON before saving with editor context identifying the preset and slot - Avoided repeated preset reads during embedding comparisons — median save time reduced from 1,171ms to 52ms - Discarded model search results for changed drafts and queries - Set tested Codex client version (0.153.3) by default for model discovery without CLI ## Skills & Plugins - Added an on-demand guide for managing projects, chats, profiles, and saved tasks through existing APIs - Consolidated plugin authoring behind `a0-create-plugin` and lifecycle management behind `a0-manage-plugin` - Required `hooks.py` for plugin setup and cleanup in authoring guidance - Hid remote skill discovery until the A0 CLI connects - Fixed trailing commas in six JSON skill examples and rewrote 23 skill descriptions for catalog preview - Validated skill examples and sharpened descriptions with regression checks ## Parallel Execution & Terminal - Kept parallel terminal jobs alive until their commands finish, publishing progress through job results - Kept goal operations out of disposable parallel workers with shared validation across dispatch paths - Preserved streamed child log content in parallel jobs so user-visible output is never replaced ## Security Fixes - **WhatsApp**: Fixed media path traversal and enforced pre-download sender/group authorization - **Telegram**: Fixed webhook authentication bypass — reject HTTP updates for polling bots and require matching nonempty webhook secret - **IMAP**: Fixed sender whitelist bypass with strict mailbox parsing requiring exactly one valid From address ## Infrastructure & Stability - Optimized scoped tool policy resolution reusing one fresh policy snapshot across batches - Unified embedding calls behind a single batch entry point removing duplicate transport logic - Serialized shared event-loop initialization to prevent concurrent first-use from stranding tasks - Preserved rollback stash identity during self-update by tracking Git object IDs - Preserved non-LLM mode when reloading result metadata through dictionary and history round trips - Restored legacy assistant history call compatibility accepting message-only and positional ID calls - Shared editor log presentation across local and remote tools - Kept the rate limiter demo out of test collection - Used 4-space indented tree in workdir extras for token-compact agent-facing output - Routed nudge as system message and minified message templates - Simplified WhatsApp pairing to one QR-code action with sequential polling - Updated Launcher README links to v1.7 - Ignored `.venv` in generated gitignore templates ## Breaking Changes - `hist_add_ai_response` now requires an `llm_result` parameter — use `LLMResult.non_llm()` for non-LLM turns (greeting, intervention progress). Legacy message-only and positional ID calls remain supported via automatic sentinel injection. - `thoughts` is no longer auto-populated from `reasoning` when absent (reasoning-to-thoughts revert). - Plugin authoring now requires `hooks.py` for dependency installation, initialization, and uninstall cleanup — `execute.py` setup patterns are no longer supported.
Related Repositories
openclaw/openclaw★ 392,689
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,064
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 357,450
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,652
The open source coding agent.
n8n-io/n8n★ 208,248
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.