Patch Changes
-
8329939: A parent agent's message to a subagent no longer answers the subagent's pending tool approval or session-limit prompt. Before, a follow-up such as
approveorcontinuesettled the prompt as if the person had answered it. Now only a person's structured answer settles it: the parent's message is delivered as an ordinary message, so a pending approval resolves asignoredand a session-limit prompt keeps waiting for the person. Thanks @devon-seitz for reporting this in #5075. -
084b2bf: When compaction runs partway through a turn, notices the framework sends again, such as the deferred tool catalog notice, now go before the turn's input instead of after the latest tool result, where the model read them as the newest message.
-
c37d279: The connection sign-in page now says "Authorization not completed" instead of "Authorization complete" when the provider redirects back with an OAuth error, such as the person declining consent. Thanks @dretanacr for reporting this in #5105.
-
4853062: Connection tool calls now fail after 5 minutes without an answer, instead of holding the turn until it is cancelled. eve cancels the request and returns a tool error the agent can report, so a tool that takes longer than 5 minutes now fails. Thanks @dretanacr for reporting this in #4977.
-
697741e: Record the input the model sent to an agent tool in eval facts, so a subagent or remote agent call in
turn.toolCallsno longer showsinput: {}andt.calledTool(name, { input })can match it. Thanks @dretanacr for reporting this in #5063. -
6447c36: Evals keep an input request pending after a
respond()that answers only some of the open requests.session.pendingInputRequestsstill lists the unanswered ones, andparked()holds (andsucceeded()fails) while the run waits on them. Thanks @elrumordelaluz for reporting this in #5157. -
3b9ceef: An expired session is no longer reported as failed when writing its final
session.completedevent fails. Before, channels such as Slack posted asession.failederror after they had already handledsession.completed. Thanks @bisak for reporting this in #5261. -
3d7eb49: A session stream request that does not report the durable tail no longer looks it up. Default opens and client reconnects now check that the session exists with one run lookup, instead of a tail lookup that on the local world opens every chunk file. Unknown and expired sessions still answer 404 and 410 before the stream starts. Thanks @KingAmo for reporting this in #5016.
-
7d653ef: MCP connections now fall back to the highest mutually supported legacy protocol version when
server/discoverreturns-32022. Thanks @zico-io for reporting this in #4406, and @bluepegasus123 for proposing the fallback. -
9b24d70: PDFs that store their pages in compressed object streams, as phone scans and
pdf-liboutput usually do, now get a per-page token estimate instead of one based on file size. A multi-megabyte scan no longer requests compaction on the first step of a session. Thanks @DLME2024 for reporting this and suggesting the fix in #5090. -
1a735c6:
git({ github })and the deprecatedcode({ github })register their authenticatedghtool at session start again, as do dynamic tools built withdefineGhToolfromeve/extensions/git/sandbox. Thanks @seahiLin for reporting this in #4986. -
653a257: Slack apps that set
onInputResponseorapprovalChannelno longer let a message typed in the thread answer an open question. Before, the typed message answered it without runningonInputResponse, and the answer was the whole<slack_message>envelope. The message now reaches the agent as a new message instead. -
e14685b: On Vercel Sandbox, aborting a
sandbox.run()orsandbox.spawn()command after it starts now kills it, andrun()rejects instead of waiting, as theabortSignaloption documents. Before, the command kept running until it exited by itself, including after a turn was cancelled. Thanks @voidhrithik for reporting this in #5301. -
64b5d06: Workflow and step modules can now use
?rawand other relative asset imports. Before,eve buildfailed withUNLOADABLE_DEPENDENCYwhen a module reachable from a workflow imported a file this way, even though the same import worked in a tool. Thanks @gmstevenson for reporting this in #5269.