Defense control

Human-in-the-Loop

How to use human approval as a risk-based oversight gate for selected AI agent actions: approval policy outside the model, informed reviewer context, exact-action binding, re-approval after change, fatigue risks and audit lineage.

By Norbert HofmannPublished: 2026-09-25Last reviewed: 2026-09-25Level: AdvancedAudience: Security Engineers, Developers, AI Engineers
Control family
Human oversight
Control type
Additional risk-based gate, governed outside the model
Core question
When does a concrete consequential action need an informed human decision, and how is that decision bound to exactly that action
Level
Advanced
Table of contents

Security Objective

Human-in-the-loop (HITL) is the control that places an informed human decision in front of selected consequential or ambiguous agent actions before they take effect. It answers three questions that no other control on this site owns: when a human decision is required, what evidence the reviewer must see to decide well, and how that decision is bound to the exact operation that will execute.

HITL is an additional gate for selected actions. It is not the base permission model. Deterministic agent authorization stays authoritative for whether a concrete action may execute at all, least privilege bounds how much authority exists, and information flow control decides whether data may move from a source to a sink. Human approval sits on top of those controls and never replaces them.

Ownership Boundaries

Who owns which decision
ControlQuestion it answersNot its job
Least privilegeHow much authority, reach and lifetime exists at allDeciding one concrete request
Agent authorizationWhether this fully resolved action may execute under deterministic policyJudging context a policy cannot express
Information flow controlWhether data with this provenance and classification may reach this sinkApproving business intent
Human-in-the-loopWhether a selected consequential action should proceed, after an informed human decisionCatching ordinary unauthorized actions or serving as the permission model

If HITL is the first place an ordinary unauthorized action gets caught, authorization is missing. Every approval request should already be a request that deterministic policy would permit on its own, which HITL then subjects to an extra judgement because of risk.

Threat Model

The threats this control addresses are the ones every agent attack article on this site converges on: an agent influenced through indirect content or tool output proposes an action that is within its authority but wrong for the task. A second class of threats targets the approval step itself.

01
ThreatInfluenced but permitted proposal

The action type and principal are allowed, but the exact recipient, target or parameters serve an injected objective.

02
ThreatMisleading review surface

Model-authored summaries, rationales or UI text describe the action more benignly than it is.

03
ThreatApproval reuse

An approval for one action is replayed for a changed, retried or different action.

04
ThreatFatigue and rubber-stamping

High volume or low signal trains reviewers to approve without reading.

05
ThreatSpoofed or out-of-band prompts

Notifications or messages that imitate a genuine approval request.

06
ThreatIneligible reviewer

The initiating user, or someone without authority for the risk class, approves their own consequential action.

Trust Model

Authoritative metadata and variable content stay separate all the way through the review. The reviewer's decision is an authenticated system event. The proposal it applies to remains variable content.

Approval flow with metadata and content kept distinct
SystemInitiating principal metadata
Variable trustUser task / content
SystemAgent / planner processing
Variable trustConcrete action proposal
SystemDeterministic authorization and risk classification
SystemApproval-required decision by policy
SystemAuthoritative review metadata
Variable trustReviewer-visible proposal content and rationale
SystemAuthenticated human decision event
SystemRevalidation and exact-action binding
SystemScoped execution under enforcement
Variable trustEffect / result

An authenticated initiating user does not turn their task content into system content. The model's plan, proposal and rationale are variable. Identity, policy decision, risk tier and provenance labels come from authoritative stores. The human decision is recorded as an authenticated event, but approving a message body, a diff or a summary does not relabel that payload as trusted. Execution stays behind deterministic enforcement.

Stale approval after a material change
SystemApproval bound to action version 1
Variable trustLater step rewrites a parameter
SystemBinding check fails before execution
SystemDenied or returned for new review

Approval Is Not Authorization

Authorization runs before the approval request and runs again after approval, at execution time. If policy denies, the action does not execute, no matter who approved it. Approval can therefore narrow an outcome but never broaden it.

Approval Is Not Capability

Clicking approve must not mint a credential, add a scope or unlock a tool the agent did not already hold under least privilege. If an action needs authority the agent lacks, that is a provisioning question with its own review, not something an approval dialog resolves. The execution step uses the same bounded identity and credentials it would have used without the approval.

Who Decides That Approval Is Required

The model must not decide whether an action needs approval. A model that can say "this is low risk, no review needed" gives an injected instruction the same power. The requirement is resolved by deterministic policy outside the model, from the resolved action, its parameters, the principal, the data classification and relevant state.

Risk Tiering Criteria

There is no universal list of actions that require approval. Each deployment defines its own tiers. Categories that are frequently placed in a higher tier include the following, as examples only:

01
ExampleIrreversible or destructive

Deletion, overwrite, revocation without restore path.

02
ExampleExternally visible

Sending messages, publishing, posting to third parties.

03
ExampleFinancial

Payments, refunds, purchases, pricing changes above a threshold.

04
ExampleIdentity and permissions

Creating accounts, changing roles, granting access.

05
ExampleDeployment and code execution

Releasing changes, running code outside a sandbox.

06
ExampleSensitive data movement

Exporting or sharing classified or personal data.

Microsoft's Agent Framework safety guidance, as vendor guidance, similarly recommends gating high-risk tools and names side effects and data sensitivity among the considerations. Tiers should be driven by consequence and reversibility, not by tool name alone.

Exact-Action Binding

An approval is only meaningful if it applies to the fully resolved operation. Approving the intent "send the report" does not approve a specific recipient, attachment and body.

What the approval binds to

  • Action and tool
  • Resource and target
  • Destination or recipient, resolved
  • Parameters, including amount and scope where relevant
  • Data classification and provenance of the payload
  • Expected side effects and reversibility
  • Policy version and risk tier applied
  • Material state the decision depended on, such as current balance, record version or recipient domain

How that binding is represented varies: a canonical action digest, a server-held action record or a versioned request object are all possible. The property matters more than the mechanism: the executor must be able to verify that what it runs is what was approved.

Material Change, TOCTOU and Re-Approval

Between approval and execution the world can change. A later planning step can rewrite a parameter, a recipient alias can resolve differently, a file can be replaced, or a balance can drop. This is a time-of-check to time-of-use (TOCTOU) problem. Any material change before execution invalidates the approval and requires re-evaluation by policy and, if still required, a new human decision.

What counts as material is part of the policy, not something the model decides. A useful default: any change to a bound field is material, and any change to state the decision depended on is material.

Informed Reviewer Context

A reviewer can only be as good as the evidence in front of them. The review surface should show two clearly separated groups.

Two groups of reviewer evidence
GroupContentsTrust
Authoritative metadataInitiating principal, agent identity, policy decision, risk tier, data classification and provenance labels, policy versionSystem, from authoritative stores
Proposal contentAction, parameters, resolved resource and destination, expected side effects, reversibility, diff or previewVariable, shown exactly as it will execute
Model rationaleWhy the agent says it wants to do thisVariable, an untrusted explanation, not evidence

The task objective as stated by the initiating principal should also be visible, so the reviewer can compare what was asked with what is proposed.

Preview and Diff

Where it is meaningful, show the effect rather than a description of it: the exact message and recipients, a field-level diff of a record, the files a deletion will remove. A rendered preview must be generated from the bound action itself, not from a model-written summary of it. Where a preview cannot represent the effect faithfully, for example a large batch operation, say so and show scope counts and samples instead of an implied completeness.

Reviewer Identity, Eligibility and Separation of Duties

Approvals should come from an authenticated reviewer whose eligibility for the risk class is resolved by policy. For some classes, such as financial transfers or permission grants, separation of duties is appropriate: the initiating principal should not be the only approver of their own consequential action. Delegated approval authority should be explicit, bounded and recorded, not inferred from job title or chat context.

Decision Options Beyond Approve and Deny

01
DecisionApprove

The exact bound action may proceed to revalidation and execution.

02
DecisionReject

The action does not execute; the agent receives a denial, not a hint to rephrase.

03
DecisionModify

The reviewer edits parameters. This creates a new proposal that goes through authorization and binding again.

04
DecisionEscalate

The decision moves to a reviewer with higher eligibility or domain knowledge.

Approval Fatigue, Rubber-Stamping and Batching

An approval step that fires on everything trains people to click through it. Fatigue is a design outcome, not a user failing. Keep review volume proportional to risk, remove approvals for actions that deterministic controls already handle safely, and avoid batching unrelated consequential actions into one decision. Where batching is unavoidable, a batch approval should still bind to an enumerated, fixed set of actions.

Deceptive Review Surfaces

Review-surface risks

  • Model-authored titles, summaries or button text that frame the action as routine
  • Summaries that omit a recipient, attachment or side effect present in the bound action
  • Dark patterns such as pre-selected approval or hidden reject options
  • Spoofed notifications or messages imitating a genuine approval request
  • Rationale text styled like system text

Mitigations are structural: render system fields from authoritative data in fixed positions, visually separate variable content, deliver approval requests through an authenticated channel, and never let the model control the controls.

Multi-Step and Multi-Agent Workflows

