Skip to content

[release] v0.125.2 - #7826

Merged
mmabrouk merged 40 commits into
mainfrom
release/v0.125.2
Oct 27, 2026
Merged

mmabrouk merged 40 commits into
mainfrom
release/v0.125.2

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

New version v0.125.2 in

  • web
    • web/oss
    • web/ee
    • web/mobile
  • services
  • api
  • sdks
    • sdks/python
  • clients
    • clients/python
    • clients/typescript
  • kubernetes
    • kubernetes/helm

Final QA

  • fix(runner): keep a turn's work when a time limit ends it #7823 On a stage, set the runner's AGENTA_RUNNER_RUN_TOTAL_TIMEOUT_MS low (for example 120000), and run a Pi agent turn that runs several shell commands for longer than that. After the time-limit error, send "continue". Pass: the agent goes on from its earlier work and does not run the earlier commands again, and the runner log shows stage=harness_cancel sent=true settled=true for that turn.

  • [fix] Apply the runner output budget per step, not per turn #7829 On a stage, run an agent turn with many tool calls and one tool that prints a lot of output while it runs (for example a long test suite). Pass: the turn finishes with no output_limit_exceeded, and the tool's final result shows in the session.

  • fix(services): install the mcp package litellm needs for MCP tools #7830 On a stage, send a completion request with an mcp tool through services. Pass: no HTTP 500 with "No module named 'mcp'".

  • perf(api,sdk): run the agent turn-start lookups in parallel #7832 On a stage, send to an agent with several tools (two or more from one integration), a model connection and a few named secrets. Pass: the turn starts and runs as before, and the services log shows a shorter wait before the runner starts. Also send to an agent whose tool resolve fails (for example a removed connection). Pass: the same error as before reaches the user.

  • fix(frontend): keep a sent message when the user switches sessions #7834 In /m, open a new agent session, send the first message, and switch to another session right away (use network throttling). Come back after 20 s. Pass: the turn ran. Then block the workflow revision request in devtools, send, and switch away. Come back. Pass: the session is still listed and shows "Message not sent" with "Retry message", and Retry sends the saved text.

mmabrouk and others added 4 commits October 26, 2026 18:16
A time limit used to end a turn like a provider refusal: the runner destroyed the harness session and dropped the turn's work from both the native transcript and the text replay. The next message then started over with only the person's messages.

Stop the harness the way a Stop does when the total, idle or tool-call limit trips. When it answers, keep the turn as the resume point with its work. The text replay keeps a time-limited turn's work too, and marks a command without a result as an unknown outcome.
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Agenta-AI/agenta
  • Branch: main
  • File: .coderabbit.yaml
  • Commit: f20d551
  • Layers: Repository YAML (base), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a33baf7c-6e70-470f-8c78-3ee2d5f03740

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Agenta Product Agent and others added 8 commits October 26, 2026 19:55
… once

A long, healthy turn was stopped with output_limit_exceeded after 58
minutes and 245 tool calls. The budget counted every provider update for
the whole turn, and Pi resends the full output of a running command on
every progress update (twice, in content and rawOutput). A few test runs
used most of the 16 MiB, although the runner keeps only the final result.

The budget now applies per step (one model reply or one tool call), so a
runaway step is still stopped. A tool progress update is charged only for
the bytes it adds over the largest earlier update of the same call. A
looser turn backstop (64 MiB, 500,000 updates) stays as a safety net.
The user-facing message is unchanged; the runner log names the limit.
…g flags

The two per-organization rollout flags now cover every organization, so
the master switches decide alone: AGENTA_LLM_GATEWAY_ENABLED for the LLM
gateway and AGENTA_WALLETS_ENABLED for the wallet.

- Remove core/rollout/switches.py and AGENTA_ROLLOUT_FLAGS_ENABLED.
- Remove the wallet shadow mode. With the wallet on, every admission
  point enforces, as every organization does in production today.
- The wallet summary still returns mode, now off or enforce.
- The gateway default stays off.
…rivate agents in channels

A chat that came from Slack or Telegram was read-only for every person: the
sharing rules made channel sessions view only. Members now send to
project-visible channel chats like any project chat.

A private agent may now answer in a channel. Only its owner binds it, a
make-private no longer turns its bindings off, and the channel chats it
creates are private to its owner. Only the owner's bindings run the private
agent and act in those chats, and only the channel's own run creates a
channel thread's session.
…running

A Stop through POST /sessions/streams/ (and a watchdog takeover or a
newer turn) moves the session's running turn while the runner still
streams. The next live-frame batch failed the running-owner check with
403. The runner reads every 403 as lost access, so it ended the turn
with access_denied and skipped the turn's own records: the partial
answer and the done record were lost.

A frame of a turn that is not the running one now answers 409 when the
caller may run the session and the session exists. That check is always
the full session check, never the turn's admission, which the request
may have read before the Stop. A hidden or unknown session, a caller
who may only view, and a caller who lost the capability keep their
403, so a runner whose person lost access still ends access_denied.
Every refused frame still publishes nothing.

Runners already deployed read 409 as a dropped frame batch, so this API
change alone fixes them. No added statement or round trip on the
running-frame, record or send paths.
feat(sdk): add Claude Haiku 5.5 to the model catalogs
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor Author

Website preview

Preview URL: https://pr-7826-agenta-website-preview.mahmoud-637.workers.dev

