Inferensys

Prompt

Refusal Policy Portability Prompt Template

A practical prompt playbook for trust and safety teams deploying consistent refusal behavior across multiple model families. This playbook provides a prompt template that maps refusal categories, safe alternative language, and boundary communication to each provider's instruction format.
Governance lead reviewing model governance framework on laptop, policy documents visible, executive office setup.
PROMPT PLAYBOOK

When to Use This Prompt

A practical guide for trust and safety teams, platform engineers, and policy authors who need to standardize refusal behavior across multiple model providers.

This prompt is for trust and safety teams, AI platform engineers, and policy authors who need a single, auditable refusal policy specification that can be adapted for multiple model providers (e.g., OpenAI, Anthropic, Google, open-weight models). Use it when you are migrating a product to a new model, running a multi-model routing system, or standardizing safety behavior across an AI platform. The prompt takes your existing policy categories and target model conventions as input and produces a structured policy document with refusal triggers, safe alternative language, and boundary communication rules.

Do not use this prompt for a single-model deployment where a native safety policy is sufficient, or for generating the initial policy from scratch without defined categories. This prompt assumes you already have a set of refusal categories, harm taxonomies, or content policy documents that need to be translated into model-executable instructions. If you are starting from zero—with no existing policy categories, no defined harm types, and no refusal examples—you should first complete a policy authoring workflow before attempting cross-model portability. The prompt also assumes you have access to the target model's system instruction format and understand its instruction-following characteristics; without this context, the generated policy may not bind correctly.

The output of this prompt is a structured refusal policy specification, not a final system prompt ready for deployment. You should treat the generated specification as an intermediate artifact that requires human review, cross-model testing with your refusal consistency evals, and adaptation to your specific product context. The specification includes refusal triggers mapped to each policy category, safe alternative language templates, and boundary communication rules that tell the model what to say when a request falls into a gray area. After generating the specification, validate it against your golden refusal test cases, check for over-refusal on legitimate requests, and verify that the safe alternative language aligns with your product's tone and user experience goals.

PRACTICAL GUARDRAILS

Use Case Fit

Where this prompt works and where it does not. Use this to decide if the Refusal Policy Portability Prompt Template is the right tool for your cross-model safety deployment.

01

Good Fit: Multi-Provider Safety Standardization

Use when: you are deploying the same product feature across OpenAI, Anthropic, and open-weight models and need refusal behavior to be consistent. Guardrail: Run cross-model refusal consistency evals before production to confirm that safe alternatives and boundary communication map correctly to each provider's instruction format.

02

Bad Fit: Single-Model, Static Policy

Avoid when: you are only deploying on one model family with no migration plans. Guardrail: Use a simpler refusal policy prompt without the portability overhead. The cross-model mapping adds complexity that isn't justified for single-provider deployments.

03

Required Input: Refusal Category Taxonomy

What to watch: The prompt requires a clear, pre-defined taxonomy of refusal categories (e.g., illegal content, self-harm, regulated advice). Guardrail: Validate that your taxonomy is complete and unambiguous before generating the portability specification. Missing categories will cause silent policy gaps on some models.

04

Required Input: Safe Alternative Language Templates

What to watch: Each refusal category needs a corresponding safe alternative response that redirects users constructively. Guardrail: Test safe alternatives for tone consistency across models. A redirect that sounds helpful on one model may sound dismissive on another.

05

Operational Risk: Silent Refusal Drift

Risk: A model upgrade or provider change can cause refusal policies to degrade silently—either over-refusing safe requests or under-refusing harmful ones. Guardrail: Implement automated cross-model refusal consistency evals that run on every model version change and flag threshold violations before they reach users.

06

Operational Risk: Boundary Communication Mismatch

Risk: How a model communicates the boundary of a refusal (e.g., 'I can't help with that' vs. 'I'm not able to provide medical advice') varies by provider and can confuse users. Guardrail: Include boundary communication templates in your portability spec and validate them with user-facing acceptance tests across all target models.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A copy-ready template for generating a cross-model refusal policy specification from your existing policy data.

