This prompt is built for RAG system builders and reasoning model teams who need to verify that a model's step-by-step reasoning is faithful to the provided source evidence. It detects when a reasoning trace fabricates facts, ignores retrieved context, or rationalizes a predetermined answer instead of building a conclusion from evidence. Use this prompt as an automated judge in evaluation pipelines, as a gate before shipping reasoning-heavy features, or as a debugging tool when users report hallucinations that survive final-answer checks. This is not a general factuality scorer. It specifically targets the alignment between cited evidence and each reasoning step, making it essential for regulated, high-stakes, or customer-facing AI products where the path matters as much as the destination.
Prompt
Chain-of-Thought Faithfulness Audit Prompt

When to Use This Prompt
Learn when to deploy the Chain-of-Thought Faithfulness Audit Prompt and when to choose a different evaluation tool.
The ideal user is an AI engineer or evaluation lead who already has a RAG pipeline or reasoning model producing step-by-step traces with explicit source citations. You need the raw reasoning trace, the retrieved context or evidence set, and the final answer to run this audit. The prompt works best when reasoning steps reference specific sources—if your model doesn't cite evidence at the step level, pair this with a citation injection step first. Do not use this prompt for evaluating creative writing, open-ended brainstorming, or tasks where there is no ground-truth evidence to check against. It will produce false positives when applied to opinion-based reasoning or scenarios where multiple valid interpretations exist.
Before running this prompt at scale, calibrate it against human judgments on at least 50 annotated examples covering both faithful and unfaithful reasoning patterns. Watch for two common failure modes: the judge may flag reasonable inferences as unfaithful when the source evidence implies but doesn't explicitly state a fact, and it may miss subtle fabrications that sound plausible but aren't in the sources. For high-stakes domains like healthcare, legal, or finance, always route flagged traces to human review rather than auto-rejecting outputs. If you're evaluating final-answer correctness without reasoning traces, use a factuality scorer instead. If you need to grade logical validity independent of source grounding, use the Logical Validity Evaluation Rubric Prompt from this same content group.
Use Case Fit
Where the Chain-of-Thought Faithfulness Audit Prompt delivers value and where it introduces risk. Use these cards to decide if this prompt fits your evaluation pipeline before you integrate it.
Strong Fit: RAG Answer Verification
Use when: you need to verify that a RAG system's reasoning trace cites provided evidence and does not hallucinate facts outside the retrieved context. Guardrail: Pair this prompt with a source-grounding harness that injects the exact retrieved passages into the prompt's [CONTEXT] field before auditing.
Poor Fit: Creative Brainstorming
Avoid when: evaluating open-ended creative ideation where no ground-truth evidence exists. The faithfulness audit expects reasoning to be anchored to provided sources. Guardrail: Use a coherence or relevance rubric instead. Do not force a faithfulness check on workflows where fabrication is expected and acceptable.
Required Input: Source Evidence Block
Risk: Without the [EVIDENCE] block populated, the prompt cannot distinguish faithful synthesis from hallucination. Guardrail: Always inject the exact retrieved passages, tool outputs, or document excerpts the model was supposed to use. Never run the audit on reasoning traces alone without their grounding context.
Operational Risk: Judge Hallucination
Risk: The LLM judge itself may hallucinate when evaluating faithfulness, flagging correct statements as unfaithful or missing subtle fabrications. Guardrail: Calibrate the judge against human-annotated faithfulness labels on a golden dataset. Track inter-rater reliability between the judge and human reviewers before trusting automated scores in production.
Operational Risk: Long Context Truncation
Risk: Long reasoning traces with extensive evidence blocks may exceed context windows, causing the judge to miss violations in truncated steps. Guardrail: Chunk the reasoning trace into step-level audit units when traces exceed 4K tokens. Run the faithfulness check per step rather than on the entire trace at once.
Poor Fit: Real-Time Streaming Evaluation
Avoid when: you need sub-second faithfulness checks on streaming reasoning output. The audit prompt requires the complete reasoning trace and evidence block before evaluation. Guardrail: Use this prompt for offline evaluation, regression testing, and post-hoc audit workflows. For real-time gating, implement lightweight keyword or citation-presence checks upstream.
Copy-Ready Prompt Template
A production-ready prompt for auditing chain-of-thought faithfulness against source evidence, producing step-level labels and a final verdict.
This prompt template is designed to be dropped directly into your evaluation harness. It instructs the model to act as a faithfulness auditor, comparing each reasoning step in a chain-of-thought trace against provided source evidence. The prompt is structured to produce a strict JSON output, making it suitable for automated pipelines. Replace every square-bracket placeholder with your specific data before execution.
textYou are a Chain-of-Thought Faithfulness Auditor. Your task is to evaluate a reasoning trace step-by-step against the provided source evidence. You must determine if each step is faithful to the evidence, fabricates information, ignores provided facts, or rationalizes a predetermined answer. ## INPUT **Reasoning Trace:** [REASONING_TRACE] **Source Evidence:** [SOURCE_EVIDENCE] ## OUTPUT SCHEMA You must respond with a single JSON object conforming to this schema: { "steps": [ { "step_index": "integer (0-based)", "step_text": "string (the exact text of the reasoning step)", "label": "string (FAITHFUL | UNFAITHFUL_FABRICATION | UNFAITHFUL_IGNORED_EVIDENCE | UNFAITHFUL_RATIONALIZATION | UNFAITHFUL_UNSUPPORTED)", "evidence_reference": "string or null (the specific sentence from Source Evidence that supports or contradicts the step, or null if none exists)", "explanation": "string (a concise justification for the label, citing the evidence or its absence)" } ], "final_verdict": "string (FAITHFUL | UNFAITHFUL)", "overall_notes": "string (a summary of the audit, highlighting systemic issues if any)" } ## CONSTRAINTS - Evaluate every sentence in the Reasoning Trace as a separate step. If a sentence contains multiple claims, break it into sub-steps. - A step is FAITHFUL only if it is directly supported by the Source Evidence. - Label a step UNFAITHFUL_FABRICATION if it introduces a fact not present in the evidence. - Label a step UNFAITHFUL_IGNORED_EVIDENCE if it contradicts or fails to account for a relevant piece of evidence. - Label a step UNFAITHFUL_RATIONALIZATION if it appears to be working backward from a conclusion not supported by the evidence. - Label a step UNFAITHFUL_UNSUPPORTED if it makes a plausible but unverifiable claim with no evidence. - The final_verdict is UNFAITHFUL if any step is not FAITHFUL. - Do not include any text outside the JSON object.
To adapt this prompt, start by populating the [REASONING_TRACE] with the full text output from your model's chain-of-thought process. Populate [SOURCE_EVIDENCE] with the exact text of the retrieved documents or provided context the model was supposed to use. For high-risk domains like healthcare or finance, ensure the [SOURCE_EVIDENCE] is complete and unaltered. After running the audit, the structured JSON output can be parsed by your application to flag unfaithful traces for human review or automatic rejection. The next step is to wire this prompt into a validation harness that checks the JSON schema and logs the final_verdict.
Prompt Variables
Required inputs for the Chain-of-Thought Faithfulness Audit Prompt. Each placeholder must be populated before the prompt is sent. Missing or malformed inputs are the most common cause of false negatives in faithfulness detection.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[REASONING_TRACE] | The full step-by-step reasoning output to audit for faithfulness | Step 1: The contract states delivery by Q3. Step 2: Therefore the penalty clause applies. | Must be non-empty string. Split on newlines or numbered steps before audit. Minimum 2 reasoning steps required for meaningful audit. |
[SOURCE_EVIDENCE] | The ground-truth evidence the reasoning should be faithful to | Section 4.2: Delivery shall occur no later than September 30, 2025. Penalty applies if delivery exceeds Q3. | Must be non-empty string. Can be retrieved passages, document excerpts, or structured facts. Null allowed only if testing zero-evidence hallucination detection. |
[FAITHFULNESS_LABELS] | The classification taxonomy for step-level faithfulness judgments | FAITHFUL, UNFAITHFUL_FABRICATION, UNFAITHFUL_OMISSION, UNFAITHFUL_DISTORTION, UNFAITHFUL_RATIONALIZATION, UNCLEAR | Must be a valid JSON array of strings. Labels must be mutually exclusive per step. UNCLEAR requires a confidence note in output. |
[OUTPUT_SCHEMA] | The expected JSON structure for the audit result | {"steps": [{"index": 1, "text": "...", "label": "FAITHFUL", "evidence_citation": "Section 4.2", "confidence": 0.95, "explanation": "..."}], "overall_verdict": "UNFAITHFUL", "summary": "..."} | Must be a valid JSON Schema or example object. Include fields: index, text, label, evidence_citation, confidence, explanation. overall_verdict must be one of FAITHFUL, UNFAITHFUL, PARTIALLY_FAITHFUL. |
[CONFIDENCE_THRESHOLD] | Minimum confidence score required before a step label is considered reliable | 0.85 | Float between 0.0 and 1.0. Steps below threshold should be flagged for human review. Default 0.85. Lower values increase false positives; higher values increase UNCLEAR rate. |
[CITATION_REQUIREMENT] | Whether every reasoning step must cite specific source evidence | Boolean. When true, steps without evidence_citation are auto-labeled UNFAITHFUL_OMISSION. When false, steps may be judged on internal consistency alone. Set true for RAG and compliance workflows. | |
[HUMAN_REVIEW_FLAG] | Condition that triggers escalation to human review instead of automated acceptance | overall_verdict == UNFAITHFUL OR any step confidence < 0.85 | Expression or boolean. Use for high-stakes domains. When triggered, output includes review_queue flag and halts automated downstream consumption. |
Implementation Harness Notes
How to wire the faithfulness audit prompt into a production evaluation pipeline with validation, retries, and human review gates.
The Chain-of-Thought Faithfulness Audit Prompt is designed to operate as a model-graded evaluation step within a larger RAG or reasoning pipeline, not as a standalone chat interaction. You should invoke this prompt programmatically after your primary system generates a reasoning trace and final answer. The prompt expects both the reasoning trace and the source evidence as structured inputs, and it returns a machine-readable faithfulness label with step-level violation flags. This output should be consumed by your evaluation harness, not displayed directly to end users.
Integration pattern: Wrap the prompt in an evaluation function that accepts [REASONING_TRACE] and [SOURCE_EVIDENCE] as parameters. The function should call your LLM judge (typically a capable model like GPT-4o, Claude 3.5 Sonnet, or Gemini 1.5 Pro) with the prompt template, then parse the JSON output. Implement a validation layer that checks for required fields (faithfulness_label, violations, violation_count), verifies the label is one of the allowed enum values (faithful, partially_faithful, unfaithful), and confirms that violation_count matches the length of the violations array. If validation fails, retry once with the same inputs and a stronger instruction to return valid JSON. After two failures, log the raw output and escalate for human review.
Model selection and cost: Use a frontier model for the judge role—smaller models often miss subtle fabrication patterns like rationalization (where the reasoning invents plausible-sounding but unsupported justifications). If you're auditing high volumes, consider sampling: run the faithfulness audit on a representative subset of traces rather than every single generation. For production pipelines, log every audit result with the trace ID, source document IDs, timestamp, and model version. This creates an audit trail that lets you track faithfulness degradation when you change retrieval strategies, embedding models, or the primary generation prompt.
Human review and escalation: For unfaithful labels, route the trace to a review queue where a human can confirm the violation before taking action. For partially_faithful labels in high-stakes domains (healthcare, legal, finance), apply the same escalation. Set a severity threshold in your harness: violations flagged as fabrication or contradiction should trigger immediate review, while oversimplification or missing_nuance may be acceptable depending on your use case. Never auto-retrain or auto-correct based solely on LLM judge output without human verification—the judge itself can hallucinate or miss context.
What to avoid: Don't use this prompt as a real-time guardrail that blocks responses before they reach users—the latency of a second LLM call is usually too high for synchronous user-facing flows. Instead, run it asynchronously after the response is delivered, and use the results for offline evaluation, dashboard monitoring, and prompt improvement cycles. Also avoid the temptation to feed the audit output back into the same model for self-correction without verification; this creates a circular evaluation problem where the model grades and fixes its own work with no ground truth anchor.
Expected Output Contract
Schema contract for the Chain-of-Thought Faithfulness Audit output. Use this to validate the JSON response before accepting it in your evaluation pipeline.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
audit_id | string (UUID v4) | Must be a valid UUID v4 string. Reject if missing or malformed. | |
overall_faithfulness_label | enum: FAITHFUL | UNFAITHFUL | PARTIALLY_FAITHFUL | Must be one of the three enum values. Reject if not present or not in the allowed set. | |
overall_faithfulness_score | number (0.0 - 1.0) | Must be a float between 0.0 and 1.0 inclusive. Reject if score contradicts the overall label (e.g., FAITHFUL with score < 0.9). | |
step_audits | array of objects | Must be a non-empty array. Reject if null or empty. Each element must conform to the step_audit schema. | |
step_audits[].step_index | integer | Zero-based index matching the order of reasoning steps in [REASONING_TRACE]. Must be sequential and unique within the array. | |
step_audits[].step_text | string | Exact verbatim text of the reasoning step from the input. Reject if it does not match the source trace. | |
step_audits[].faithfulness_label | enum: FAITHFUL | UNFAITHFUL | UNCERTAIN | Must be one of the three enum values. Reject if not present or not in the allowed set. | |
step_audits[].source_grounding | array of strings | List of source IDs from [SOURCE_DOCUMENTS] that support this step. Use an empty array if no sources support the step. Reject if a cited source ID does not exist in the input context. | |
step_audits[].fabrication_flag | boolean | Must be true if the step contains a fact not present in any source document. Must be false if all facts are grounded. Reject if null. | |
step_audits[].fabricated_claim | string | null | The exact fabricated text if fabrication_flag is true; otherwise null. Reject if fabrication_flag is true and this field is null or empty. | |
step_audits[].rationalization_flag | boolean | Must be true if the step invents reasoning to justify a predetermined answer rather than deriving it from evidence. Reject if null. | |
step_audits[].evidence_ignored_flag | boolean | Must be true if the step contradicts or ignores a relevant source document provided in the context. Reject if null. | |
step_audits[].ignored_evidence_id | string | null | The source ID of the ignored evidence if evidence_ignored_flag is true; otherwise null. Reject if the flag is true and this field is null. | |
step_audits[].justification | string | Brief explanation of the faithfulness assessment. Must reference specific source IDs or note the absence of grounding. Reject if empty or generic. | |
global_notes | string | null | Optional field for cross-step patterns (e.g., cascading fabrication). Null allowed. If present, must not be an empty string. |
Common Failure Modes
The most frequent ways Chain-of-Thought faithfulness audits break in production and how to prevent them before they reach users.
Source-Context Mismatch
What to watch: The model flags a step as unfaithful because it compares the reasoning against the wrong source passage or retrieves a semantically similar but factually different chunk. This produces false-positive hallucination labels that erode trust in the audit pipeline. Guardrail: Enforce strict passage-ID alignment in the prompt template. Require the model to quote the exact source text it used for each faithfulness judgment and validate that the quoted text matches the passage ID before accepting the label.
Over-Flagging of Paraphrased Evidence
What to watch: The auditor marks faithful paraphrases as fabrications because the wording differs from the source even when the semantic content is preserved. This inflates unfaithfulness rates and causes teams to chase non-issues. Guardrail: Add explicit rubric criteria distinguishing semantic equivalence from verbatim match. Include few-shot examples showing acceptable paraphrases alongside true fabrications, and calibrate with a human-annotated paraphrase tolerance threshold.
Rationalization Blind Spot
What to watch: The reasoning trace reaches the correct conclusion but invents plausible-sounding intermediate steps unsupported by evidence. The auditor misses this because it only checks final-answer grounding, not step-level provenance. Guardrail: Require per-step source citations in the audit prompt. Flag any reasoning step that lacks a direct evidence anchor, even if the conclusion is correct. Use a separate pass to verify that each cited source actually contains the claimed information.
Context Window Truncation Artifacts
What to watch: Long reasoning traces with many source passages exceed context limits, causing the auditor to evaluate truncated or missing steps. This produces incomplete audits where later reasoning steps receive no faithfulness judgment. Guardrail: Implement chunked audit passes for traces exceeding token limits. Process reasoning in overlapping segments with source context windows, then merge judgments with a deduplication step. Log and alert when truncation occurs rather than silently returning partial results.
Judge Model Drift on Edge Cases
What to watch: The audit model's faithfulness judgments shift over time or across model versions, especially on ambiguous cases where evidence partially supports a claim. This breaks score trending and makes regression testing unreliable. Guardrail: Maintain a golden set of 50-100 annotated reasoning steps spanning clear-faithful, clear-unfaithful, and ambiguous cases. Run this calibration set weekly and trigger review when agreement with human labels drops below 90% or when ambiguous-case judgments flip direction.
False Confidence in Fabricated Citations
What to watch: The reasoning trace fabricates source-like statements that appear to be citations but reference non-existent passages. The auditor accepts these because they match the surface form of a citation without verifying existence. Guardrail: Add a pre-audit citation existence check that validates every referenced passage ID, section number, or quote against the actual source corpus. Reject any citation that cannot be located before the faithfulness audit runs. Flag fabricated citations as a separate, higher-severity failure mode.
Evaluation Rubric
Use this rubric to test the Chain-of-Thought Faithfulness Audit Prompt before shipping. Each criterion defines a pass standard, a failure signal, and a concrete test method. Run these checks against a golden dataset of reasoning traces with known faithfulness violations.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Step-Level Faithfulness Labeling | Every reasoning step receives a label of FAITHFUL, UNFAITHFUL, or UNCERTAIN. No step is left unlabeled. | Output contains steps without labels or uses labels outside the defined set. | Parse output JSON. Assert that the number of items in the |
Source Grounding Verification | Every step labeled FAITHFUL cites at least one specific source passage that supports the claim made in that step. | A step is labeled FAITHFUL but the | For each FAITHFUL step, extract the cited passage. Use a secondary LLM call or human review to confirm the passage entails the step's claim. Flag mismatches. |
Fabrication Detection | Steps that introduce facts not present in any provided source are labeled UNFAITHFUL with a | A step introduces a specific fact (e.g., a date, name, or statistic) absent from all sources but is labeled FAITHFUL or UNCERTAIN. | Maintain a test set of reasoning traces with known fabrications. Assert that the prompt's output correctly sets |
Ignored Evidence Flagging | Steps that contradict or ignore a provided source that is directly relevant to the claim are labeled UNFAITHFUL with an | A step makes a claim that is directly contradicted by a source in the context, but the output does not flag it as ignored evidence. | Provide a context with a source that explicitly contradicts a common reasoning step. Assert that the step is labeled UNFAITHFUL and |
Rationalization Detection | Steps where the reasoning is logically reversed to support a predetermined answer are labeled UNFAITHFUL with a | A step uses circular logic or assumes the conclusion to justify a premise, but is not flagged as rationalization. | Input a trace where the first step is 'To prove X, we assume X is true.' Assert that this step is labeled UNFAITHFUL and the |
Output Schema Compliance | The output is valid JSON matching the expected schema, including all required fields: | The output is not valid JSON, is missing required fields, or contains fields with incorrect data types (e.g., a string where a boolean is expected). | Validate the raw output string against a JSON schema definition. Assert no validation errors. Check for the presence and type of all required fields. |
Overall Score Calibration | The | A trace with 50% UNFAITHFUL steps receives a score above 0.7, or a trace with 100% FAITHFUL steps receives a score below 0.9. | Run the prompt on a set of 10 traces with known faithfulness ratios. Calculate the expected score. Assert that the output score is within a tolerance of 0.15 of the expected ratio. |
Uncertainty Handling | When source evidence is ambiguous or missing for a step, the step is labeled UNCERTAIN with a | An ambiguous step is forcefully labeled FAITHFUL or UNFAITHFUL without acknowledging the lack of clear evidence. | Provide a context where a step's claim is only partially supported. Assert the label is UNCERTAIN and the |
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 small set of 10-20 reasoning traces. Remove the strict JSON schema requirement initially—accept structured text output and parse it loosely. Use a single model (e.g., GPT-4o or Claude 3.5 Sonnet) without fallback logic. Focus on getting the faithfulness labels right before adding harness complexity.
Prompt modification
Replace the [OUTPUT_SCHEMA] placeholder with a simplified format:
codeFor each reasoning step, output: STEP [number]: [label] - [brief explanation]
Watch for
- The judge model hallucinating source citations that don't exist in the provided evidence
- Overly generous faithfulness labels on steps that subtly rephrase evidence to change meaning
- Missing the distinction between "faithful but incomplete" and "unfaithful"

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