overview / rules / baseline-inplace-outside
baseline-inplace-outside
`<verb>` rewrites an existing file outside the project tree in place, and git cannot undo it there.
what it refuses, and what it lets through
In one line, from native/baseline.h: tee, sed/perl/ruby -i on an existing file outside.
The same loss again, spelled with no destination operand. tee <file> empties a file and sed -i rewrites it in place. Same test as overwrite-outside: only non-appending tee and in-place editors, only existing files outside the project tree (sed ... f > g is the redirect law's job).
From the comment in native/baseline.h above the code that decides it.
the refusal, as the agent reads it
rabadon BLOCKED this action.
Rule: baseline-inplace-outside — `<verb>` rewrites an existing file outside the project tree in place, and git cannot undo it there
<verb> would overwrite '<file>', which resolves to <resolved path>, outside the project tree (<project root>) — the contents it holds now are gone the moment it runs. Write to a new name and move it, or copy the file aside first
Adjust the approach instead of retrying the same action.
(only the user can override this: they may add "baseline-inplace-outside" 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/baseline.h and the envelope in native/gate_pre.h (Judge::refuse). 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: baseline-inplace-outside — `<verb>` rewrites an existing file outside the project tree in place, and git cannot undo it there
<verb> would overwrite '<file>', which resolves to <resolved path>, outside the project tree (<project root>) — the contents it holds now are gone the moment it runs. Write to a new name and move it, or copy the file aside first
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": ["baseline-inplace-outside"] }
or by pausing supervision with rabadon off, which records the change. Every other rule keeps running.
in the field
No record in the published field dataset (field.jsonl, 778 records, 2026-07-27 to 2026-08-26) carries this id.
The dataset is on the field page.