The most common mistake in agent design is treating a valid credential as permission to act. OAuth scope answers a grant-time question: can this agent call this category of tool at all? It cannot answer the invocation-level question: should this specific call, with these arguments, run right now? That distinction is the entire reason an approval screen exists. As one engineering write-up on approval gates puts it, scope covers the action, while an approval gate covers "this specific invocation execute, with these arguments" at execution time (Scalekit on human-in-the-loop tool calling).
That matters because the Model Context Protocol explicitly frames tools as model-controlled, with "a human in the loop to grant approval" as the intended safety valve (MCP tools overview). If the human is part of the design, the screen they look at is a security control, not a courtesy dialog.
Three things make a call consequential enough to pause for:
- Irreversibility. A delete, a merge, a payment. Revoking the token afterward is forensic, not protective.
- Audit obligation. Regulated environments need a record that a named human authorized this operation at this timestamp.
- Dynamic risk context. A single-field update and a bulk update of thousands of records share the same scope but not the same risk.
Every one of those concerns is answered by what the reviewer sees at the moment of the decision. That is why the screen has to carry the arguments and the reasoning, not just a tool name and a yes button.



