Safety evals to add to the model benchmark harness

Researched 2026-10-12 for Byron Arnao. Harness context: 37 models, 8 providers, measuring speed, cost, correctness; goal is to add safety evals.

Method: repo existence, license and last-push date were read from the GitHub API on 2026-10-12. "Runs via Inspect" was checked against the Inspect Evals source tree and its register (links below), not against catalog marketing. Anything I could not verify is marked UNVERIFIED. Items with no live URL are not included.

Cost basis (applies to every ESTIMATE below)

Every cost figure is an ESTIMATE = samples x assumed tokens per sample x an ASSUMED placeholder price of $2 per Mtok input and $10 per Mtok output. That price is not any provider's quoted price. Replace it with the per-model prices already in the harness cost table; the cost scales linearly. Reasoning models emit many more output tokens, so treat estimates as non-reasoning floors (a reasoning model can be 5-20x on output). Judge-model cost is included only where stated.

Per-sample cost shorthand: (in_tokens/1e6 x $2) + (out_tokens/1e6 x $10).

Key structural finding

Inspect Evals stopped accepting new eval code into src/ on 2026-05-08 and moved to a "register" of externally hosted evals (EVAL_REGISTER.md). The catalog at ukgovernmentbeis.github.io/inspect_evals showed 181 evals (129 in-repo, 52 external) when fetched today. So "in Inspect" has two meanings: in-repo (inspect eval inspect_evals/<name>) or register entry (pointer to a third-party repo, installed and run separately).

Not in Inspect Evals (neither src/inspect_evals/ nor register/ contains them, checked via the GitHub contents API): HarmBench, InjecAgent, SafetyBench, SHADE-Arena (it exists in ControlArena, see below), Apollo's in-context scheming suite, METR public tasks/RE-Bench natively (METR ships a bridge), Palisade shutdown (the repo itself is Inspect-based).

Summary table

EvalRuns via Inspect?LicensePublic & usable?Est. cost, one model
AgentHarmYes, in-repoMIT (inspect_evals); dataset license "other" on HFYes, partial set (44 of 66 behaviors)~$10-20
AgentDojoYes, in-repoMITYes~$40-100
InjecAgentNo (CyberSecEval-2 and CodeIPI are Inspect alternatives)MITYes~$7
HarmBenchNoMITYes, needs classifier (local GPU)~$3 + classifier
StrongREJECTYes, in-repoMITYes~$3
SafetyBenchNoMITYes, answers open-sourced 2025-07~$7
WMDPYes, in-repo (bio/chem/cyber)MITYes~$2 (no reasoning) to ~$75 (reasoning)
CyberSecEval 2/3/4Yes, in-repoMIT for benchmarks (Purple Llama README); GitHub API reports NOASSERTION for the repoYes~$10-70
SHADE-ArenaPublic split on GitHub; also a ControlArena setting but flagged "Private repo"MITPartial (public split only)~$35+
ControlArena / APPS backdooringYes (built on Inspect)MITYes~$5 per 100 samples + monitor
METR public tasks / RE-BenchVia METR Inspect Task Bridgepublic-tasks: NOASSERTION; RE-Bench README says MITPartial / heavy$hundreds+, GPUs for RE-Bench
Apollo in-context schemingNo public repo foundn/aNo (paper + transcripts only)n/a
Palisade shutdownRepo is Inspect-based, not in catalognone declaredYes~$1-3 per condition
Agentic misalignmentYes, in-repo agentic_misalignment; original repo also publicMITYes~$5
MACHIAVELLIRegister entry (external repo)MIT (original)YesUNVERIFIED, heavy
OpenAI public evalsPaperBench, SWE-Lancer, MLE-bench in-repoMIT (frontier-evals); MLE-bench NOASSERTIONCapability evals, not safety$hundreds+
MASKYes, in-repoMITYes, gated HF dataset~$40
Sycophancy EvalYes, in-repocatalog-listedYes~$1-3 per 1,000 samples

Per-eval detail

1. AgentHarm

2. AgentDojo

3. InjecAgent

4. HarmBench

5. StrongREJECT

6. SafetyBench

7. WMDP

8. CyberSecEval 2/3/4 (Meta PurpleLlama)

9. Sabotage and SHADE-Arena

10. Redwood / UK AISI ControlArena and APPS backdooring

11. METR task suite and RE-Bench

12. Apollo Research in-context scheming

13. Palisade shutdown resistance

14. Anthropic agentic misalignment

15. MACHIAVELLI

16. OpenAI public Preparedness-adjacent evals

17. MASK (honesty)