Approving action A does not approve B or C. Approving a delegation from agent A to agent B does not approve B delegating onward to C. Each materially distinct action or handoff is evaluated separately against policy, and each one that the risk tier covers gets its own gate. The multi-agent and AI agent articles describe why chains amplify influence; HITL must not become the step that collapses a chain into one blanket yes.

Retries, Loops and Approval Lifetime

Conceptually an approval should be single-use, bound to one task and short-lived. A retry after a failure, a loop iteration or a resumed workflow must not silently replay an earlier approval. Whether this is enforced by one-time identifiers, expiry, or server-side state is an implementation choice; the requirement is that the executor can tell a fresh approval from a stale one.

Timeouts and Non-Response

For consequential actions, no answer means no. A request that times out, is abandoned or cannot be delivered should leave the action unexecuted and the task in a clear state, never fall through to execution by default.

Cancellation and Revocation Before Execution

An approved action may still need to stop. A reviewer, an operator or an automated signal should be able to cancel a pending approved action before it executes, for example when new risk is discovered or relevant state changes. Cancellation should be recorded like any other decision.

Break-Glass and Avoiding a Bottleneck

Emergency paths exist, and they should be separately governed: distinct eligibility, narrow scope, time limits and full audit. They are not a way around a policy deny through the normal approval flow. At the same time, HITL should not become a universal bottleneck. If everything needs approval, the control degrades into ritual. Invest first in authorization, least privilege and information flow so that fewer actions need a human at all.

Human Review Is Fallible

People miss details, trust fluent explanations and approve under time pressure. That is why deterministic controls remain authoritative before and after the human decision. HITL adds judgement where policy cannot express context; it does not make the system safe on its own.

Audit Lineage

01
FieldWho

Authenticated reviewer identity and eligibility basis.

02
FieldWhat

The bound action identifier or digest, where available.

03
FieldWhen

Request, decision and execution times.

04
FieldUnder which policy

Policy version and risk tier.

05
FieldBefore and after

Relevant state before execution and the resulting state.

06
FieldOutcome

Execution result, or the reason for rejection, cancellation or invalidation.

Worked Synthetic Scenario

All data here is synthetic. A support operations agent processes a ticket whose attached text contains an injected instruction. It proposes emailing a customer data export to an external address. Deterministic authorization allows the send-mail action type for this principal in principle, but policy classifies an external send with a personal-data attachment as requiring human approval.

01Proposal (variable){ action: "send_mail", to: "export-review@example.net", attachment: "customers-q3.csv", body: "<model-written text>" }
02Authorization gate

Action type and principal permitted; recipient domain is external; attachment classified as personal data. Policy result: allowed only with approval, risk tier high.

03Review surface

Authoritative fields: initiating principal, ticket ID, risk tier, data class 'personal', policy version. Separate variable fields: exact recipient, attachment name and row count, body, and the model rationale, marked as untrusted explanation.

04Human decision

The reviewer sees that the ticket asked for a status update, not an export, and rejects. Alternatively they modify the action to a status reply to the ticket's verified customer address without attachment, which becomes a new proposal.

05Effect

Rejected: nothing is sent. Modified: the new proposal passes authorization at a lower tier and is sent. The export never leaves.

Benign case: an agent proposes a refund of a synthetic 40 units to the verified original payment method on a verified order. Policy allows it with approval above a threshold. The reviewer approves the bound action. Before execution the executor confirms the order state and amount are unchanged and authorization still permits it, then executes under the agent's normal scoped credentials.

Which gate did what
GateRejected caseBenign case
AuthorizationAllowed the type, required approvalAllowed with approval, re-checked at execution
Human-in-the-loopRejected or modifiedApproved the exact action
Binding / revalidationNot reachedConfirmed unchanged state
Least privilegeBounded the credentials usedBounded the credentials used

Testing and Metrics

Measure each property on its own, with an explicit denominator and no composite score.

Human-in-the-loop measures with explicit denominators
MeasureNumeratorDenominator
Approval-policy coverageAction classes with a defined approval ruleAction classes that policy designates as requiring HITL
Required-approval enforcement coverageRequired-approval actions that could not execute without a valid approvalRequired-approval actions tested
High-risk proposal containment rateUnsafe proposals rejected, modified or contained before effectUnsafe proposals in controlled tests
Unsafe approval rateUnsafe proposals approvedUnsafe proposals presented to reviewers in controlled tests
Reject / modify / escalate ratesDecisions of each typeAll reviewer decisions
Stale-approval invalidation coverageStale or replayed approvals rejected at executionStale or replayed approvals tested
Re-approval coverage after material changeMaterially changed actions sent back to policy and reviewMaterially changed actions tested
Approval latency distributionTime from request to decision, by percentileAll decided requests
False-deny rateExpected-allow actions rejected or blockedExpected-allow actions submitted
Abandonment / timeout rateRequests with no decision within the windowAll approval requests
Reviewer-context completenessRequests showing every required fieldAll approval requests sampled
Audit-lineage completenessDecisions with a complete linked recordAll decisions sampled
Benign task utilityBenign tasks completed successfullyBenign tasks attempted, measured separately