This template is designed to be the single source for generating a refusal policy specification that can be ported across multiple model families. It takes your existing policy categories, safe alternative language, and boundary communication rules as input and produces a structured specification that maps each refusal category to the instruction format of your target models. Use this as the starting point for your policy portability pipeline.

markdown
You are a refusal policy architect. Your task is to produce a refusal policy specification that can be adapted across multiple model providers while preserving consistent refusal behavior.

## INPUT DATA

### Current Refusal Policy
[POLICY_DOCUMENT]

### Refusal Categories
[REFUSAL_CATEGORIES]

### Safe Alternative Language
[SAFE_ALTERNATIVES]

### Boundary Communication Rules
[BOUNDARY_RULES]

### Target Models
[TARGET_MODELS]

### Risk Tolerance Level
[RISK_LEVEL]

## OUTPUT SCHEMA

Produce a JSON object with the following structure:

```json
{
  "policy_specification": {
    "version": "string",
    "last_updated": "ISO8601 timestamp",
    "refusal_categories": [
      {
        "category_id": "string",
        "category_name": "string",
        "description": "string",
        "trigger_conditions": ["string"],
        "refusal_template": "string",
        "safe_alternative_template": "string",
        "severity": "critical|high|medium|low",
        "requires_human_review": boolean,
        "model_specific_adaptations": {
          "[MODEL_NAME]": {
            "instruction_format": "string",
            "parsing_notes": "string",
            "known_sensitivity_flags": ["string"]
          }
        }
      }
    ],
    "boundary_communication": {
      "default_refusal": "string",
      "uncertainty_disclosure": "string",
      "escalation_path": "string"
    },
    "cross_model_consistency_checks": [
      {
        "check_id": "string",
        "description": "string",
        "test_input": "string",
        "expected_behavior": "string",
        "acceptable_variance": "string"
      }
    ]
  }
}

CONSTRAINTS

  • Map every refusal category to each target model's instruction format.
  • Include known sensitivity differences between models for each category.
  • Define consistency checks that can be run as automated evals.
  • Flag categories where model behavior is known to diverge significantly.
  • Preserve the original policy intent; do not weaken or strengthen boundaries.
  • For high-severity categories, require human review confirmation.

To adapt this template, replace each square-bracket placeholder with your actual policy data. The [POLICY_DOCUMENT] should contain your full current refusal policy text. [REFUSAL_CATEGORIES] should list each category of request you refuse, with examples. [SAFE_ALTERNATIVES] should contain the language you use to redirect users to acceptable alternatives. [BOUNDARY_RULES] should define how your system communicates its limitations. [TARGET_MODELS] should be a list of model identifiers you need to support. [RISK_LEVEL] should be set to low, medium, high, or critical to calibrate the conservatism of the generated specification.

After generating the specification, validate it by running the cross-model consistency checks against each target model. Pay special attention to categories flagged with known sensitivity differences. For high-severity refusal categories, always include a human review step before deploying the adapted instructions to production. Store the output as a versioned artifact in your policy repository alongside the evals that prove behavioral equivalence across models.

IMPLEMENTATION TABLE

Prompt Variables

Placeholders required to make the Refusal Policy Portability Prompt Template work across model families. Replace each placeholder with concrete values before execution.

PlaceholderPurposeExampleValidation Notes

[REFUSAL_CATEGORIES]

List of disallowed request types the assistant must refuse

Violence, hate speech, self-harm, illegal acts, PII extraction

Must be a structured list with clear category boundaries; validate no overlap between categories

[SAFE_ALTERNATIVE_TEMPLATES]

Per-category safe response language the assistant should use instead of raw refusal

For self-harm: 'I can't help with that. If you're in crisis, contact [RESOURCE].'

Each category must have a corresponding template; validate template completeness with category-to-template mapping check

[BOUNDARY_COMMUNICATION_RULES]

Instructions for how the assistant communicates refusal boundaries without leaking policy details

Never quote policy text verbatim. Use 'I'm not able to help with that' not 'Policy 3.2 prohibits'

Validate that boundary rules do not contain extractable policy language; red-team for policy leakage

[TARGET_MODEL_FAMILY]

Model provider or architecture the refusal policy is being adapted for

claude-3, gpt-4, gemini, llama-3, command-r

Must match a supported provider in the adaptation mapping; validate against known model instruction formats

[PROVIDER_INSTRUCTION_FORMAT]

Structural conventions for system instructions on the target model

Claude: XML-wrapped system block; GPT: system message role; Gemini: system_instruction field

Validate format matches target model's documented instruction method; test with minimal policy first

[REFUSAL_CONSISTENCY_THRESHOLD]

Minimum acceptable cross-model refusal agreement rate

0.95

Must be between 0.0 and 1.0; validate with pairwise refusal agreement calculation across test cases

[DISALLOWED_EDGE_CASES]

Ambiguous or borderline requests that test refusal boundary precision

Requests using euphemisms, indirect language, roleplay framing, academic hypotheticals

Each edge case must have expected refusal or non-refusal label; validate edge case coverage against refusal categories

[ESCALATION_PATH]

What happens when the assistant cannot confidently classify a request

Flag for human review; respond with 'I need to check before I can help with that'

Validate escalation path is reachable from refusal logic; test with boundary-pushing inputs that fall between categories

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the refusal policy portability prompt into a production application with validation, logging, and cross-model consistency checks.

The refusal policy portability prompt is designed to be called programmatically as part of a policy migration pipeline, not as a one-off chat interaction. The application layer should treat this prompt as a policy compiler: it takes a source refusal policy and target model specifications as inputs, then produces a structured refusal specification that can be injected into the target model's system prompt. The harness must handle input validation, output parsing, cross-model consistency evaluation, and human review gates before the generated policy reaches production. This is a high-stakes workflow because refusal policy failures can expose users to harmful content or cause over-refusal that breaks core product functionality.

Integration pattern: Wrap the prompt in a service that accepts a source_policy (the refusal rules written for the original model), target_model (provider and model identifier), and target_model_conventions (instruction format, delimiter style, priority markers). The service should validate inputs against a schema—rejecting empty policies, unsupported target models, or missing convention fields—before constructing the prompt. After the model returns a response, parse the output against the expected refusal specification schema (categories, refusal language, safe alternatives, boundary communication). If parsing fails, retry once with a repair prompt that includes the parse error. Log every generation attempt, the parsed specification, and any validation failures for audit and debugging. For high-risk deployments, route the generated specification to a human review queue where a policy reviewer can approve, reject, or modify the output before it is deployed to production.

Cross-model consistency evaluation: The harness should include an automated evaluation step that tests the generated refusal policy against a golden set of test inputs spanning disallowed requests, borderline cases, and clearly allowed requests. Run these test inputs through the target model with the generated policy injected, then compare refusal decisions against expected outcomes. Track false-positive refusals (safe requests incorrectly refused), false-negative refusals (unsafe requests incorrectly allowed), and refusal style consistency (tone, safe alternative language). Set thresholds for each metric and block deployment if thresholds are exceeded. Store eval results alongside the generated policy for traceability. Model choice: Use a model with strong instruction-following for the generation step (GPT-4o, Claude 3.5 Sonnet) and the same target model for evaluation to ensure behavioral fidelity. Avoid using smaller or cheaper models for generation if refusal boundary precision is critical.

What to avoid: Do not deploy generated refusal policies without running the cross-model consistency eval suite. Do not assume that a policy that parses correctly will behave correctly—parsing success is not behavioral success. Do not skip human review for policies governing high-severity harm categories (CSAM, self-harm, violence). Do not use the same test inputs for generation and evaluation; maintain a held-out eval set. Finally, version every generated policy artifact with the source policy hash, target model, generation timestamp, and reviewer identity so that any production incident can be traced back to its origin.

IMPLEMENTATION TABLE

Expected Output Contract

Fields, format, and validation rules for the refusal policy specification generated by the Refusal Policy Portability Prompt Template. Use this contract to validate the model output before downstream processing or cross-model deployment.

Field or ElementType or FormatRequiredValidation Rule

refusal_categories

Array of objects

Must contain at least one category. Each object must include id, label, and examples fields. id must be a non-empty string matching ^[a-z_]+$.

refusal_categories[].id

String

Must be unique within the array. Must be lowercase snake_case. Must not contain model-specific tokens.

refusal_categories[].label

String

Must be a human-readable phrase under 80 characters. Must not contain markdown or HTML.

refusal_categories[].examples

Array of strings

Must contain at least 2 example user requests that trigger this refusal category. Each string must be under 200 characters.

safe_alternative_language

Object

Must include default and per_category fields. default must be a non-empty string under 300 characters.

safe_alternative_language.default

String

Must be a refusal template that does not reveal system instructions. Must include [ALTERNATIVE] placeholder if redirection is expected.

safe_alternative_language.per_category

Object

Keys must match refusal_categories[].id values. Each value must be a string under 300 characters. Null allowed if no category-specific override exists.

boundary_communication_rules

Array of objects

Must contain at least one rule. Each object must include condition, response, and escalation fields.

boundary_communication_rules[].condition

String

Must describe a detectable condition using concrete signals, not vague intent. Must be parseable as a boolean check.

boundary_communication_rules[].response

String

Must be a refusal or redirection message under 300 characters. Must not leak system prompt content.

boundary_communication_rules[].escalation

String

Must be one of: none, human_review, flag_for_audit, block_and_report. Default is none.

provider_adaptations

Object

Must include keys for each target provider specified in [TARGET_PROVIDERS]. Each value must be an object with instruction_format and notes fields.

provider_adaptations.[provider].instruction_format

String

Must match the provider's documented system instruction format. Must not exceed 2000 characters. Must preserve all refusal categories from the base specification.

provider_adaptations.[provider].notes

String

Must describe any provider-specific behavior differences or known limitations. Null allowed if no differences are expected.

cross_model_consistency_evals

Array of objects

Must contain at least 3 test cases. Each object must include input, expected_category, and acceptable_variance fields.

cross_model_consistency_evals[].input

String

Must be a realistic user request that tests a refusal boundary. Must be under 300 characters.

cross_model_consistency_evals[].expected_category

String

Must match a refusal_categories[].id value or be none if refusal is not expected.

cross_model_consistency_evals[].acceptable_variance

String

Must be one of: exact_match, same_category, any_refusal, no_refusal. Describes how much deviation is tolerated across models.

PRACTICAL GUARDRAILS

Common Failure Modes

Refusal policies break silently when ported across models. These are the most common failure modes and how to guard against them before they reach production.

01

Silent Policy Omission

What to watch: The target model ignores refusal categories entirely because the instruction format doesn't match its training distribution. A policy written as a natural-language paragraph for one model may be treated as background context by another. Guardrail: Structure refusal rules as explicit conditional directives with clear triggers. Test each refusal category in isolation before combining them. Use a cross-model equivalence eval that flags any model that fails to refuse a known-disallowed request.

02

Over-Refusal Creep

What to watch: A refusal policy that was balanced on the source model becomes overly aggressive on the target model, blocking legitimate requests. This happens when the target model interprets boundary language more broadly or applies refusal heuristics to adjacent topics. Guardrail: Include explicit safe-harbor examples in the policy specification. Run a false-positive test suite with borderline-but-allowed requests. Set a maximum acceptable over-refusal rate and flag models that exceed it.

03

Refusal Style Inconsistency

What to watch: The model refuses correctly but uses a tone, format, or explanation style that violates product requirements. One model may respond with a terse block while another provides dangerous detail about why it won't comply. Guardrail: Specify refusal response templates with required elements: acknowledgment, boundary statement, safe alternative if applicable. Test refusal outputs for tone, length, and information leakage. Use a style consistency eval that compares refusal responses across models.

04

Safe Alternative Drift

What to watch: The policy instructs the model to offer safe alternatives when refusing, but the target model either omits alternatives entirely or suggests alternatives that violate the policy intent. Guardrail: Define safe alternative categories explicitly in the policy. Include examples of acceptable and unacceptable alternatives. Test that alternatives offered after refusal don't reintroduce the disallowed content through indirection.

05

Multi-Turn Policy Decay

What to watch: Refusal behavior holds on the first turn but degrades across a conversation as the user applies pressure, reframes the request, or exploits context-window shifts. Some models are more susceptible to multi-turn jailbreaking than others. Guardrail: Include multi-turn persistence instructions that reassert refusal boundaries each turn. Test with adversarial multi-turn scenarios: rephrasing, hypothetical framing, role-play, and context-stuffing attacks. Measure refusal consistency across turn 1, turn 5, and turn 10.

06

Boundary Communication Leakage

What to watch: The model's refusal response reveals policy internals, category definitions, or boundary logic that an adversary can use to craft bypasses. This is especially dangerous when porting detailed policy specifications that the source model handled discreetly. Guardrail: Add an output constraint that forbids quoting or paraphrasing the refusal policy itself. Test refusal responses for policy leakage by scanning for category names, threshold values, and instruction fragments. Use a red-team probe that specifically requests policy details after a refusal.

IMPLEMENTATION TABLE

Evaluation Rubric

Use this rubric to evaluate the quality of a generated refusal policy specification before deploying it to production. Each criterion targets a specific failure mode common in cross-model policy portability.

CriterionPass StandardFailure SignalTest Method

Refusal Category Completeness

All categories from [SOURCE_POLICY] are mapped to a target-model equivalent without omission.

A category from the source policy is missing in the output or is mapped to a generic catch-all like 'other'.

Diff the list of categories in [SOURCE_POLICY] against the output. Flag any missing entries.

Safe Alternative Language

Every refusal category includes a concrete, non-evasive safe alternative that aligns with [PRODUCT_VOICE].

Safe alternative is missing, is a generic disclaimer, or contradicts the refusal itself.

For each refusal category, assert that the safe alternative field is non-empty and contains a domain-specific suggestion.

Model-Specific Instruction Format

The output uses the structural conventions defined in [TARGET_MODEL_FORMAT] (e.g., XML tags, system/user message separation).

The output is a single block of prose with no structural delimiters or uses the source model's format.

Validate the output structure against the schema defined in [TARGET_MODEL_FORMAT]. Check for required delimiters.

Boundary Communication Clarity

The policy clearly distinguishes between a hard refusal, a request for clarification, and an escalation to a human.

The output uses the same tone for a minor clarification request and a hard disallowed-content refusal.

Parse the output for distinct boundary markers. Confirm at least two different response templates exist for different severity levels.

Cross-Model Consistency Score

A pairwise comparison using [EVAL_JUDGE_PROMPT] shows >90% behavioral equivalence with the source policy on a golden test set.

The consistency score drops below 90% or the judge identifies a critical behavioral divergence.

Run [GOLDEN_TEST_SET] through both the source and target prompts. Score the output pairs using [EVAL_JUDGE_PROMPT].

Anti-Injection Hardening

The policy specification is wrapped in a defensive structure (e.g., delimiters, priority anchors) as defined in [HARDENING_RULES].

The output contains raw policy instructions without any structural defense against prompt injection.

Check for the presence of required defensive structures from [HARDENING_RULES]. Run a basic extraction attack from [RED_TEAM_TESTS].

Source Grounding

Every adapted rule can be traced back to a specific clause in [SOURCE_POLICY] via a citation or mapping key.

A rule appears in the output that has no clear origin in the source policy, indicating hallucination.

For each rule in the output, require a citation to [SOURCE_POLICY]. Flag any rule without a valid trace.

Output Schema Validity

The final output is a valid JSON object that strictly conforms to [OUTPUT_SCHEMA].

The output is not valid JSON, contains extra keys, or has missing required fields.

Parse the output with a JSON validator. Validate the structure against [OUTPUT_SCHEMA] using a schema validator.

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Start with the base refusal policy template but relax strict schema requirements. Use a single model for initial testing and focus on getting refusal categories and safe alternative language right before adding cross-model mapping. Replace the [TARGET_MODEL_FAMILY] placeholder with a single provider and skip the cross-model consistency eval section.

Watch for

  • Overly broad refusal categories that block legitimate requests
  • Missing safe alternative language, causing the model to refuse without offering a path forward
  • Policy drift when moving from one model to another without the structural mapping rules
Prasad Kumkar

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.