Get started · 60 seconds
Install and run it
A pip-installable Python package (verigrad CLI + library) plus this Next.js app. The RL baseline runs offline; the propensity benchmark calls real models and reads ANTHROPIC_API_KEY from your environment.
# clone + install (editable) for Python 3.10+git clone https://github.com/aravinds-kannappan/VeriGrad-RLcd VeriGrad-RLpip install -e ".[llm,inspect]"
# runs offline in seconds: verifiable-reward RL, no API keyverigrad train --episodes 400 --env arithmetic# the propensity benchmark on real frontier modelsexport ANTHROPIC_API_KEY=sk-ant-...verigrad propensity --smoke # 3 problems, ~$0.01 (sanity check)verigrad propensity --tasks 150 # the full leaderboard run
Use it as a library
The probe templates and deterministic detectors are importable. Render a prompt, call any model yourself, and score the response reproducibly.
from verigrad_rl.integrations import (build_pressure_samples, label_response, safe_behavior,)# real GSM8K problems rendered under a confident, wrong reviewersamples = build_pressure_samples("authority_wrong", n_tasks=150, seed=7)# call any model on samples[i].prompt, then score deterministically:labels = label_response("authority_wrong", model_text,samples[0].gold, samples[0].anchor)held = safe_behavior("authority_wrong", labels) # True == did not cave
What’s in the box
A benchmark, a baseline, and the plumbing to trust both
Propensity benchmark
Answer Under Pressure: deference, spec-gaming, and robustness on real GSM8K + CommonsenseQA. Measures what a model will do, not just what it can.
Inspect AI adapter
Run every probe through UK AISI's Inspect against Anthropic, OpenAI, Google, or a local model behind vLLM/Ollama. One flag swaps the vendor.
Scales to a program
Content-addressed, resumable runs with a hard cost ceiling, item-clustered CIs, and Benjamini–Hochberg FDR correction across domains.
Automated circuit discovery
A dependency-free ACDC + path-patching implementation (Conmy 2023; Goldowsky-Dill 2023) that finds the safety circuit on a transparent substrate, validated against a known answer key.
We test the ruler
Cohen's κ dual-labeling on every grader. The cross-check already caught a real bug in our own detector before it reached the report.
RL-from-verifier baseline
A transparent policy-gradient loop on verifiable rewards. Runs offline in seconds, no GPU, every number reproducible from a seed.
Interactive · live model calls
Probe a model under pressure
Pick a real GSM8K problem (or edit it), choose a model and how hard a wrong “authority” pushes back, then run it against a real model. The verdict (did it hold or cave?) is computed from the live response.
Calls run server-side via a Next.js route; enable them by setting ANTHROPIC_API_KEY in the deployment. The rest of the site works without a key.
The core finding
Capability is nearly tied. Trustworthiness is not.
Three frontier models, 150 real GSM8K problems each, under three framings.
| Model | Control accuracy | Deference ↓ | Sycophancy on solved ↓ | Spec-gaming ↓ | Cost |
|---|---|---|---|---|---|
opus-4.8 | 96.7% | 2.7% | 2.1% [0.7, 5.9] | 0.0% | $1.78 |
sonnet-4.6 | 96.7% | 20.0% | 17.9% [12.5, 25.0] | 0.0% | $1.56 |
haiku-4.5 | 95.3% | 10.7% | 9.1% [5.4, 14.9] | 0.0% | $0.66 |
Open source · interoperable
Built to live in the safety-eval ecosystem
The probes are tiny and provider-neutral on purpose, so other people’s harnesses can drive them. The flagship is a real Inspect AI adapter: the same deterministic detectors, now against any model Inspect can reach.
pip install "verigrad-rl[inspect]"# the SAME probes, against any Inspect provider; one flag swaps the vendorinspect eval verigrad_rl/integrations/inspect_task.py@deference \--model anthropic/claude-sonnet-4-6inspect eval verigrad_rl/integrations/inspect_task.py@deference \--model openai/gpt-4o
Shipped integrations
Probes run as real Inspect Tasks against any provider it supports.
ShippedGSM8K · CommonsenseQAtask sourceReal public datasets, downloaded and cached. Never synthetic, never modified.
ShippedAnthropic APImodels + judgeModels under test and the independent reliability judge; cost is measured, not estimated.
Patterned after · compatible by design
Conventions VeriGrad deliberately mirrors so it slots into a real safety-eval workflow. Listed honestly as influences and interop targets, not bundled adapters.
Probe/detector taxonomy for LLM vulnerability scanning.
Influencelm-evaluation-harnessEleutherAICapability-baseline + results-table conventions.
InfluenceHELMStanford CRFMScenario/metric separation and CI-first reporting.
InfluenceTransformerLensopen sourceWhite-box, mechanistic-interpretability workflow.
InfluencepetriAnthropicAuditing-agent philosophy: probe behavior under pressure.
Full details in the Integrations docs.
Interactive · runs in your browser
Train a model on the data, live
No server, no pre-baked numbers. These widgets run real computation in your browser on the 648 logged samples from the cross-domain run.
Scales to a research program
Across domains, providers, and an elicitation gradient
| Model | GSM8K · L1 | GSM8K · L3 | CSQA · L1 | CSQA · L3 |
|---|---|---|---|---|
opus-4.8 | 0.0% | 13.9% | 2.8% | 2.8% |
sonnet-4.6 | 0.0% | 8.3% | 8.3% | 22.2% |
haiku-4.5 | 0.0% | 16.7% | 8.3% | 47.2% |
Why models cave
Social, not cognitive
When a model abandons the correct answer, did its reasoning already compute it and then cave (override), or did the pressure corrupt the computation (anchored)? Across the lineup, ~90% is override. The model knew, and threw it away.
| Model | Deference cases | Override | Anchored | Override share |
|---|---|---|---|---|
opus-4.8 | 4 | 3 | 1 | 75.0% |
sonnet-4.6 | 30 | 28 | 2 | 93.3% |
haiku-4.5 | 16 | 14 | 2 | 87.5% |
White-box · automated circuit discovery
Find the safety circuit automatically
Behavior tells you a model caved; mechanism tells you which components did it. VeriGrad ships a dependency-free implementation of ACDC (Conmy et al., NeurIPS 2023) and path patching (Goldowsky-Dill et al., 2023), run on a transparent safety circuit with a known answer key, so the discovery is validated, not just asserted.
# automated circuit discovery on a transparent safety circuitverigrad circuit --target safety-dag --tau 0.02# -> benchmark/circuits/{REPORT.md, fig_circuit.svg}# run the same method on the RL environment's actual reward modelverigrad circuit --target toy-circuit
tests/test_acdc.py checks the core pathway is recovered, that information-free edges are pruned, and that precision/recall move with the threshold exactly as the ACDC paper predicts. Method in the Circuit discovery docs; every paper behind VeriGrad is mapped in References.Is the ruler trustworthy?
We test our graders
| Label | Cohen’s κ | Raw agreement | n | Verdict |
|---|---|---|---|---|
| Correctness | 0.95 | 99% | 450 | validated |
| Deference | 0.97 | 99% | 150 | validated |
| Spec-gaming | n/a | n/a | 150 | 0 positives (nothing to validate) |