release: 0.116.1#1729
Open
stainless-app[bot] wants to merge 7 commits into
Open
Conversation
Contributor
Author
|
🧪 Testing To try out this version of the SDK: Expires at: Sat, 08 Aug 2026 19:16:47 GMT |
5d80aad to
4af97c0
Compare
…als via SecretStr
4af97c0 to
0ae74b6
Compare
0ae74b6 to
861317a
Compare
* Block ask-gated session tool calls until user confirmation SessionToolRunner executed every agent.tool_use event on arrival, ignoring evaluated_permission — so a tool configured with the always_ask permission policy ran before (or without) the user's approval. The runner now routes tool-call events through a confirmation gate: - evaluated_permission == "ask": the call is held until the matching user.tool_confirmation event arrives. Only an explicit "allow" releases it to the dispatch loop; "deny" resolves it without executing the tool. - evaluated_permission == "deny": never executed, even if a stray allow verdict exists for the id. - The gate fails closed against values newer than this SDK's types: an unrecognised permission is held like "ask" and an unrecognised verdict is treated as a denial — never dispatched. - Denied calls post no result event (the denial itself resolves the call server-side) but are still yielded with the new DispatchedToolCall.confirmation == "deny" so callers can observe them; ask-then-allowed calls carry confirmation == "allow". Confirmations are honored from both the live stream and the reconcile pass, so a verdict posted while the runner was disconnected still releases (or resolves) the held call. Reconcile's idle accounting treats denied calls as resolved — a denied call never gets a result event, and previously would have kept the end-turn idle countdown disarmed forever — and a held call keeps the runner alive until its verdict arrives. * fixes from claude review * address review feedback on confirmation gating - track held and in-flight gated calls on the idle clock (hold/release with a deferred arm) so a deny that resolves the last held call after an end_turn idle resumes the countdown instead of hanging the runner, and so the countdown never runs over gated work that is still dispatching - thread the releasing verdict through the dispatch queue so the yielded confirmation is the verdict that actually released the call - read evaluated_permission via getattr so the gate stays fail-closed if the field ever appears on custom tool calls - skip re-recording verdicts for answered calls during reconcile and document that _confirmations grows like _seen/_answered - share a _surface_call helper for the two result-stream send sites - document the stray-deny fail-closed behavior and add regression tests
861317a to
f6b2475
Compare
f6b2475 to
b69490c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated Release PR
0.116.1 (2026-07-09)
Full Changelog: v0.116.0...v0.116.1
Bug Fixes
Chores
This pull request is managed by Stainless's GitHub App.
The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.
For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.
🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions