This prompt is designed for platform engineers who need to insert a human approval gate before an AI agent executes a high-risk action. It forces the model to produce a structured, machine-readable approval request that clearly defines what action is proposed, what conditions block automatic execution, and what irreversible consequences are at stake. Use this when your agent workflow reaches a step that requires explicit human sign-off before proceeding, such as deleting production data, making a financial commitment, or changing a security policy. The output is designed to be consumed by an approval queue system, not just read by a human in a chat window.
Prompt
Human Approval Request Prompt with Blocking Conditions

When to Use This Prompt
Defines the job-to-be-done, ideal user, required context, and boundaries for the Human Approval Request Prompt with Blocking Conditions.
The ideal user is an engineering lead or platform engineer building agentic workflows where the cost of an incorrect autonomous action is high. You need this prompt when your system cannot programmatically determine safety—for example, when the action involves a novel configuration change, a spend above a dynamic threshold, or a user request that falls outside predefined policy boundaries. The prompt requires you to supply the proposed action details, the agent's reasoning, the relevant policy or context, and the risk level. It then generates a blocking approval request that downstream systems can parse, route, and log. Do not use this prompt for low-risk, reversible, or pre-authorized actions where a human gate adds latency without reducing material risk.
Before using this prompt, ensure your application layer can handle the structured output: parse the JSON, route the approval request to the correct human or team, enforce a timeout, and act on the approval or rejection signal. The prompt itself does not implement the gate—it produces the request payload. You must build the queue, the notification, and the timeout logic. Also, avoid using this prompt in real-time user-facing chat where a blocking request would freeze the conversation; instead, design an asynchronous handoff. The next section provides the copy-ready template you can adapt to your specific risk taxonomy and output schema.
Use Case Fit
Where the Human Approval Request Prompt with Blocking Conditions works and where it does not. Use these cards to decide if this prompt fits your workflow before integrating it into an agent harness.
Good Fit: Irreversible Write Operations
Use when: An agent is about to execute a destructive or irreversible action such as deleting a database record, sending a financial transaction, or modifying a production configuration. Guardrail: The prompt must produce a blocking condition that prevents execution until a human provides explicit confirmation. Structure the output to include the exact action, its scope, and the rollback difficulty.
Bad Fit: Low-Stakes Read-Only Queries
Avoid when: The agent is performing a simple data lookup, generating a draft, or summarizing content where no irreversible state change occurs. Guardrail: Adding a blocking approval step here creates friction without reducing risk. Reserve this prompt for actions that have a material blast radius if executed incorrectly.
Required Inputs: Action Context & Risk Surface
What to watch: The prompt will fail silently if it receives only a vague action description like 'update the record.' Guardrail: Ensure the input includes the specific function name, full payload, affected system, and a list of entities that will be modified. The prompt template should have explicit placeholders for [ACTION_DETAIL], [AFFECTED_SYSTEMS], and [IRREVERSIBLE_FLAG].
Operational Risk: Approval Fatigue
What to watch: If every minor agent action triggers this prompt, human reviewers will start blindly approving requests, defeating the purpose of the blocking condition. Guardrail: Combine this prompt with a risk-score threshold. Only trigger the approval request when the computed risk score exceeds a defined boundary, keeping low-risk actions autonomous.
Operational Risk: Missing Blocking Conditions
What to watch: The model may generate a polite approval request but fail to include the specific technical conditions that must be met before proceeding, leaving the gate open. Guardrail: Validate the output against a strict schema that requires a non-empty blocking_conditions array. If the array is empty or missing, the system must treat it as a hard stop and retry or escalate.
Bad Fit: Real-Time User Interactions
Avoid when: A user is waiting synchronously for a response in a chat interface, and the approval requires an out-of-band review by a different person. Guardrail: For synchronous user-facing flows, use a pre-action summary and confirmation prompt instead. Reserve this blocking-condition prompt for asynchronous agent workflows where a review queue exists.
Copy-Ready Prompt Template
A reusable prompt that generates a structured approval request with blocking conditions, action scope, and irreversible consequence flags for human-in-the-loop workflows.
This prompt template is designed to be placed directly into your agent's system prompt or used as a step instruction before any high-risk action. It forces the model to pause, assess the proposed action against a set of defined blocking conditions, and package a complete request for a human reviewer. The output is a structured object, not a conversational message, making it suitable for programmatic parsing by an orchestration layer that will halt execution until a signed approval is received.
textYou are an approval gate agent. Your sole task is to evaluate a proposed action and generate a structured approval request for a human reviewer. You do not execute the action. You do not decide if the action is safe. You only prepare the review packet. ## Inputs - [PROPOSED_ACTION]: A description of the action the system wants to take. - [ACTION_CONTEXT]: The surrounding context, including user request, relevant data, and system state. - [BLOCKING_CONDITIONS]: A list of conditions that, if met, must be explicitly acknowledged by the human reviewer. Example: 'Action modifies production data', 'Action incurs a cost > $100'. - [IRREVERSIBLE_FLAGS]: A list of flags indicating if the action is permanent, destructive, or has a wide blast radius. Example: 'Deletes data permanently', 'Sends email to all users'. - [REQUIRED_APPROVAL_ROLES]: A list of roles or individuals who must approve this action. ## Task 1. Analyze [PROPOSED_ACTION] against [BLOCKING_CONDITIONS] and [IRREVERSIBLE_FLAGS]. 2. Generate a JSON object conforming to the [OUTPUT_SCHEMA] below. 3. In the `summary_for_reviewer` field, write a concise, neutral description of the action, its context, and its implications. Do not advocate for or against the action. 4. In the `blocking_conditions_triggered` field, list only the conditions from [BLOCKING_CONDITIONS] that apply to this action. For each, include a one-sentence explanation of why it is triggered. 5. In the `irreversible_consequences` field, list the flags from [IRREVERSIBLE_FLAGS] that apply. 6. If no blocking conditions are triggered, set `approval_required` to `false` and provide an empty list for `blocking_conditions_triggered`. The action will still be logged. ## Output Schema ```json { "approval_required": boolean, "action_id": "string, a unique identifier for this request", "summary_for_reviewer": "string, a plain-language summary of the proposed action and its context", "action_scope": { "target_system": "string, the system or service affected", "target_resource": "string, the specific resource, table, or endpoint", "estimated_impact": "string, a qualitative description of the blast radius" }, "blocking_conditions_triggered": [ { "condition": "string, the exact condition from [BLOCKING_CONDITIONS]", "reason": "string, a one-sentence explanation of why it applies" } ], "irreversible_consequences": ["string, from [IRREVERSIBLE_FLAGS]"], "required_approvers": ["string, from [REQUIRED_APPROVAL_ROLES]"], "timestamp": "string, ISO 8601 format" }
Constraints
- Do not execute the action.
- Do not add warnings or recommendations beyond the structured fields.
- If the action is unclear, set
approval_requiredtotrueand note the ambiguity in the summary. - Output only the JSON object. No markdown fences, no surrounding text.
To adapt this template, replace the square-bracket placeholders with values injected by your application logic. The [BLOCKING_CONDITIONS] and [IRREVERSIBLE_FLAGS] should be defined as configuration, not hardcoded in the prompt, allowing operations teams to update policy without changing code. The [OUTPUT_SCHEMA] is included inline for clarity, but in production you should enforce the schema in your application layer using a JSON Schema validator after the model responds. If the output fails validation, retry once with the validation error included as additional context; if it fails again, escalate the raw output to a human operator for manual triage.
Prompt Variables
Placeholders required to generate a structured human approval request with blocking conditions. Each variable must be populated before the prompt is assembled to ensure the approval gate is enforceable and auditable.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[ACTION_DESCRIPTION] | The specific, irreversible action the AI intends to take | DELETE production database records WHERE status = 'inactive' AND last_modified < '2023-01-01' | Must be a concrete, executable description. Reject if vague or missing scope boundaries. Parse check: contains verb + target + scope. |
[ACTION_SCOPE] | The blast radius: affected systems, data, users, or configurations | System: prod-db-primary. Records: ~12,400. Users affected: 0 direct, but downstream analytics pipeline depends on these records. | Must enumerate affected resources explicitly. Null allowed only if scope is truly unknown, but then require [UNCERTAINTY_DISCLOSURE]. Schema check: list of named resources with counts or estimates. |
[BLOCKING_CONDITIONS] | Conditions that must be true before execution is permitted |
| Each condition must be verifiable and binary. Reject conditions that are subjective or unmeasurable. Parse check: numbered list with pass/fail criteria per item. |
[IRREVERSIBILITY_FLAG] | Whether the action can be undone after execution | Must be true or false. If true, require explicit acknowledgment language in approval request. If false, require rollback procedure reference. Schema check: boolean. | |
[EVIDENCE_REFERENCES] | Links or citations to supporting evidence for the action | Jira: PROJ-4521. Runbook: /ops/runbooks/db-cleanup.md. Approval chain: #data-eng Slack thread 2025-01-15. | Must be resolvable references, not vague mentions. Reject if URLs are broken or ticket IDs don't exist. Citation check: each reference must be traceable to source system. |
[APPROVAL_TARGET] | The role, team, or individual who must approve | role:data_owner AND team:platform_engineering | Must specify at least one approver. Support AND/OR logic for multi-stakeholder gates. Schema check: role or team identifier with optional conjunction. |
[DEADLINE_CONTEXT] | Time sensitivity and consequences of delay | Approval required within 4 hours. After 6 hours, storage costs accrue at $0.023/GB/month. No data loss risk before 72 hours. | Must include time window and consequence of missing it. Null allowed if no deadline exists. Parse check: time value + unit + consequence statement. |
[FALLBACK_INSTRUCTION] | What the system should do if approval is denied or times out | If denied: log denial reason and close task. If timeout: escalate to #ops-escalation with full context and notify on-call via PagerDuty. | Must define behavior for both denial and timeout paths. Reject if fallback is ambiguous or silent. Parse check: contains conditional branches for denial and timeout. |
Implementation Harness Notes
How to wire the Human Approval Request Prompt into an application with validation, retries, and blocking conditions.
The Human Approval Request Prompt is not a standalone artifact; it is a gate in a larger agent workflow. The application layer must call this prompt before executing any action flagged as high-risk, irreversible, or regulated. The prompt's output should be treated as a structured approval request object, not free text. The calling system must parse the output, validate its schema, and then enforce a blocking wait state until a human reviewer provides an explicit decision. Do not proceed on timeout, default, or null.
Wire the prompt into a pre-action hook. Before the agent calls a tool like DELETE_RECORD, PROCESS_REFUND, or UPDATE_CONFIG, the orchestrator should invoke this prompt with the proposed action, its scope, and the relevant context. The prompt returns a JSON object containing approval_required (boolean), blocking_conditions (list of strings), action_scope (object), and irreversible_consequences (list of strings). The application must validate this JSON against a strict schema. If approval_required is true, the system must serialize the entire object into a human-readable ticket, push it to a review queue, and block the parent workflow. Implement a retry loop for malformed JSON: if the output fails schema validation, re-prompt the model once with the validation error included. If it fails again, escalate to an on-call engineer with the raw output attached.
Model choice matters. Use a model with strong instruction-following and structured output capabilities, such as GPT-4o or Claude 3.5 Sonnet, with response_format set to json_object and the JSON Schema provided directly in the API call. For high-compliance environments, log the full prompt, the raw model response, and the validated output to an append-only audit store before any approval request is surfaced to a reviewer. Never allow the model to execute the action itself. The prompt's job is to produce the request; the human's job is to decide. The system's job is to enforce the gap between them.
Expected Output Contract
Validation rules and format requirements for the structured approval request object. Use this contract to build a parser that can accept or reject the model's output before surfacing it to a human reviewer.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
approval_request_id | string (UUID v4) | Must match UUID v4 regex. Reject if missing or malformed. | |
status | enum: BLOCKED | READY_FOR_REVIEW | Must be exactly BLOCKED or READY_FOR_REVIEW. Reject any other value. | |
action_summary | string (<= 280 chars) | Length must be between 10 and 280 characters. Must not be a substring of [USER_INPUT]. | |
blocking_conditions | array of objects | Array must contain at least 1 item if status is BLOCKED. Each object must have non-empty 'condition' and 'rationale' string fields. | |
blocking_conditions[].condition | string (<= 140 chars) | Must describe a specific, verifiable state that prevents action. Reject if generic (e.g., 'safety check'). | |
irreversible_consequences | array of strings | Must be an array. If empty, explicitly set to empty array []. Each string must be <= 200 chars. | |
action_scope | object | Must contain 'affected_systems' (array of strings) and 'data_mutations' (array of strings). Both must be present, even if empty. | |
approval_language | string (<= 500 chars) | Must contain a clear yes/no question directed at the reviewer. Reject if it contains markdown or HTML. |
Common Failure Modes
Approval prompts fail silently when blocking conditions are missing, approval language is vague, or the system cannot distinguish between a recommendation and a decision. These cards cover the most common production failure modes and how to prevent them before an irreversible action executes.
Missing Blocking Conditions
What to watch: The prompt generates an approval request but omits critical blocking conditions—such as dollar thresholds, environment restrictions, or required sign-offs—allowing dangerous actions to proceed without the right gates. Guardrail: Define blocking conditions as a required schema field. Validate that every approval request includes at least one concrete, testable condition before the request is surfaced to a reviewer.
Approval Language Ambiguity
What to watch: The model uses phrases like 'please confirm' or 'are you sure?' without specifying what is being approved, making it unclear whether the human is approving the analysis, the action, or the risk acceptance. Guardrail: Require a structured approval statement that names the specific action, its scope, and its irreversibility. Test with adversarial inputs that try to blur the boundary between review and authorization.
Irreversible Consequence Blindness
What to watch: The prompt fails to flag that an action is irreversible—such as data deletion, production config changes, or financial commitments—and the reviewer approves without understanding the rollback cost. Guardrail: Add a required irreversible boolean field and a rollback_plan field. If the model cannot describe a safe rollback, the approval request must escalate with a warning.
Approval Scope Creep
What to watch: A single approval request bundles multiple unrelated actions, forcing the reviewer into an all-or-nothing decision and increasing the risk of approving a dangerous sub-action buried in the batch. Guardrail: Enforce one actionable decision per approval request. If the model proposes a batch, split it into individual requests and require explicit approval for each irreversible step.
Silent Auto-Approval Loops
What to watch: The system treats a non-response, timeout, or malformed reply as implicit approval, causing actions to execute without genuine human review. Guardrail: Design the approval harness to treat timeouts and parse failures as denials. Require an explicit, schema-valid approval signal. Log every approval outcome with the reviewer identity and timestamp.
Context Starvation for Reviewers
What to watch: The approval request includes the action but omits the evidence, alternatives considered, and risk reasoning, forcing the reviewer to approve or deny with insufficient information. Guardrail: Include a structured decision_context field with evidence summary, rejected alternatives, and risk factors. Test by asking a colleague to decide based only on the approval request—if they cannot, the context is insufficient.
Evaluation Rubric
Use this rubric to test the quality of structured approval requests before deploying the prompt into a production agent workflow. Each criterion targets a specific failure mode that can cause dangerous autonomous actions or reviewer confusion.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Blocking Condition Presence | At least one explicit, non-negotiable blocking condition is stated when the action is irreversible | Approval request contains no blocking conditions or uses ambiguous language like 'be careful' | Parse output for [BLOCKING_CONDITIONS] array; assert length > 0 when [ACTION_IRREVERSIBLE] is true |
Action Scope Specificity | The exact action, target resource, and boundary are unambiguously described | Vague action descriptions such as 'update config' or 'modify records' without specifying which config or records | Check [ACTION_SCOPE] field against a schema requiring resource ID, action verb, and boundary constraint |
Irreversible Consequence Flag | A boolean flag accurately marks whether the action cannot be undone, with a one-line consequence summary | Flag is false for data deletion, financial commit, or permission revocation; or flag is true but summary is missing | Assert [IRREVERSIBLE] is boolean; if true, assert [CONSEQUENCE_SUMMARY] is non-empty string |
Approval Language Clarity | The request uses direct, unambiguous language that a non-technical reviewer can act on without interpretation | Output contains hedging phrases like 'might want to consider' or 'possibly review' instead of 'Approve' or 'Reject' | Run a regex check for required approval action verbs; assert presence of 'Approve' or 'Reject' in [APPROVAL_PROMPT] |
Required Role Specification | The specific role or authority level required to approve is named, not a generic 'admin' | Output assigns approval to 'user', 'admin', or 'someone' without role specificity | Validate [REQUIRED_APPROVER_ROLE] against an allowed role enum from the system's RBAC policy |
Evidence Attachment Completeness | All evidence referenced in the approval request is attached or linked with a content hash | Request mentions 'see attached logs' but [EVIDENCE] array is empty or links are broken | Assert [EVIDENCE] array length matches count of evidence references in [JUSTIFICATION]; validate URL format or hash presence |
Deadline and Expiry Handling | The request includes an approval deadline and states what happens if the deadline passes without action | No deadline present for time-sensitive actions, or expiry behavior is undefined | Parse [APPROVAL_DEADLINE] as ISO 8601; assert [EXPIRY_BEHAVIOR] is one of: auto-reject, escalate, or retry |
Fallback Escalation Path | A secondary approver or escalation queue is specified if the primary approver is unavailable | No fallback defined, leaving the system blocked indefinitely if primary approver does not respond | Assert [ESCALATION_CONTACT] is non-null; validate format as email, queue ID, or user ID from system context |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Start with the base approval request structure but relax strict schema enforcement. Use a simple markdown template instead of JSON output. Focus on getting the blocking conditions and consequence flags right before adding validation layers.
code## Approval Request **Action:** [ACTION_DESCRIPTION] **Blocking Conditions:** [LIST] **Irreversible:** [YES/NO] **Scope:** [SCOPE]
Watch for
- Missing blocking conditions when the action has hidden side effects
- Overly broad action descriptions that don't specify what the system will actually do
- Approval language that sounds like a notification rather than a gate

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us