This prompt is designed for engineering teams building AI systems that can initiate actions with physical safety implications—think robotics, industrial control, autonomous vehicles, or medical device actuation. The job-to-be-done is not just to approve or deny an action, but to produce a structured, auditable safety gate decision that classifies hazard severity, specifies required confirmations, and defines blocking conditions before any actuator moves or physical state changes. The ideal user is a platform engineer or AI safety engineer integrating this prompt into a control loop where the model acts as a mandatory checkpoint between intent and execution.
Prompt
Safety-Critical Action Pre-Approval Prompt

When to Use This Prompt
Define the job, reader, and constraints for the Safety-Critical Action Pre-Approval Prompt.
You should use this prompt when the cost of a wrong action is measured in physical harm, equipment damage, or environmental release, not just a bad text output. The prompt requires several concrete inputs to function: a detailed description of the proposed action, the current system state from sensors, the relevant safety policy or operational envelope, and a defined hazard classification schema. It is not suitable for low-risk software-only actions, content generation, or any workflow where a hallucinated approval would only cause a retryable error. Do not use this prompt as a standalone safeguard; it must be part of a defense-in-depth architecture where the model's output is one signal among hardware interlocks, deterministic bounds checks, and independent safety controllers.
The primary constraint is that this prompt must never be the sole gate for high-severity actions. The output should always require human approval for any action classified above 'low' severity, and the system should be architected so that a missing or malformed model response defaults to 'blocked.' Before integrating this prompt, ensure you have a reliable channel for human review, a logging system that captures every gate decision with a unique ID, and a way to test the prompt against a golden dataset of known safe and unsafe actions. The next step is to copy the template, fill in your specific hazard taxonomy and safety policy, and run it against your eval suite before connecting it to any actuator.
Use Case Fit
Where the Safety-Critical Action Pre-Approval Prompt works, where it fails, and the operational prerequisites for production use.
Good Fit: Physical-World Actuation
Use when: The AI proposes actions that control hardware, machinery, vehicles, or lab equipment where a malfunction could cause injury or property damage. Guardrail: The prompt's hazard classification (low/medium/high/critical) must map directly to physical safety risk, not just data risk.
Bad Fit: Low-Stakes Digital Actions
Avoid when: The action is a routine API call with no safety implications, such as updating a CRM field or sending a pre-approved notification. Guardrail: Using this prompt for low-risk actions creates approval fatigue. Reserve it for actions where the cost of error is unacceptable without human review.
Required Input: Action Specification Schema
Risk: Without a structured description of the proposed action, the model cannot reliably assess severity. Guardrail: The prompt requires a machine-readable action spec including target system, expected state change, affected entities, and rollback feasibility. Vague inputs must be rejected before the gate runs.
Required Input: Operational Context
Risk: A safe action in one context (test environment, maintenance mode) may be dangerous in another (live production, occupied space). Guardrail: The prompt must receive explicit context flags: environment, active personnel, safety interlocks status, and concurrent operations. Never assume context.
Operational Risk: Approval Bottleneck
Risk: If every action above low severity requires human approval, the system may stall during time-sensitive operations. Guardrail: Define pre-approved action categories with narrow scopes (e.g., emergency stop always auto-approved) and escalation timeouts that trigger a safe fallback, not a silent block.
Operational Risk: Classification Drift
Risk: Over time, the model may begin classifying genuinely high-severity actions as medium or low, bypassing required human review. Guardrail: Implement a regression test suite of known high-severity actions that must always be classified correctly. Run these tests on every prompt or model version change before deployment.
Copy-Ready Prompt Template
A reusable prompt template with square-bracket placeholders for implementing a safety gate before executing any action with physical safety implications.
This prompt template is designed to be dropped into an application's pre-execution pipeline. It forces the model to act as a deterministic safety gate, not a conversational advisor. The template requires structured inputs describing the proposed action, the system state, and the operational context. It then produces a strict JSON decision object that your application can parse to either block, escalate, or allow the action. The prompt is intentionally rigid—it should not be modified to be more conversational or helpful, as that undermines its function as a safety barrier.
textSYSTEM: You are a safety-critical action gate. Your only function is to evaluate proposed actions for physical safety risk and output a structured decision. You never execute actions. You never provide advice outside the decision schema. You treat any action that could cause injury, equipment damage, environmental harm, or uncontrolled energy release as safety-critical. INPUT: - Proposed Action: [ACTION_DESCRIPTION] - System State: [SYSTEM_STATE] - Affected Components: [AFFECTED_COMPONENTS] - Environmental Conditions: [ENVIRONMENTAL_CONDITIONS] - Operator Context: [OPERATOR_CONTEXT] - Safety Policies: [SAFETY_POLICIES] OUTPUT_SCHEMA: { "decision": "BLOCK" | "ESCALATE" | "ALLOW", "hazard_classification": "NONE" | "LOW" | "MEDIUM" | "HIGH" | "CRITICAL", "required_confirmations": [ { "confirmation_type": "string", "description": "string", "required_from": ["string"] } ], "blocking_conditions": ["string"], "safety_reasoning": "string", "applicable_policy_refs": ["string"] } RULES: 1. If hazard_classification is MEDIUM or above, decision must be BLOCK or ESCALATE. Never ALLOW. 2. If any blocking_condition is present, decision must be BLOCK. 3. If the action involves kinetic motion, thermal processes, high voltage, pressurized systems, chemical release, or heavy load movement, hazard_classification must be at least MEDIUM. 4. If operator context indicates insufficient training, missing certifications, or fatigue, escalate. 5. If environmental conditions include wet surfaces, poor visibility, confined spaces, or unstable structures, increase hazard_classification by one level. 6. Every required_confirmation must specify a concrete, verifiable check, not a vague acknowledgment. 7. Safety reasoning must cite specific physical risks, not generic caution. 8. If any required input is missing or ambiguous, decision must be ESCALATE with blocking_conditions explaining what is missing. CONSTRAINTS: - Output only valid JSON. No markdown, no commentary. - Never assume a hazard is absent because it is not mentioned. - When in doubt, escalate.
To adapt this template, replace each square-bracket placeholder with data from your control plane. [ACTION_DESCRIPTION] should be a machine-generated summary of the exact command or sequence the system intends to execute. [SYSTEM_STATE] must include current sensor readings, lockout/tagout status, and any active maintenance modes. [SAFETY_POLICIES] should be injected from your policy store as structured text, not summarized. After adapting, run the prompt through your eval suite using both safe and unsafe action examples. Any prompt modification that reduces the rate of BLOCK decisions on known-unsafe actions is a regression and must be rejected. Wire the output into your execution controller so that a BLOCK decision physically prevents actuation, not just logs a warning.
Prompt Variables
Required inputs for the Safety-Critical Action Pre-Approval Prompt. Each variable must be populated before the prompt is assembled and sent. Missing or malformed inputs will cause the safety gate to fail closed.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[PROPOSED_ACTION] | Full description of the action the system intends to take, including target system, command, and parameters | DELETE from production-db WHERE user_id=58291 AND status='pending' | Must be non-empty string. Must include verb, target, and scope. Reject if action is ambiguous or missing system identifier. |
[ACTION_CONTEXT] | Surrounding circumstances: who initiated, why, what workflow step, and any preceding actions | Initiated by nightly cleanup job v2.3.1. Preceding step: orphan detection completed with 12 records found. | Must be non-empty string. Must include initiator identity and triggering condition. Reject if context is generic or missing initiator. |
[SAFETY_POLICY] | The complete safety policy text against which the action must be evaluated | Section 4.2: No production data deletion without SRE lead approval. Section 4.3: All destructive actions require change ticket and rollback plan. | Must be non-empty string. Must contain explicit rules, not vague principles. Reject if policy text is placeholder or references external documents not provided. |
[HAZARD_CATEGORIES] | Enumeration of hazard classes the system must check: physical_safety, data_loss, service_outage, security_bypass, privacy_breach, financial_impact | ["data_loss", "service_outage"] | Must be valid JSON array of strings from the allowed enum. Reject if empty array or contains unrecognized categories. Default to all categories if not specified. |
[REQUIRED_APPROVALS] | Map of severity levels to required approver roles and confirmation counts | {"low": {"roles": ["operator"], "count": 1}, "medium": {"roles": ["sre_lead"], "count": 1}, "high": {"roles": ["sre_lead", "vp_engineering"], "count": 2}} | Must be valid JSON object with low, medium, high keys. Each must specify roles array and count integer. Reject if high severity has count < 2 or no roles. |
[BLOCKING_CONDITIONS] | List of conditions that must cause automatic blocking regardless of severity classification | ["action_targets_production_data", "action_is_irreversible", "action_exceeds_rate_limit", "action_outside_maintenance_window"] | Must be valid JSON array of strings. Each condition must be machine-checkable. Reject if conditions are subjective or unverifiable from available context. |
[OUTPUT_SCHEMA] | Expected structure of the safety gate decision output | {"decision": "enum(approved|blocked|needs_review)", "severity": "enum(low|medium|high|critical)", "hazard_classification": "object", "required_confirmations": "array", "blocking_reasons": "array", "human_approval_required": "boolean", "audit_record": "object"} | Must be valid JSON schema or type description. Must include decision, severity, and human_approval_required fields. Reject if schema allows ambiguous decision states. |
[ESCALATION_CONTACT] | Identity and channel for the human who must approve actions above low severity | {"role": "sre_lead_oncall", "channel": "pagerduty_sre_primary", "timeout_seconds": 900, "fallback": "vp_engineering"} | Must be valid JSON object with role, channel, and timeout_seconds. Timeout must be positive integer. Reject if channel is undefined or timeout exceeds 3600 without documented exception. |
Implementation Harness Notes
How to wire the Safety-Critical Action Pre-Approval Prompt into an application with validation, retries, logging, and human review gates.
The Safety-Critical Action Pre-Approval Prompt is not a standalone chat interaction—it is a synchronous gate that must sit between the AI's action proposal and any actuator, API call, or physical command. The application should call this prompt every time the system considers an action that could cause physical harm, property damage, or safety incidents. The prompt receives a structured description of the proposed action, its context, and the available safety controls, and it returns a decision object that the application must enforce programmatically. Do not treat the model's output as advisory; the application layer must hard-block any action where decision is not approved or where required_confirmations are unsatisfied.
Integration pattern: Wrap the prompt call in a deterministic safety harness. Before calling the model, validate that the input contains all required fields: [ACTION_DESCRIPTION], [AFFECTED_SYSTEMS], [POTENTIAL_HAZARDS], [SAFEGUARDS_IN_PLACE], and [OPERATOR_CONTEXT]. After receiving the model's JSON response, validate the schema strictly—reject any output missing decision, severity_classification, required_confirmations, or blocking_conditions. If validation fails, retry once with a repair prompt that includes the validation error. If the second attempt also fails, default to blocked and escalate to a human reviewer. For actions classified as medium or higher severity, the system must require explicit human confirmation through a review queue before execution proceeds. Log every gate decision, including the full prompt input, model output, validation result, and human confirmation status, to an append-only audit store.
Model choice and latency: Use a model with strong instruction-following and structured output capabilities (GPT-4o, Claude 3.5 Sonnet, or equivalent). Set temperature=0 to maximize consistency on safety decisions. The prompt should run synchronously in the critical path; if the model call times out or returns an error, the system must fail closed—block the action and alert an operator. Do not cache safety gate decisions across different action instances, as context changes can alter the hazard profile. For high-frequency action streams, consider batching non-safety-critical pre-checks before invoking this gate, but never skip the gate for any action that meets your defined safety-critical criteria.
Next steps: After integrating the harness, run a battery of eval cases covering each severity level, edge cases like ambiguous hazard descriptions, and adversarial inputs that attempt to downplay risk. Measure false-positive blocking rates (safe actions incorrectly blocked) and false-negative pass-through rates (unsafe actions incorrectly approved). Tune the [CONSTRAINTS] and [RISK_LEVEL] placeholders based on eval results. If false negatives exceed zero, add a secondary human review layer or tighten the blocking conditions in the prompt template. Never remove the human-in-the-loop requirement for high and critical severity classifications.
Expected Output Contract
The safety gate prompt must return a structured, machine-readable decision. Use this contract to validate the output before any action is executed. Any field marked Required=true that is missing or invalid should block execution and trigger a retry or escalation.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
safety_decision | enum: APPROVED | BLOCKED | NEEDS_REVIEW | Must be exactly one of the three enum values. Any other value or null is a parse failure. | |
hazard_classification | enum: LOW | MEDIUM | HIGH | CRITICAL | Must match one of the four severity levels. If missing, treat as CRITICAL and escalate. | |
blocking_conditions | array of strings | Must be a non-empty array if safety_decision is BLOCKED or NEEDS_REVIEW. Each string must describe a specific, actionable condition. | |
required_confirmations | array of objects | Each object must contain 'role' (string) and 'rationale' (string). Must be non-empty if hazard_classification is MEDIUM or above. | |
action_summary | string | Must be a concise, human-readable description of the proposed action. Cannot be empty or identical to [ACTION_DESCRIPTION]. | |
hazard_rationale | string | Must cite specific evidence from [ACTION_CONTEXT] or [SAFETY_POLICY] that supports the hazard classification. Generic statements without citation are a validation failure. | |
override_eligibility | boolean | Must be true or false. If true, the output must include a non-empty 'override_requirements' field. If false, any override attempt should be rejected by the harness. | |
audit_trail | object | Must contain 'timestamp' (ISO 8601), 'policy_version' (string), and 'evidence_references' (array of strings). Missing audit_trail blocks execution regardless of safety_decision. |
Common Failure Modes
Safety-critical pre-approval prompts fail in predictable ways. These are the most common failure modes and the specific guardrails that prevent them.
Severity Downplaying
What to watch: The model classifies a genuinely high-severity action as low or medium to avoid blocking the workflow, especially when the prompt emphasizes 'keep things moving.' Guardrail: Require the model to list specific hazard indicators before assigning severity. Add an eval check that flags any output where the severity label contradicts the listed hazard indicators.
Confirmation Bypass via Vague Language
What to watch: The model generates a confirmation request that is too generic for a human to meaningfully approve, such as 'Confirm you want to proceed with changes.' Guardrail: Enforce a structured confirmation schema that requires the model to state the specific action, affected systems, and irreversible consequences. Validate that all required fields are populated and non-generic before surfacing to a human.
Hallucinated Safety Context
What to watch: The model invents hazard classifications, regulatory requirements, or blocking conditions that do not exist in the provided safety policy or system context. Guardrail: Require every blocking condition or hazard classification to cite a specific line or rule from the provided safety policy. Add a post-generation grounding check that verifies each citation exists in the source document.
Over-Blocking Low-Risk Actions
What to watch: The model becomes overly cautious and blocks routine, low-risk actions with spurious hazard classifications, creating operational bottlenecks and human review fatigue. Guardrail: Define explicit safe-list categories in the prompt for actions that should always pass the gate. Include few-shot examples of low-risk actions that correctly receive 'approved' decisions. Monitor the false-positive rate in production.
Inconsistent Hazard Taxonomy Drift
What to watch: The model uses hazard terms that are close to but not exactly matching the defined taxonomy, breaking downstream routing and automated decision logic. Guardrail: Provide the exact hazard taxonomy as an enum in the output schema. Use a strict validator that rejects any output containing a hazard classification not present in the allowed enum values, and trigger a retry with the taxonomy re-emphasized.
Context Truncation of Safety Policies
What to watch: Long safety policies or runbooks are placed near the end of the prompt and get truncated by the context window, causing the model to make decisions without seeing critical blocking rules. Guardrail: Place safety policies and blocking rules at the top of the prompt, before the action description. Implement a context-length monitor that alerts if the combined prompt exceeds the model's effective context window, and use a summarization step for non-safety context if needed.
Evaluation Rubric
Criteria for testing the Safety-Critical Action Pre-Approval Prompt before production deployment. Each row defines a pass standard, a failure signal, and a concrete test method.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Hazard Classification Accuracy | Severity level matches the provided hazard taxonomy for the described action and context. | Action with physical harm potential classified as 'Low' or 'None'. | Run 20 labeled test cases spanning all severity levels; require exact match on High/Critical and adjacent-match on others. |
Required Confirmations Completeness | Output lists all confirmations mandated by the severity-level policy, with no missing items. | High-severity action missing a required confirmation step (e.g., no secondary approver listed). | Schema validation against a confirmation checklist per severity level; flag any missing required fields. |
Blocking Condition Correctness | Blocking conditions are present and correctly triggered for actions that exceed the autonomous threshold. | Action above 'Low' severity returns | Assert that |
Hallucinated Hazards | No hazards, confirmations, or blocking conditions are invented beyond what the action description supports. | Output cites a 'fire risk' for a software-config-only change with no physical actuation. | Human review of 50 outputs; flag any hazard not directly traceable to an explicit action detail in [ACTION_DESCRIPTION]. |
Approval Routing Validity | Required approver roles match the organizational policy provided in [APPROVAL_POLICY]. | Output routes to 'Safety Officer' when policy specifies 'Shift Supervisor' for the given severity. | Exact string match on approver role against policy document; test with policy variations. |
Output Schema Compliance | Response is valid JSON matching the [OUTPUT_SCHEMA] with all required fields present and correctly typed. | Missing | Automated JSON Schema validation in CI; reject any response that fails |
Uncertainty Disclosure | When action details are ambiguous, output includes | Ambiguous action description receives | Inject 10 intentionally vague action descriptions; assert |
Safe Default on Missing Context | When [ACTION_DESCRIPTION] or [SYSTEM_STATE] is empty or malformed, output blocks the action and requests clarification. | Empty action description returns | Send empty string, null, and truncated JSON as inputs; assert |
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 simple JSON schema for the safety gate output. Use a frontier model (GPT-4o, Claude 3.5 Sonnet) with low temperature. Skip the multi-stage confirmation flow and focus on getting consistent hazard classification and blocking decisions.
code[ACTION_DESCRIPTION] [SYSTEM_CAPABILITIES] [OPERATING_ENVIRONMENT]
Watch for
- Over-classifying low-risk actions as high severity (false positive blocking)
- Missing physical safety hazards that aren't explicitly named in the action description
- Inconsistent severity ratings across similar actions
- Model defaulting to 'needs review' without clear reasoning

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