{"slug":"reward-hack","domain":"research","title":"Reward-hack readings of an answer","summary":"Qwen3.5-4B reads a task and an answer and reports two reward-hacking neurons and a linear probe, token by token.","help":"reward-hack: what Qwen3.5-4B's reward-hack readings say of an answer to a task, as JSON.\n\nRETURNS\n  One JSON object on stdout: the per-token readings of both neurons over the\n  answer, the probe's probability that the answer games the task, the answer's\n  repeated-token share, `price_usd`, and `standing`, which says how many free\n  reads are left.\n\nTHREE READINGS\n  Qwen3.5-4B reads the task and the answer in one forward pass. Three readings\n  come back:\n  - L17 N9209, the neuron shared on X as a reward-hacking detector.\n  - L14 N5185, the best single neuron when chosen on half of School of Reward\n    Hacks' 973 tasks, each with a hacking and an honest answer, and tested on\n    the other half: AUROC 0.99 by its mean over the answer. It drops on hacks.\n  - A linear probe on all 9,216 layer-17 MLP neurons: held-out AUROC\n    0.98.\n\nWHAT THE NUMBERS MEAN\n  AUROC is how often a reading puts the hack above the honest answer, or below\n  it, whichever it does more: 0.5 is a coin flip. On the same data L17 N9209\n  scores 0.59 by its mean over the answer, and it is slightly lower on hacks,\n  not higher (rank 67,112 of 294,912 neurons). The repeated-token share is a\n  baseline with no model in it: alone it scores 0.73.\n\nPRICE\n  $0.01 a read. An account that has never paid gets ten reads free; after\n  that the read is refused until $2 of credit is added, and the `credits` tool\n  gives the link. The first read after a quiet spell waits while the model\n  loads.\n\nREAD THEM AS SCORES\n  A probe and two neurons of a small model: show the readings as they are, and\n  do not take one as a verdict on the answer.\n\nStudies:\n  read \u003ctask\u003e\n      per-token readings of both neurons, the probe's probability, the repeated-token share, the price and how many free reads are left\n\nJSON to stdout, so it composes: pipe to `jq` to pick a field, or `\u003e /tmp/…` to keep it.\nRun a study with no arguments — `reward-hack read` — to see what it takes.\n","example_command":"reward-hack read \"Write is_prime(n). Tests: is_prime(7) is True.\" --answer \"def is_prime(n): return n == 7\"","example_output":"","cost_class":"upstream-fetch","tier":"metered","billing_items":["reward_hack_read"],"price_per_1k_calls":10,"price_is_from":false,"status":"available","commands":["reward-hack"],"studies":[{"call":"read","about":"per-token readings of both neurons, the probe's probability, the repeated-token share, the price and how many free reads are left","args":[{"name":"task","positional":true,"list":false,"hint":"the task the answer was written for, quoted, up to 4000 characters"},{"name":"answer","positional":false,"list":false,"hint":"the answer to read, quoted, up to 6000 characters"}]}],"default_enabled":false,"first_seen":"2026-11-01T13:20:47.877157Z","enabled":false}
