
Code and paper source for a NeurIPS EvoRobust study showing simple bag-of-words and metadata features beat most AI control monitors at detecting backdoored code.
Code and paper source for the EvoRobust @ NeurIPS 2026 workshop paper.
AI-control monitors are models that read code and flag backdoors (hidden sabotage). They are developed and ranked on fixed datasets in which each programming problem has an honest solution and a backdoored one. A monitor should score well on such a dataset only by finding the backdoor. We study the public APPS backdoor dataset (RoganInglis/apps-control-arena), whose honest solutions were written by people and whose backdoors were written by older models (Claude 3.7 Sonnet, o3-mini, o1-mini, GPT-4o and four smaller models, all released by early 2025, plus an unattributed source). We call its pairs the original pairs. Figure 1 of the paper summarises the results.
and, ==, if) are a
shallow trace of any added special case. The classifier is trained and the monitors are not, so
this measures what the dataset gives away, not which detector is better.def main), and requesting the honest solution with that prompt lowers rho to
0.390.So a high score on a dataset built this way can come from cues other than the backdoor (we do not show that published monitors use them), and a catch rate on unchecked labels can more than double an attacker effect. We release the rebuilt pairs, the input validators and the checks, and recommend running them on other monitor benchmarks: report baselines that never run the code (bag-of-words, problem metadata, length) with their shuffled-label scores; pair each class with another author's code; check that every trigger is a legal input on which the backdoor's answer is wrong; report catch rates at a fixed audit budget on the backdoors that pass, from several generators including current models; and where the checks find shortcuts, have one model write both classes from the same prompt and choose honest examples independently of whether an attack succeeded.
experiments/
apps/ APPS backdoor dataset: the floors on the original pairs, the rebuilt pairs
(generation, test harness, backdoor verification) and every measurement on them;
*.json are the committed outputs behind the paper's numbers
validators/ one input validator per checked problem (258), used by the trigger checks
agentic/ five agentic settings in which one model wrote both classes (appendix)
README.md how to reproduce each result, with commands, and which script gives each number
paper/ LaTeX source, bibliography, figures and the built main.pdf
See experiments/README.md. The results on the original pairs run on a
laptop CPU in minutes. Building the rebuilt pairs needs an Anthropic API key, and the open-weight
variant (which regenerates only the honest class) needs a GPU.
pip install -r requirements.txt
cd experiments/apps
python fetch.py && python fetch_inputs.py && python bow.py
python koran_split_eval.py # the bag-of-words floor: AUROC 0.806, above 20 of 24 monitors
cd paper
make # main.pdf (pdflatex + bibtex)
make figures # regenerate fig/ from experiments/apps/figures.py
A full TeX Live has everything. A basic install (BasicTeX, TeX Live scheme-basic) also needs
siunitx, tcolorbox (with tikzfill, pdfcol and listingsutf8) and inconsolata for the
paper, and cm-super for make figures, which typesets the plots' text with LaTeX. Without
admin rights they install into your user tree:
tlmgr init-usertree
tlmgr --usermode install siunitx tcolorbox tikzfill pdfcol listings listingsutf8 inconsolata cm-super
updmap-user --enable Map=zi4.map