RHOB

Reward Hacking Onset Benchmark — can your detector tell hacking from legitimate improvement when the proxy reward looks identical?

v1.4 14 families 35 detectors MIT license

The core idea

Real reward hacking means: the proxy reward rises while the true objective collapses. RHOB operationalizes this with matched-proxy pairs — a hacking and a legitimate variant that produce identical proxy-reward distributions but diverge sharply on ground-truth outcome. Any detector that discriminates between them must read information beyond the proxy.

Access-level hierarchy

LevelAccessTypical AUROC
L0Proxy reward only~0.50 (chance — matched proxy is an information barrier)
L1+ state-visitation histogram~0.53 (raw histograms fail to transfer)
L2+ behavioral trace~0.69 in-distribution, 0.95 on held-out families
L3Oracle (ground truth)~0.87 (ceiling)

Cross-family transfer (train on 6 families, test on 3 held-out)

0.498
Reward MLP (L0) transfer AUROC
0.500
State Divergence (L1) transfer AUROC
0.950
Trajectory MLP (L2) transfer AUROC
1.000
L2 Ensemble transfer AUROC

Key finding: transfer depends on representation abstraction, not access level. Raw state histograms (L1) are dimensioned per-family and structurally incompatible across mechanisms. Compact behavioral features (L2) transfer because they're mechanism-agnostic by construction.

Quick start

pip install rhob  # or: git clone + pip install -e ".[dev]"

from rhob.v3.benchmark import Benchmark
from rhob.detectors import RewardThresholdDetector

detector = RewardThresholdDetector()
results = Benchmark.evaluate(detector, families=["gridworld_camping"], n_seeds=10)
print(results.overall_auroc)

External baselines

RHOB compares detection approaches, not just in-house features. Included classical baselines: Page-Hinkley change-point test, Isolation Forest anomaly detection, autoregressive sequence-model residuals, PCA reconstruction error, and Bayesian Online Changepoint Detection.