To practice these properties in a controlled setting, the Human Approval lab is a deterministic simulation of exact-action binding, reviewer evidence, stale approvals after material change, model-authored approval claims and fixed batch review.

Implementation Checklist

Before relying on human approval

  • Authorization runs before the request and again at execution
  • Approval requirement resolved by policy outside the model
  • Approval bound to the fully resolved action and material state
  • Material change invalidates approval
  • Authoritative metadata and variable content rendered separately
  • Reviewer eligibility and separation of duties defined per risk class
  • Approvals single-use, task-bound and short-lived
  • Timeouts fail safe for consequential actions
  • Break-glass separately governed and audited
  • Complete audit lineage per decision
Common failure patterns
  1. 01
    Generic confirm

    "Allow this tool?" with no parameters shown.

  2. 02
    Model decides tier

    The agent labels its own action as low risk.

  3. 03
    Approval override

    Approval executes past a policy deny.

  4. 04
    Replay

    A retry reuses an earlier approval.

  5. 05
    Chain approval

    One approval covers every later step.

Standards and Sources

Standards and guidance referenced

NIST
AI RMF 1.0 GOVERN 3.2: roles and responsibilities for human-AI configurations and oversight, AI RMF 1.0 MAP 3.5: processes for human oversight are defined, assessed and documented
OWASP
LLM03:2026 Excessive Agency, Top 10 for Agentic Applications 2026 (neighbouring risk framework)
Microsoft
Agent Framework: Agent Safety and tool approval (vendor framework guidance), AI agent shared responsibility model (vendor guidance), Cloud Security Benchmark v2 AI-5 Ensure human-in-the-loop (vendor benchmark)

On source use: NIST AI RMF is cited for the governance principle that human oversight roles and processes are defined and documented; it does not define a specific HITL control, and none is implied. OWASP entries are risk frameworks, not HITL standards. Microsoft pages are vendor guidance: the Agent Framework safety page recommends approval for high-risk tools, and MCSB v2 AI-5 recommends human review and approval for critical actions; product-specific mechanisms are not generalized here.

Frequently Asked Questions

Is a confirmation dialog enough?

Only if it shows the exact bound action and authoritative metadata, and only for actions policy selects. A generic "allow?" prompt is a ritual, not a control.

Can the model decide when to ask for approval?

It may add a review, but it must never remove one. The requirement comes from deterministic policy outside the model.

Can a human approval override a policy deny?

No. Exceptions go through a separately governed break-glass path with its own eligibility and audit.

Is batch approval safe?

Only for an enumerated, fixed set of actions with a meaningful preview. Batching unrelated consequential actions invites rubber-stamping.

What happens if nobody responds?

For consequential actions the request times out and the action does not execute.

Does approving a plan cover the later steps?

No. Each materially distinct action or handoff is evaluated on its own, and each covered by the risk tier needs its own decision.

Who should be allowed to approve?

Authenticated reviewers whose eligibility for the risk class is resolved by policy, with separation of duties where the class warrants it.

Is the model's rationale evidence?

No. It is variable content, useful context at best, and it can be shaped by the same injection that shaped the action.

How does this relate to agent authorization?

Agent authorization decides whether an action may execute at all and remains authoritative. HITL adds a human judgement for selected permitted actions.

How do we avoid HITL becoming a bottleneck?

Reduce what needs review through least privilege, authorization and information flow control, tier by consequence, and measure latency and false denies alongside safety.

References

  1. AI RMF Core: GOVERN 3.2 and MAP 3.5NIST AIRC · StandardReviewed 2026-09-25
  2. LLM03:2026 Excessive Agency, OWASP Top 10 for LLM Applications 2026OWASP GenAI Security Project · GuidanceReviewed 2026-09-25
  3. OWASP Top 10 for Agentic Applications 2026OWASP GenAI Security Project · GuidanceReviewed 2026-09-25
  4. Agent Safety, Microsoft Agent FrameworkMicrosoft Learn · Technical documentationReviewed 2026-09-25
  5. Using function tools with human in the loop approvalsMicrosoft Learn · Technical documentationReviewed 2026-09-25
  6. AI agent shared responsibility modelMicrosoft Learn · GuidanceReviewed 2026-09-25
  7. Microsoft cloud security benchmark v2, Artificial Intelligence Security (AI-5)Microsoft Learn · GuidanceReviewed 2026-09-25