Released 2026-11-10 · Compare with 1.0.0-rc.8
Features
- Preselect an option in a
display: "select"question by passinginitialOptionIdtoctx.ask.
Slack, Discord, Microsoft Teams, and theeve devterminal UI start with that option selected, and ACP clients receive it as the form field's default. On Slack and Discord, a Use button submits the preselected option, because those platforms send nothing when a person keeps the current selection. WheninitialOptionIdmatches none of the question'soptions,ctx.askthrows aTypeError. (#6202) executeGitHubShellnow throwsGitHubCommandInputErrorwhen a command's own input is refused, so a custom GitHub tool can tell the agent's mistakes from real failures.
Shell syntax, an invalid repository, aworkingDirectoryoutside the workspace, agh-signed-commitdirectory that is not a repository root, and a missing--body-fileused to throw a plainError, like a missing configuration or an empty Connect token. Detect the new error withisGitHubCommandInputError(error)fromeve/extensions/git/sandbox; its messages are unchanged. (#6181)- Each wait for a
ghcommand's sandbox credential lock is recorded as anagent.github.lease.waitspan, withagent.github.lease.outcomeandagent.github.lease.attempts. (#6196)
Bug Fixes
- Compaction now summarizes directly and must bring the input under half the context window on the provider's token count, so a long session compacts once instead of several times in a row.
It no longer caps old tool output first. A compaction whose result is still over the threshold on the next call skips the stage that fell short. (#6126) - A
ghcommand whose lock was taken over after 10 minutes no longer clears the next command's GitHub credential when it finishes. (#6189) - Throw a clear, non-retrying error when a
defineState()handle is read or updated inside a workflow tool's"use step"function.
A step runs outside the session that owns the state, soget()silently returnedinitial()andupdate()silently discarded its write. Code that relied on that now fails the step without a retry. Return the value from the workflow tool and update state in acall.settledhook instead; see the State docs. (#6201)