When vetoing a permission change using one of the Global, Project or Repository *PermissionGrantRequestedEvent, *PermissionModificationRequestedEvent or *PermissionRevocationRequestedEvent types, the vetoes are not displayed in the UI. Instead, all the UI shows is "Permission grant canceled", "Permission modification canceled" or "Permission revocation canceled", respectively. That's not very helpful for users when it comes to understanding why they can't do something.
Install a custom app which listens for a cancelable permission event and cancels it.
The message provided when the event was canceled is displayed in the UI.
A canned message like "Permission grant canceled" is displayed, with no details about why the operation was canceled.
The server's REST response for the operation already includes the veto messages in a "details" list, but the UI does not display them.
No workaround available.