Built from e6006aab5739679433920183b7c85d5c978b675e. This comment updates in place on every push.

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor Author

Railway Preview Environment

Item Value
Status stopped
Commit e6006aab5739679433920183b7c85d5c978b675e
Manual expiry (UTC) Not granted
CI deadline (UTC) Not granted
Workflow https://github.com/Agenta-AI/agenta/actions/runs/40464163366

Dependent tests finished. Post /preview for manual review. Environment absence verified; retained storage requires separate provider accounting.

Post /preview as a new comment to request a one-hour preview. Repeating it while active does not extend the hour.
Preview data is disposable. Expiry is enforced by the next successful cleanup sweep, not an exact timer.
Environment deletion stops its compute. Provider-retained storage and permanent services may still be billed.

Agenta Product Agent and others added 7 commits October 26, 2026 20:21
The tracer records every tool_call_update with new arguments as its
own event, so those copies stay in memory. Only progress updates
without arguments get the growth-only charge now.
Rebased on release/v0.125.2 and relocked with uv 0.11.14, the uv version the services Dockerfile pins, so the lockfile keeps revision 3.
The update that completes or fails a tool call is kept as its result, so a reused call id could
otherwise keep many results while each was charged only for its growth. The stop message now
names the turn limits when the turn backstop trips.
… the cancel as cancelled

A prompt that ended on its own in the cancel window, with an error above all, may hold content a
provider refused, so the failed-turn rule applies to it.
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor Author

📘 Docs preview

Status ✅ Ready
Preview https://pr-7826-agenta-docs-preview.mahmoud-637.workers.dev/docs/
Inspect Actions run
Commit e6006aab5739679433920183b7c85d5c978b675e

Pages changed in this pull request

This comment updates in place on every push.

mmabrouk and others added 7 commits October 26, 2026 20:40
fix(api): keep the partial answer after Stop and end the turn as stopped
A first send waits for the workflow before it goes out. If the user opened
another session meanwhile, the workflow query that was still loading never
reached the unsubscribed atom the request builder reads, so the send timed
out and the failure path deleted the fresh session row.

Hold the workflow subscription while the request is built, so the send goes
out off screen. When a send still fails after the screen closed, keep the
session and store the message as a failed task that the chat screen offers
again with its retry.
fix(api): make the embed token scan linear
…i-2026.10.18

chore(deps): bump certifi from 2026.6.17 to 2026.10.18 in /services
mmabrouk and others added 14 commits October 26, 2026 21:25
…step

[fix] Apply the runner output budget per step, not per turn
fix(services): install the mcp package litellm needs for MCP tools
…me-limit

fix(runner): keep a turn's work when a time limit ends it
chore(api): remove the llm-gateway-rollout and wallets-rollout PostHog flags
…ound the secret reads

Concurrent references to one integration each crawled the whole provider catalog when the cache
was cold. Concurrent calls for the same catalog now share one fetch. The named-secret reads keep at
most 8 requests in flight, so a long list cannot wait out the HTTP pool and read as missing.
…l's fallback list

Pi 0.99.1 does not know claude-haiku-5-5, so the runner registered it with the
compat of the first anthropic built-in (claude-fable-5). That compat carries
allowedFallbackModels, Pi sent a fallbacks field, and the gateway refused every
turn with HTTP 400 routing_field_not_allowed. The span cost was also $0.

- Add anthropic/claude-haiku-5-5 to PI_MODELS_AHEAD_OF_CATALOG, inheriting
  from claude-haiku-4-5 with the prices from the SDK curated catalog.
- An unknown model now borrows only the compat its closest siblings share,
  and a registered id never inherits allowedFallbackModels.
…session-switch

fix(frontend): keep a sent message when the user switches sessions
…l-calls

perf(api,sdk): run the agent turn-start lookups in parallel
… price tier; list it in the Pi picker

- Haiku 5.5 rejects budget_tokens thinking, so inherit Sonnet 5.5's request
  surface (forceAdaptiveThinking, 1M context, 128K output) instead of
  Haiku 4.5's, and add the 5x price tier above 100,000 input tokens.
- Add anthropic/claude-haiku-5-5 to the Anthropic default models, so the
  Pi model picker lists it next to Haiku 4.5.
fix(runner): make Haiku 5.5 run on Pi and list it in the picker
…before it is sent

A message typed on Home or an agent's page waits on the chat screen until the
transcript, the vault and the setup step answer. Opening another chat during
that wait unmounted the only code that sends it, so it never went out, the
session got no rail row, and the rail link carries no agent, so coming back
showed "This chat does not exist".

When the chat screen leaves a session whose task was not on its way, mark the
task failed and list the session in the rail. On return the chat screen takes
the agent from the task and shows the "Message not sent" card with Retry.
Retry also waits for a template's connect step.
fix(frontend): keep a first message when the user opens another chat before it is sent
fix(api,frontend): let people write to channel chats in /m and keep private agents in channels

@mmabrouk mmabrouk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 The AI agent says: Approved on Mahmoud's instruction after the v0.125.2 production deploy went green in US (workflow 29 runs 40476720492 and 40477766440) and EU (runs 40479740192 and 40481870851), deployed in two steps per region, with live checks passing in both regions.

@mmabrouk
mmabrouk merged commit 6c560ff into main Oct 27, 2026
91 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant