Home / Projects / NiPlex-Harness / Safety model / Approval gate

Pictures

Approval gate

Every run_code call is scanned and scored FREE, LOW, MEDIUM or HIGH. MEDIUM and HIGH wait for a button press. See approval-gate.json for the decision table.

Since 2 Sept 2026 · Updated 29 Oct 2026

Risky things wait for a button

Levels

  • HIGH: recursive delete, disk tools, curl piped to a shell, subprocess, eval, exec, sockets, edits to protected paths.
  • MEDIUM: git push, git reset --hard, package installs, chmod, chown, writing files.
  • LOW and FREE: everything else that is simple. LOW runs when AUTO_APPROVE_LOW is on.

Buttons

Allow Once, Allow Session, Always Allow (exact command), Deny.

Saved state

Pending requests are saved per session. Always Allow is saved in a shared file. Allow Session and the /allow window are memory only.

Limits

Scanning is by pattern. A command can be disguised.

Decision table

ActionExampleDecisionButtonsRemembered forSurvives restartNotes
run_code, low riskprint(2+2)allownoneYesRuns at once when AUTO_APPROVE_LOW is on. Detail: -
run_code, medium riskpip install requestsaskAllow Once, Allow Session, Always Allow, Denyone pressNoMEDIUM needs a button. Detail: Allow Once: this call. Allow Session: until /reset or restart.
run_code, high riskshutil.rmtree on a folderaskAllow Once, Allow Session, Always Allow, Denyone pressNoHIGH needs a button every time unless an /allow window is open. Detail: Allow Once only is advised. Allow Session does not cover HIGH.
run_code, exact repeata command saved with Always Allowallowexact normalized text, all chatsYesChecked first. Only an identical command matches. Detail: data/always_allow.json
shell command, hard blockreading the harness secret filesdenyneverYesNever runs, even with /allow. Detail: -
shell command, high riskrecursive deleteaskAllow Once, Allow Session, Always Allow, Denyone pressYesUnder SHELL_APPROVAL=risky. Detail: shell Always Allow uses the prefix '$ '
shell command, medium riskgit pushaskAllow Once, Allow Session, Always Allow, Denyone pressYesUnder SHELL_APPROVAL=risky. Detail: as above
file tool on core codecreate_file in a protected folderdenyneverYesFile protection is separate from the approval gate. No button exists. Detail: -
/allow window openany code, including HIGHallow5, 10 or 30 minutesNoWindow is lost on restart. Shell hard blocks still apply. Detail: in memory only
pending approval after restarta waiting requestaskAllow Once, Allow Session, Always Allow, Denyuntil answered or /resetYesRequests are saved per session. Detail: data/pending_approvals

Checked against the source at commit f4fd89f on 29 Oct 2026. Everything here is merged on the main branch; no release has been tagged yet. The source is private, so these pages are the public description.