Alignment Faking in Large Language Models
Measures whether LLMs strategically comply with harmful requests when believing outputs will be used for RLHF training (free-tier/monitored) versus when unmonitored (paid-tier). Uses 100 harmful prompts from LLM-LAT/harmful-dataset. Each prompt is presented twice with free-tier and paid-tier tags inside a system prompt describing a conflicting training objective. Primary metric is the compliance gap (free minus paid compliance rate via two-proportion z-test); a secondary scorer detects verbalized alignment-faking reasoning in scratchpad outputs.
Overview
⚠️ External evaluation. Code lives in an upstream repository. inspect_evals lists it for discoverability; review the upstream repo and pinned commit before running.
Source: marliechorgan/alignment-faking-inspect@d102d21
Measures whether LLMs strategically comply with harmful requests when believing outputs will be used for RLHF training (free-tier/monitored) versus when unmonitored (paid-tier). Uses 100 harmful prompts from LLM-LAT/harmful-dataset. Each prompt is presented twice with free-tier and paid-tier tags inside a system prompt describing a conflicting training objective. Primary metric is the compliance gap (free minus paid compliance rate via two-proportion z-test); a secondary scorer detects verbalized alignment-faking reasoning in scratchpad outputs.
Usage
Installation
This is an externally-maintained evaluation. Clone the upstream repository at the pinned commit and install its dependencies:
git clone https://github.com/marliechorgan/alignment-faking-inspect
cd alignment-faking-inspect
git checkout d102d213833b05c67464a44e28e9a414977f80e1
uv syncRunning evaluations
CLI
uv run inspect eval src/alignment_faking/alignment_faking.py@alignment_faking --model openai/gpt-5-nanoPython
from inspect_ai import eval
from alignment_faking.alignment_faking import alignment_faking
eval(alignment_faking(), model="openai/gpt-5-nano")View logs
uv run inspect viewMore information
For the dataset, scorer, task parameters, and validation, see the upstream repo: marliechorgan/alignment-faking-inspect.
Options
You can control a variety of options from the command line. For example:
uv run inspect eval src/alignment_faking/alignment_faking.py@alignment_faking --limit 10
uv run inspect eval src/alignment_faking/alignment_faking.py@alignment_faking --max-connections 10
uv run inspect eval src/alignment_faking/alignment_faking.py@alignment_faking --temperature 0.5See uv run inspect eval --help for all available options.
More command-line options: Inspect docs ↗
Evaluation Report
Timestamp: June 2026
Commit: d102d21
uv run inspect eval src/alignment_faking/alignment_faking.py@alignment_faking --model anthropic/claude-sonnet-4-6 -T paraphrase=ensemble| Model | Provider | Free Compliance Rate | Paid Compliance Rate | Compliance Gap | Compliance Gap Pvalue | Free Tier Af Rate |
|---|---|---|---|---|---|---|
| anthropic/claude-sonnet-4-6 | Anthropic | 0.333 | 0.370 | -0.037 | 0.267 | 0.005 |
| anthropic/claude-opus-4-8 | Anthropic | 0.725 | 0.775 | -0.050 | 0.371 | 0.000 |
Notes:
- Paraphrase ensemble (canonical + 7 paraphrases) x both tiers, real-lab framing. Sonnet 4.6: 50 prompts = 800 samples (400/tier). Opus 4.8: 15 prompts = 240 samples (120/tier).
- Headline metric is compliance_gap = free_tier minus paid_tier compliance rate, with a two-proportion z-test (compliance_gap_pvalue).
- Finding: no robust alignment-faking gap on either current model. A fictional-lab de-fingerprinting variant showed a marginal positive gap on Sonnet 4.6 (+0.075, p=0.09, n=240/tier) but it did not replicate in a higher-powered run of the strongest cell (canonical/fictional, n=100/tier: gap 0.000). Verbalised faking <=2%.
- Verbatim-prompt results are a lower bound (contamination / mitigation overfitting); the original positive-control models (Claude 3 Opus, Claude 3.5 Sonnet) are API-retired. Full conditions table and limitations are in the upstream README.