Skip to main content
This event is fired when a custom agent calls requestDiscussionToolCallApproval to stop in front of a tool call and wait for a user to decide it. Plain shows that user an approval card with Approve and Deny controls. toolCallId names the call the approval gates, and it is the agent’s own id for that call rather than one Plain issues. justification is the text the agent gave, and the user reads it on the card. Requesting the approval also moves the discussion to TOOL_CALL_APPROVAL_PENDING, which is why discussion.agentStatus reads that way in the example below. Plain’s own Sidekick approvals do not produce this event. It is sent only for a discussion a custom agent drives.

Schema

View JSON Schema → Example:

Using the Webhooks SDK

You can use the @team-plain/webhooks package to parse and verify this event with full type safety: