June 1, 2026 · 2 min read

Approval buttons that don't show you the decision

Most AI agent approval dialogs hide the data, scope, and reversibility you need to judge the action before you click approve.

Written by Matteo Gasser

The approve/deny dialog on most AI agents is not safe, because it leaves out the one thing you need: the decision itself. You get a sentence and two buttons. You do not get to see what the agent is about to read or change.

Look at what these dialogs really say. “Send email to contacts.” “Run query against the database.” “Modify file in project folder.” Each one is a single line of text with an Approve button next to a Deny button. If the query is a SELECT or a DROP TABLE, the dialog looks the same. If “contacts” means three teammates or your whole address book, the dialog looks the same. If “project folder” is a scratch directory or a deployed config, the dialog still looks the same.

So you cannot tell the cheap action from the expensive one. The dialog made them all look the same before it reached you.

People react to this in the way you would expect. By the tenth identical popup in a session, you have stopped reading. Approve is the button that lets you keep working, and nothing has broken yet, so you press it. The vendor will call that a human in the loop. But the human is clicking a button, not making a decision.

And that is the part that bothers me. An approval the user cannot judge does not add a safety check. It moves the blame. When something goes wrong, there is a log line with a name and a time on it, and the name is yours. You approved it. You just had no way to know what “it” was.

The fix is not fewer prompts or more prompts. It is approval screens that carry the decision: which records, read or write, which other systems are touched, and whether you can undo it. That takes real design work, because the agent has to keep that context instead of squeezing it into one string. Until it does, the button is a signature line, not a safeguard.