v0.121.0

Agenta-AI/agentav0.121.0Sep 24, 2026by mmabrouk

Upgrading?

AI Summary

A major feature release introducing channel integrations for Slack and Telegram, along with significant backend refactoring to support ordered config edits, runner improvements, and API stability.

Key Highlights

  • New Channel integrations: Slack and Telegram support (hosted and custom)
  • Change-set engine for ordered config edits
  • Runner improvements including warm environment changes and approval binding
  • Removal of feature flags for durability, ordered operations, and sessions queue
  • Agent configuration editing benchmarking and design workspace

Breaking Changes

  • Agent behavior changes: handler-mode ops removed, one error envelope enforced, and specific routes deleted
  • Agent commits now refused if instructions lack 'agents_md'
  • Feature flags for ordered operations, sessions queue, and durability have been removed

New Features

  • Connect Slack and Telegram from the agent page
  • Change-set engine for ordered config edits
  • Change a warm environment instead of rebuilding it
  • Bind an approval to the exact call that may execute
  • Read workspace files into a commit

Full Release Notes

## What's Changed
* fix(runner): platform-op direct-call errors keep their structured detail by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5763
* fix(runner): Pi's validation error names the misplaced property by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5779
* fix(sdk): runner errors keep their instructions (sanitizer cap to 2000) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5780
* fix(api): stop echoing submitted secrets in vault validation errors by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5795
* test(qa): permanent release-gate cells for agent config editing by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5765
* feat(benchmarks): the agent-config-editing one-shot benchmark and its first measurement night by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5801
* docs: agent-config-editing design workspace (stack bottom) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5733
* test(frontend): config panel preserves skill entries it does not author by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5782
* chore(hosting): dev runner auto-reloads on save (tsx watch + polling) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5784
* fix(runner): let an environment own the configuration it installed by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5746
* feat(sdk): let a builder tool call carry the agent's own note by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5747
* feat(api): add the change-set engine for ordered config edits by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5748
* refactor(runner): move session decisions out of server.ts by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5749
* fix(api): serialize concurrent commits on one variant with a row lock by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5750
* feat(api): wire ordered operations into the workflow commit endpoint by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5751
* refactor(runner): extract the sandbox and workspace lifecycle units by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5752
* feat(api): add read_config and harden the commit endpoint by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5753
* refactor(runner): finish the lifecycle split with a typed context by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5754
* feat(runner): read workspace files into a commit, under one root by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5755
* feat(runner): change a warm environment instead of rebuilding it by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5756
* feat(runner): bind an approval to the exact call that may execute by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5757
* feat(runner): reopen a harness session without losing the sandbox by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5758
* feat(runner): rotate a credential without deleting the sandbox by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5759
* feat(runner): show the real change on the card, commit those bytes by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5760
* feat(sdk): deliver the approval manifest to the live approval card by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5761
* feat(frontend): show the frozen content and diff on commit approvals by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5762
* fix(runner): steered sessions keep their workspace mount (pre-existing) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5764
* feat(api): agent behavior leaves the public API: handler-mode ops, one error envelope, routes deleted by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5797
* chore(clients): regenerate both API clients from the branch spec by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5785
* fix(ci): clear the CodeQL highs (test and benchmark code only) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/5802
* [feat] Connect Slack and Telegram from the agent page by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6737
* feat(channels): hosted (Agenta-owned) Telegram bot by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6724
* feat(channels): Telegram channel (custom bot) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6679
* fix(channels): render the approval card on a park, answer by the real interaction id by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6653
* docs(channels): takeover decision record, live QA, and finding resolutions by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6652
* feat(channels): put the feature behind a flag (env var + UI switch) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6651
* fix(channels): an approval answer resumes the parked turn, and reaches the agent that asked by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6650
* fix(channels): an edit names what changes, and a failed post is written down by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6649
* fix(channels): decide what opens a turn, and make a DM one conversation by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6647
* fix(channels): unblock the first live deploy (slug, handshake, reference key, space kind, listing) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6646
* [docs] Update API reference docs by @github-actions[bot] in https://github.com/Agenta-AI/agenta/pull/7051
* chore(sessions): hardcode the durability switches and remove their flags by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7097
* chore(api): hardcode ordered operations for agent config commits and remove the flag by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7093
* chore(frontend): hardcode the production mobile gate values and remove the env vars by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7091
* fix(frontend): wait for the agent to be ready before the first queued send by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7098
* chore(sessions): hardcode last-message-only and history reconstruction, remove both flags by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7092
* chore(frontend): hardcode five always-on agent UI flags and remove them by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7094
* chore(api): hardcode the sessions queue and steer, remove the direct send path by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7095
* fix(runner): fail an ACP request when its connection closes instead of hanging by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7099
* [feat] Channels: Slack, bridge, and Agenta channel (takeover of #6051) by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/6644
* fix(api): refuse agent commits whose instructions lack agents_md by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7103
* fix(clients): regenerate the Python and TS clients for the channels grant types by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7107
* fix(frontend): trim publish snippet trailing slashes without a regex by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7104
* fix(agents): hide the mock test harness from harness lists by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7108
* [fix] Make Claude answer a steered message that replaces an unanswered one by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7111
* docs: v0.121.0 upgrade notes, removed flags, and API changes by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7106
* test(api): skip the live channel check where the local sandbox is off by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7112
* fix(channels): claim an outbox reply atomically so two workers never post it twice by @mmabrouk in https://github.com/Agenta-AI/agenta/pull/7105
* [release] v0.121.0 by @github-actions[bot] in https://github.com/Agenta-AI/agenta/pull/7087


**Full Changelog**: https://github.com/Agenta-AI/agenta/compare/v0.120.0...v0.121.0

Related Repositories