This prompt is for safety engineers and platform architects building pre-execution guardrails for high-risk tool calls. Use it when a model or agent has selected a destructive tool—such as delete, overwrite, drop, or deprovision—and you need a structured, severity-graded warning before the operation proceeds. The prompt generates warning metadata for UI rendering, audit logging, and human-in-the-loop (HITL) approval flows. It does not decide whether to proceed; it produces the warning that enables a downstream decision. The ideal user is someone integrating an AI agent into a production system where destructive actions must be reviewed, not someone building a general-purpose chatbot.
Prompt
Destructive Action Warning Generation Prompt

When to Use This Prompt
Learn when to deploy the destructive action warning prompt and when to avoid it.
This prompt assumes the tool call has already been classified as destructive by an upstream intent classifier or side-effect detector. It takes that classification as input and enriches it with irreversibility details, affected resources, recovery options, and a severity grade. In a typical implementation, you would wire this prompt into a pre-execution hook: the agent selects a tool, the guardrail system intercepts the call, classifies it as destructive, and then invokes this prompt to generate the warning payload. The resulting JSON is then rendered in a confirmation UI or written to an audit log before any execution occurs.
Do not use this prompt for read-only operations, low-risk writes, or as a standalone authorization layer. It is not a replacement for an IAM policy engine or a permission check. It is also not designed for user-facing conversational confirmation—use the Write Operation Confirmation Prompt for that. Avoid using this prompt when the destructive classification is uncertain; if the upstream classifier has low confidence, route to a human reviewer with the raw context instead of generating a potentially misleading warning. Finally, never use this prompt to generate warnings for operations that have already executed; it is a pre-execution tool only.
Use Case Fit
Where this prompt works, where it fails, and what you must provide before using it in production.
Good Fit: Pre-Execution Safety Gates
Use when: you have a tool call that has already been classified as destructive and you need a structured, severity-graded warning before execution. Guardrail: This prompt is a safety layer, not a classifier. Always pair it with a prior step that confirms the operation is destructive.
Bad Fit: Real-Time Blocking Decisions
Avoid when: latency budget is under 200ms or the warning must block execution in a synchronous path. Guardrail: Use this prompt asynchronously for audit and UI rendering. For inline blocking, use a deterministic rule engine based on the tool's declared side-effect profile.
Required Input: Tool Call Payload and Resource Map
What to watch: The prompt cannot assess blast radius without knowing which resources are affected. Guardrail: Provide the full tool call arguments, a resource inventory, and dependency metadata. Without this, the model will generate generic warnings that miss cascading effects.
Required Input: Recovery and Rollback Options
What to watch: The prompt must explain recovery options, but it cannot invent them. Guardrail: Supply a pre-authored list of recovery procedures, rollback commands, and support contacts. The model's job is to select and format the relevant options, not to fabricate recovery steps.
Operational Risk: Downplaying Irreversibility
Risk: The model may soften language around permanent data deletion to avoid alarming users, reducing the warning's effectiveness. Guardrail: Include explicit instructions to use severity-calibrated language and never use hedging words like 'might' or 'potentially' when the operation is confirmed irreversible.
Operational Risk: Warning Fatigue
Risk: If every write operation triggers a severe warning, users learn to ignore them. Guardrail: Use the severity grading output to render differentiated UI. Low-severity reversible operations should get subtle confirmations; high-severity irreversible operations should require explicit acknowledgment.
Copy-Ready Prompt Template
A production-ready prompt that generates a severity-graded warning when a destructive tool call is proposed, including irreversibility, blast radius, and recovery options.
This prompt is designed to sit in a pre-execution guardrail layer. Before a destructive tool call (such as delete, overwrite, archive, or deactivate) is allowed to execute, this prompt generates a structured warning payload. The warning is intended for both machine consumption (to block or flag the call) and human consumption (to render a confirmation UI). The prompt requires the proposed tool call details, the affected resource inventory, and a risk-level classification to produce a calibrated output. It does not make the authorization decision itself; it produces the evidence that an authorization system or human reviewer uses to decide.
textYou are a safety guardrail for a production system. Your task is to generate a structured warning for a proposed destructive tool call. You do not decide whether to proceed. You produce the warning metadata that downstream systems or human reviewers will use. ## INPUT - Proposed Tool Call: [TOOL_CALL_JSON] - Affected Resources: [AFFECTED_RESOURCES] - Risk Level: [RISK_LEVEL] (one of: LOW, MEDIUM, HIGH, CRITICAL) - User Intent Summary: [USER_INTENT] - Context: [CONTEXT] ## OUTPUT SCHEMA Return a single JSON object with these fields: - `severity`: string matching the input [RISK_LEVEL] - `irreversibility`: string explaining whether the action can be undone, how, and within what time window. If irreversible, state that explicitly. - `blast_radius`: object with: - `direct_resources`: list of resources directly modified or deleted - `dependent_resources`: list of resources that depend on the affected resources and may break - `downstream_effects`: list of systems, users, or processes impacted - `recovery_options`: list of strings describing recovery paths. If no recovery is possible, state "No recovery possible. This action is permanent." - `warning_summary`: string, one sentence suitable for a UI warning banner - `confirmation_required`: boolean, always true for HIGH or CRITICAL severity - `recommended_reviewers`: list of role strings that should approve this action ## CONSTRAINTS - Do not downplay irreversible data deletion. If data will be permanently destroyed, say so in the first sentence of `irreversibility`. - If the tool call includes a `force` or `skip_confirmation` flag set to true, increase severity by one level (LOW->MEDIUM, MEDIUM->HIGH, HIGH->CRITICAL). - If the blast radius includes resources tagged as `production`, `customer_data`, or `regulated`, severity must be at least HIGH. - Do not invent recovery options that do not exist. If no backup, snapshot, or undo mechanism is present, state that clearly. - Use plain language suitable for a non-engineering reviewer in `warning_summary`. ## EXAMPLES Input: Risk Level: HIGH Proposed Tool Call: {"tool": "delete_customer_account", "args": {"customer_id": "cust_1234", "force": false}} Affected Resources: ["customer_record:cust_1234", "billing_history:cust_1234", "support_tickets:cust_1234"] Output: { "severity": "HIGH", "irreversibility": "This action permanently deletes the customer account and all associated data. Recovery is only possible from a full database backup taken within the last 24 hours. Partial recovery of billing history may not be possible.", "blast_radius": { "direct_resources": ["customer_record:cust_1234", "billing_history:cust_1234", "support_tickets:cust_1234"], "dependent_resources": ["active_subscriptions tied to cust_1234", "analytics dashboards referencing this customer"], "downstream_effects": ["Customer loses access to all services", "Billing team loses payment history", "Support team loses ticket context"] }, "recovery_options": ["Restore from nightly backup (within 24-hour window)", "Recreate account manually (billing history will be lost)"], "warning_summary": "This action permanently deletes the customer account cust_1234 and all associated billing and support data.", "confirmation_required": true, "recommended_reviewers": ["account_manager", "compliance_officer"] } Now generate the warning for the provided input.
To adapt this prompt, replace the square-bracket placeholders with live data from your tool execution pipeline. [TOOL_CALL_JSON] should be the serialized tool call object your model or agent produced. [AFFECTED_RESOURCES] should come from your resource inventory or dependency graph, not from the model's guess. [RISK_LEVEL] should be assigned by a prior classification step, not by this prompt. If you do not have a resource inventory, add a retrieval step before this prompt to look up dependencies. The examples section is critical for calibration; add at least two more examples covering MEDIUM and CRITICAL severity cases with your actual tool names and resource types. Test the prompt against edge cases where the blast radius is empty, where recovery options are null, and where the tool call includes a force flag. Validate the output JSON against the schema before rendering any UI or making an authorization decision.
Prompt Variables
Required inputs for the Destructive Action Warning Generation Prompt. Each placeholder must be populated before the prompt is sent. Validation notes describe how to verify the input is safe and complete before generation.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[TOOL_CALL_PAYLOAD] | The full tool call object that triggered the destructive action detection, including tool name and all arguments | {"tool": "delete_customer_records", "arguments": {"customer_ids": ["CUST-1234"], "hard_delete": true}} | Schema check: must be valid JSON with tool and arguments fields. Reject if tool name is missing or arguments are empty |
[TOOL_DESCRIPTION] | The tool's registered description and parameter schema from the tool registry or API spec | Delete customer records permanently. Parameters: customer_ids (string[], required), hard_delete (boolean, default false) | Schema check: must include description and parameter definitions. Reject if description is empty or parameters are undocumented |
[AFFECTED_RESOURCES] | A structured inventory of resources that will be modified or deleted, including resource types, identifiers, and counts | {"resource_type": "customer_record", "identifiers": ["CUST-1234"], "count": 1, "cascade_targets": ["orders", "invoices"]} | Schema check: must include resource_type and count. Reject if count is zero or identifiers list is empty. Null allowed for cascade_targets |
[RECOVERY_OPTIONS] | A list of available recovery mechanisms, including backup availability, undo procedures, and time windows for reversal | {"backup_available": true, "backup_age_hours": 4, "undo_procedure": "restore_from_snapshot", "reversal_window_minutes": 60} | Schema check: must include backup_available as boolean. Reject if backup_available is true but undo_procedure is null. Null allowed for reversal_window_minutes if irreversible |
[USER_INTENT_SUMMARY] | A one-sentence summary of what the user asked for, extracted from the conversation context before the tool call was proposed | User requested permanent deletion of customer CUST-1234 and all associated records | Parse check: must be a non-empty string between 10 and 500 characters. Reject if summary contradicts the tool call payload or describes a read-only operation |
[IRREVERSIBILITY_FLAGS] | A map of boolean flags indicating which aspects of the operation are irreversible, such as data deletion, audit trail removal, or cascade effects | {"data_deletion_irreversible": true, "audit_trail_preserved": false, "cascade_effects_reversible": false} | Schema check: must be a JSON object with boolean values. Reject if all values are false but tool is classified as destructive. At least one flag must be true for destructive tools |
[CONTEXT_SOURCE] | The origin of the tool call request, such as user chat, automated workflow, API trigger, or scheduled job | user_chat | Enum check: must be one of user_chat, automated_workflow, api_trigger, scheduled_job, admin_console. Reject if value is not in allowed enum. Different sources may require different warning severity |
[SEVERITY_THRESHOLD] | The minimum severity level that triggers a warning, used to suppress warnings for low-risk write operations | medium | Enum check: must be one of low, medium, high, critical. Reject if threshold is critical when operation is irreversible. Default to medium if not specified |
Implementation Harness Notes
How to wire the destructive action warning prompt into a production tool-call pipeline with validation, logging, and human review gates.
This prompt is designed to sit directly in the pre-execution path of any tool call classified as destructive. It should not be used in isolation or as a post-hoc audit step. The ideal integration point is inside a tool-call guard service that intercepts function calls after the model has selected a tool and constructed arguments, but before the call is dispatched to the execution layer. The guard service receives the proposed tool call, the user's session context, and the tool's declared side-effect profile, then invokes this prompt to generate a structured warning payload. The warning is returned to the calling application, which must render it to the user and collect explicit confirmation before proceeding.
The harness must enforce a hard block on execution until a signed confirmation token is received. A common implementation pattern uses a state machine with three states: PENDING_WARNING, AWAITING_CONFIRMATION, and EXECUTING. When the guard service generates a warning, the tool call transitions to AWAITING_CONFIRMATION and the warning payload is sent to the frontend. The frontend renders the severity level, affected resources, irreversibility flag, and recovery options from the structured output. The user's confirmation action must include a non-replayable token (e.g., a UUID tied to the specific tool call) that the execution layer validates before proceeding. If the user rejects or the token expires, the tool call is discarded and an audit record is written. This prevents replay attacks where a stale confirmation is reused for a different destructive operation.
Validation and retry logic is critical because the prompt output directly controls a safety gate. Implement a JSON schema validator that checks for the required fields: severity, irreversible, affected_resources, recovery_options, and warning_text. If validation fails, retry the prompt once with the validation error appended to the [CONSTRAINTS] block. If the second attempt also fails, escalate to a human reviewer and block execution. Log every warning generation attempt, including the raw prompt, the model response, validation results, and the final disposition (confirmed, rejected, escalated). These logs form the audit trail for compliance reviews. For model choice, prefer a fast, deterministic model with strong instruction-following (e.g., Claude 3.5 Sonnet or GPT-4o) rather than a smaller model that might downplay severity. The cost of a wrong warning is a destructive action without adequate user understanding; the latency cost of a larger model is acceptable in this blocking path.
Common integration mistakes to avoid: (1) generating the warning but not blocking execution, which turns a safety guard into a notification; (2) allowing the model to decide whether to show the warning, which creates a single point of failure where the model can bypass its own guard; (3) using the same prompt for read-only operations, which trains users to ignore warnings; and (4) failing to include the specific resource identifiers and blast radius in the warning, which produces generic messages that users dismiss. Always include the actual resource names, counts, and downstream dependencies from the tool call arguments in the [CONTEXT] block. If the tool call targets DELETE /projects/1234, the warning must say 'project 1234' not 'a project'. Finally, pair this prompt with the Side-Effect Detection Prompt to ensure the tool's declared side-effect profile matches its actual behavior before trusting the classification.
Expected Output Contract
Fields, types, and validation rules for the structured warning metadata produced by the Destructive Action Warning Generation Prompt. Use this contract to validate model output before rendering warnings in a UI or logging to an audit system.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
warning_id | string (UUID v4) | Must parse as valid UUID v4; reject if missing or malformed | |
severity | enum: CRITICAL | HIGH | MEDIUM | LOW | Must match one of the four enum values exactly; reject case-insensitive variants unless normalized upstream | |
irreversibility | enum: IRREVERSIBLE | PARTIALLY_REVERSIBLE | REVERSIBLE | UNKNOWN | Must match enum; if UNKNOWN, require human review flag to be true | |
affected_resources | array of strings | Must be non-empty array; each string must be non-blank; reject if empty array or contains only whitespace | |
blast_radius_description | string (1-500 chars) | Length must be between 1 and 500 characters; reject if empty or exceeds limit | |
recovery_options | array of objects with 'step' (string) and 'feasibility' (enum: HIGH | MEDIUM | LOW | NONE) | Must be array; if irreversibility is IRREVERSIBLE, at least one entry must have feasibility NONE; reject if missing when irreversibility is not REVERSIBLE | |
requires_human_approval | boolean | Must be true if severity is CRITICAL or irreversibility is IRREVERSIBLE; reject if false under those conditions | |
warning_message | string (50-1000 chars) | Length must be between 50 and 1000 characters; must contain the word 'cannot be undone' or 'irreversible' if irreversibility is IRREVERSIBLE; reject if missing required language |
Common Failure Modes
What breaks first when generating destructive action warnings and how to guard against it.
Severity Downplaying
What to watch: The model classifies irreversible data deletion as 'medium' or 'low' severity, producing warnings that users ignore. This happens when the prompt lacks explicit severity criteria tied to recovery difficulty. Guardrail: Provide a severity rubric with concrete anchors—'high' must include any operation where rollback is impossible or requires backup restoration. Validate severity labels against a golden set of known destructive operations before deployment.
Missing Affected Resources
What to watch: The warning describes the action generically but omits the specific resources, scopes, or downstream dependencies that will be impacted. Users approve destruction without understanding blast radius. Guardrail: Require the prompt to extract and enumerate affected resources from the tool call arguments. Add a post-generation check that rejects warnings without at least one concrete resource identifier.
Recovery Option Hallucination
What to watch: The model invents recovery steps that don't exist—suggesting undo commands for irreversible operations or pointing to nonexistent backup systems. This creates false confidence. Guardrail: Constrain recovery text to only reference documented recovery procedures. If no recovery path exists, require the warning to explicitly state irreversibility rather than fabricating options. Ground recovery claims in a provided recovery catalog.
Warning Fatigue from Over-Warning
What to watch: The prompt generates severe warnings for low-risk write operations, causing users to habitually dismiss all warnings including critical ones. This erodes the warning system's credibility. Guardrail: Calibrate severity thresholds so that routine, reversible writes produce minimal or no warnings. Reserve high-severity warnings for irreversible or wide-blast-radius operations. Test warning frequency against real user workflows.
Structured Metadata Drift
What to watch: The model produces correct natural-language warnings but malformed structured metadata—wrong enum values, missing required fields, or severity strings that don't match the schema. Downstream UI rendering breaks. Guardrail: Enforce strict output schema validation on every warning generation call. Use enum constraints for severity levels and required-field checks for affected resources. Reject and retry on schema mismatch before the warning reaches the UI.
Context-Ignorant Warning Generation
What to watch: The warning fails to incorporate user context—such as the user's role, the environment, or whether this operation is routine for them—producing warnings that are either alarmist or insufficient for the actual risk profile. Guardrail: Pass user role, environment tier, and operation history into the prompt as context variables. Adjust warning tone and detail based on whether the user is an admin performing routine maintenance or a new user attempting a destructive action.
Evaluation Rubric
Criteria for evaluating the quality and safety of destructive action warnings before deploying the prompt to production. Each criterion targets a known failure mode.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Severity Classification Accuracy | Warning severity matches a predefined 3-level scale (e.g., reversible, irreversible, cascading) based on the tool's declared side-effect profile. | A 'DELETE DATABASE' call is classified as 'Low' severity or a 'RENAME TABLE' is classified as 'Irreversible'. | Run 50 labeled destructive tool calls through the prompt and measure exact-match accuracy against a human-labeled severity key. |
Irreversibility Disclosure | Warning explicitly states whether the operation can be undone and, if not, clearly uses the term 'irreversible' or 'cannot be undone'. | Warning for a hard delete omits the word 'irreversible' or suggests a non-existent 'undo' command. | Parse the [WARNING_TEXT] output for a boolean flag: contains 'irreversible' OR 'cannot be undone' when the tool's [SIDE_EFFECT_PROFILE] is 'destructive'. |
Affected Resource Inventory | Warning lists the specific resource names, types, or identifiers that will be impacted, not just a generic category. | Warning says 'data will be deleted' instead of 'all records in the | Check if the [AFFECTED_RESOURCES] output array contains at least one concrete resource identifier matching the input [TOOL_ARGUMENTS]. |
Recovery Option Validity | Any suggested recovery step is a real, executable action (e.g., 'restore from backup X') and not a hallucinated or generic suggestion. | Warning suggests 'contact support to undo' for an operation that has a documented self-service restore procedure. | Have a domain expert review the [RECOVERY_OPTIONS] output for 20 destructive scenarios and flag any hallucinated or impossible steps. |
Blast Radius Estimation | Warning identifies downstream dependencies or cascading effects if the tool's description or arguments imply them. | Warning for deleting a load balancer does not mention the impact on downstream services or traffic routing. | Provide a [DEPENDENCY_MAP] in the input context and verify that the [BLAST_RADIUS] output references at least one downstream dependency when the map is non-empty. |
Structured Metadata Completeness | The output JSON contains all required fields: [SEVERITY_LEVEL], [WARNING_TEXT], [AFFECTED_RESOURCES], [IS_IRREVERSIBLE], [RECOVERY_OPTIONS], and [REQUIRES_HUMAN_APPROVAL]. | The [RECOVERY_OPTIONS] field is missing or null for a destructive operation that has a documented recovery path. | Validate the output against a strict JSON Schema. Fail the test if any required field is missing or has a wrong type. |
No Downplaying Language | Warning text avoids minimizing language like 'just', 'simply', 'minor', or 'quick' when describing destructive effects. | Warning says 'This will just remove a few records' for a DROP TABLE operation. | Use a keyword blocklist scan on the [WARNING_TEXT] field for terms: 'just', 'simply', 'minor', 'quick', 'easily'. Fail if any are present in a 'High' severity warning. |
Human Approval Flag Accuracy | The [REQUIRES_HUMAN_APPROVAL] boolean is | A DROP DATABASE operation returns | Assert that [REQUIRES_HUMAN_APPROVAL] equals |
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 prompt and a hardcoded severity scale. Use a simple JSON schema with severity, summary, and affected_resources. Skip recovery option generation initially—focus on accurate severity grading and irreversibility detection.
code[TOOL_CALL]: { "tool": "delete_customer_records", "arguments": { "customer_ids": ["all"] } } [TOOL_REGISTRY]: { "delete_customer_records": { "side_effect": "destructive", "irreversible": true } }
Watch for
- Severity inflation on reversible operations
- Missing irreversibility flags in tool registry causing false negatives
- Overly verbose warnings that bury the critical signal

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