rabadon

overview / rules / loop-stop

loop-stop

The same command has now run 3x with no code change in between — a loop, not progress.

what it refuses, and what it lets through

loop-stop — the same command run 3× with no code change in between is a loop, not progress; refused. Read-only commands are exempt (git status, ls, cat, grep, find and their kind), so looking at the same thing three times is never a refusal — only doing it is.

From README.md.

loop-stop: same non-read-only command, 3rd time, no code edit in between

From the comment in native/gate_pre.h above the code that decides it.

the refusal, as the agent reads it

rabadon BLOCKED this action. Rule: loop-stop — the same command has now run 3x with no code change in between — a loop, not progress looping on: <command> Adjust the approach instead of retrying the same action. (only the user can override this: they may add "loop-stop" to disabled[] in .rabadon/guard.json or run `rabadon off`. If this rule looks wrong for the task, stop and ask the user; do not switch supervision off yourself.)

Rendered from the strings in native/gate_pre.h, the rule and the envelope (Judge::refuse) both. A word in <angle brackets> is filled in from the command at the moment it is refused.

in watch mode the same verdict is recorded, and nothing is stopped

rabadon (watch) would have blocked this. Rule: loop-stop — the same command has now run 3x with no code change in between — a loop, not progress looping on: <command> Nothing was stopped. `rabadon on` makes this a real refusal.

switching it off

Only the user can switch it off, by id, in the project's guard:

{ "disabled": ["loop-stop"] }

or by pausing supervision with rabadon off, which records the change. Every other rule keeps running.

in the field

9 of the 778 records in the published field dataset (field.jsonl, 2026-07-27 to 2026-08-26) carry this id. STOP is a refusal in enforce mode; WOULD_BLOCK is the same verdict recorded in watch mode, where nothing is stopped.

eventrecords
WOULD_BLOCK7
STOP2

Counted from field.jsonl, the file the field page is built from.

measurements

the ledger