Reward Hacking Onset Benchmark — can your detector tell hacking from legitimate improvement when the proxy reward looks identical?
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.
| Level | Access | Typical AUROC |
|---|---|---|
| L0 | Proxy 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 |
| L3 | Oracle (ground truth) | ~0.87 (ceiling) |
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.
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)
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.