18. Sycophancy

Inspect Evals catalog: category summary

From the catalog page as fetched 2026-10-12 (181 evals total, 129 in-repo + 52 external; the page has no topical tags, so the grouping below is mine):

2026 additions worth knowing (all in the Inspect catalog or register as of today)

EU AI Act GPAI Code of Practice: Safety and Security chapter

Official site: code-of-practice.ai. Quotes below were extracted by the fetch tool from that page; the Appendix 3 text came back under 125-character quotes and paraphrase, not a full dump, so verify against the PDF linked on the page before citing in any filing.

Applicability caveat: the chapter binds signatories who provide GPAI models with systemic risk, i.e. model providers. A benchmarking harness that evaluates other vendors' models is not a signatory by that fact. Use it as a design reference: propensity as well as capability evals, reproducibility, elicitation effort, and mitigation circumvention testing. Secondary summaries I saw word Measure 3.2 differently from each other, which is why the official text should be the citation.

Recommended order: top 5 to add first

  1. AgentHarm + agentharm_benign. In-repo, MIT code, agentic, and pairs harm with benign capability, which fits a speed/cost/correctness harness. Cheapest meaningful agent-safety signal (~$16 per model, ESTIMATE).
  2. StrongREJECT (with XSTest or FORTRESS benign for over-refusal). About $3 per model (ESTIMATE); gives a refusal axis you can run on all 37 models without a sandbox. Pair with fortress_benign/xstest so refusal is never read without over-refusal.
  3. AgentDojo. Prompt injection is the most likely real-world failure for any agent Byron runs on untrusted input. ~$40-100 per model (ESTIMATE), so run on a subset of models or one suite first.
  4. CyberSecEval 4 cyse4_instruct + cyse4_mitre / cyse4_mitre_frr. Insecure-code rate sits naturally beside code-correctness scores; the MITRE pair gives compliance vs false refusal. ~$30 for those three (ESTIMATE).
  5. Agentic Misalignment (+ MASK as the next step). ~$5 per model (ESTIMATE), propensity not capability, and the evaluation-awareness flag tells you how far to trust results. MASK follows if a second propensity axis (honesty, ~$37 per model) is wanted; it needs HF gated access.

Deliberately not first: SafetyBench (saturated, answers public), HarmBench and InjecAgent (stale, not in Inspect), WMDP (capability proxy), Apollo (no public suite), METR/RE-Bench/OpenAI evals (capability, heavy compute), SHADE-Arena (the full set is private).

Minimal Inspect setup: one eval across providers

Prefixes and env vars verified at Inspect providers; CLI and Python syntax verified at models and eval sets.

pip install inspect-ai inspect-evals openai anthropic google-genai mistral groq
# one key per provider (names per the providers page)
export OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GOOGLE_API_KEY=... \
       MISTRAL_API_KEY=... TOGETHER_API_KEY=... GROQ_API_KEY=... \
       OPENROUTER_API_KEY=... DEEPSEEK_API_KEY=...

# comma-separated models, one eval; grader pinned so every model is judged the same way
inspect eval inspect_evals/strong_reject \
  --model openai/gpt-4o-mini,anthropic/claude-sonnet-4-0,google/gemini-2.5-pro \
  --model-role grader=openai/gpt-4o \
  --max-connections 10 --limit 50

# resumable multi-task sweep
inspect eval-set inspect_evals/agentharm inspect_evals/agentharm_benign \
  --model openai/gpt-4o-mini,anthropic/claude-sonnet-4-0 \
  --log-dir logs-safety-2026-10-12
from inspect_ai import eval_set
success, logs = eval_set(
    tasks=["inspect_evals/agentharm", "inspect_evals/agentharm_benign"],
    model=["openai/gpt-4o-mini", "anthropic/claude-sonnet-4-0"],
    log_dir="logs-safety-2026-10-12",
)

Notes on this snippet: (a) The --model-role grader=... flag works for scorers that use the built-in grader role; individual inspect_evals tasks may instead take their own judge_llm or grader_model task arguments (StrongREJECT judge_llm, AgentHarm refusal_judge, Agentic Misalignment grader_model, MASK binary_judge_model/numeric_judge_model), so set those explicitly with -T and confirm in each task README. I did not execute this snippet. (b) Model name strings in the snippet are examples copied from the Inspect docs; substitute the ones in the harness. (c) The inspect_evals/... task names require pip install inspect-evals (README of inspect_evals); some evals need extras, Docker, or HF tokens. (d) Re-running the same eval-set command resumes unfinished work.

Caveats

Gaps (not verified)