Skip to content

Ask separately for confirmation#6949

Merged
DOsinga merged 11 commits intomainfrom
multi-toolcall-approval
Feb 5, 2026
Merged

Ask separately for confirmation#6949
DOsinga merged 11 commits intomainfrom
multi-toolcall-approval

Conversation

@DOsinga
Copy link
Collaborator

@DOsinga DOsinga commented Feb 4, 2026

Summary

Fixes: #2371

Copilot AI review requested due to automatic review settings February 4, 2026 15:40
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@zanesq zanesq self-requested a review February 4, 2026 17:11
@zanesq
Copy link
Collaborator

zanesq commented Feb 4, 2026

Ran it locally it works

Couple of things goose picked up that seem worth looking into


Missing deny_once handling - The Permission enum includes deny_once but the UI only offers "Deny" which maps to always_deny. Is this intentional? The old code had DENY = 'deny' which is different from always_deny.

isStreaming prop change - Changed from isStreaming?: boolean with default false to required isStreaming: boolean. Need to verify all call sites pass this prop.

findConfirmationForToolAcrossMessages defined inside render - This function is recreated on every render. Could be memoized or moved outside the component.

cancel permission - The enum includes cancel but it's not used in the UI. Is this for programmatic cancellation only?

No error handling UI - handleAction in ToolApprovalButtons calls the API but doesn't show errors to users if the call fails.

The PR removes the "Change" button that let users modify permissions after approval. Was this intentional? Users can no longer change their decision after the fact from this UI.

@DOsinga
Copy link
Collaborator Author

DOsinga commented Feb 5, 2026

Missing deny_once handling - The Permission enum includes deny_once but the UI only offers "Deny" which maps to always_deny. Is this intentional? The old code had DENY = 'deny' which is different from always_deny.

that's not true. we have allow, allow once & deny (which is deny once)

isStreaming prop change - Changed from isStreaming?: boolean with default false to required isStreaming: boolean. Need to verify all call sites pass this prop.

the compiler would have picked up on that.

findConfirmationForToolAcrossMessages defined inside render - This function is recreated on every render. Could be memoized or moved outside the component.

why does it matter that it gets recreated every time

cancel permission - The enum includes cancel but it's not used in the UI. Is this for programmatic cancellation only?

correct, but there's no change here. the enum always had cancel in there, before we were using custom strings with
all the risks involved, now we use the enum in typescript too.

No error handling UI - handleAction in ToolApprovalButtons calls the API but doesn't show errors to users if the call fails.

same as before.

The PR removes the "Change" button that let users modify permissions after approval. Was this intentional? Users can no longer change their decision after the fact from this UI.

the Change button never allowed the user to modify their permission. it was a short cut to settings. just like this confused you, I think it confuses all users, so yeah removed

Copilot AI review requested due to automatic review settings February 5, 2026 13:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 4 comments.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 5, 2026 14:04
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated no new comments.

@DOsinga DOsinga added this pull request to the merge queue Feb 5, 2026
Merged via the queue into main with commit 24b3e02 Feb 5, 2026
18 checks passed
@DOsinga DOsinga deleted the multi-toolcall-approval branch February 5, 2026 17:07
kuccello pushed a commit to kuccello/goose that referenced this pull request Feb 7, 2026
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Tyler-Hardin pushed a commit to Tyler-Hardin/goose that referenced this pull request Feb 11, 2026
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Tyler-Hardin pushed a commit to Tyler-Hardin/goose that referenced this pull request Feb 11, 2026
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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.

Feature Request: Clearer UI to associate a tool call and its approval in single step with multiple tool calls

2 participants

Comments