PATTERN Cited by 1 source
Human-gated tool invocation¶
Problem: Some tool calls are neither clearly within scope (safe to auto-allow) nor clearly out of scope (safe to auto-deny). They're sensitive for this context — the user probably wants them, but confirmation prevents damage if the call was injected.
Pattern: Introduce an ASK verdict between ALLOW and DENY. When the policy engine cannot confidently classify a tool call as in-scope or out-of-scope, it pauses execution and surfaces the pending action to a human for explicit approval before proceeding.
Shape¶
Tool call → Policy engine → ASK verdict
│
▼
┌─────────────────┐
│ Human approval │
│ (approve/reject)│
└────────┬────────┘
│
┌─────────────┴─────────────┐
▼ ▼
Proceed Block action
Example¶
In a data-quality session, update_dashboard is the user's legitimate
request but involves a write operation. The intent policy classifies it
as ASK: pause, show the human what's about to happen, and proceed only
on approval. Meanwhile grant_table_access (injected via data) gets DENY
(hard block), and query_table gets ALLOW (no pause needed).
Design considerations¶
- ASK must be synchronous and blocking — the agent cannot proceed with the gated action until approval arrives.
- The approval surface must show the specific action and arguments, not just "the agent wants to do something."
- Under deny-wins composition, if another policy DENYs the same call, the ASK is moot — denial takes precedence.
Seen in¶
- sources/2026-07-23-databricks-intent-based-authorization-omnigent — Omnigent's three-verdict system (ALLOW / ASK / DENY) uses ASK for the dashboard-write in a quality-check session; the human approves it while the injected grant call is hard-denied.
Related¶
- patterns/intent-based-authorization — the parent pattern providing the three-verdict framework
- patterns/human-in-the-loop-quality-sampling — human oversight for quality (different motivation but similar mechanism)
- systems/omnigent — reference implementation