본문으로 건너뛰기

Safety Net — 하나의 마켓: MCP 서버, 스킬, 플러그인

플러그인v0.1.0AGPL-3.0-onlyfirst-partyplugin

Safety Net

9Code Labs

A second look before a destructive shell command, and a nudge when a test run prints FAIL.

설치

$ rovecode market install plugin:safety-net
무엇을 실행하는가
환경 변수
없음 — 키가 필요하지 않습니다.
직접 입력
runs code: this plugin ships an entry module that rovecode imports in-processcontributes: tools, hooks
어디에 놓이는가
사용자 범위는 ~/.rovecode에 쓰며 모든 프로젝트에서 보입니다. 프로젝트 범위는 이 저장소에 쓰며 신뢰 게이트를 거칩니다. rovecode는 무언가를 쓰기 전에 설치 계획에서 정확한 파일을 보여 줍니다.
이 저장소에서
src/market/catalogs/plugins.json

github.com ↗

문서

제공: 9Code Labs · AGPL-3.0-only · 출처 ↗

A second look before a destructive shell command, and a nudge when a test run prints FAIL.

Two hooks. That is the entire plugin.

What it does

pre_tool — refuses a shell command that matches a known-destructive shape. The refusal names the pattern and echoes the command back, so if you meant it you can run it yourself:

safety-net: recursive forced delete — not from the agent. Run it yourself if you mean it: rm -rf ./build

The seven shapes it looks for:

pattern what it catches
rm -rf (in either flag order) recursive forced delete
git push --force / -f force push
git reset --hard hard reset
git clean -f untracked files gone for good
chmod 777 world-writable permissions
curl … / wget … piped into a shell network piped into a shell
drop table / database / schema dropping a table or database

post_tool — when a shell run prints a FAIL line, it appends one sentence the model cannot miss: fix it before moving on, do not mark the step done. The command's own output is left intact; the sentence is added after it, and never twice.

What it deliberately cannot do

A hook can only deny. It cannot grant permission, widen policy, or approve something the permission rules would have refused — see src/core/hooks.ts: policy wins, and a hook is your own stricter layer on top. For a safety net that is exactly the right amount of power.

It is also not a security boundary. The patterns are regular expressions over the command string, and anything determined to get past them will (rm -r -f with an odd spelling, a variable holding the flags, a script that does the deleting). It is there to catch the ordinary accident, which is what actually happens.

Install

rovecode market install plugin:safety-net

Or from a checkout of this repository:

rovecode plugin add ./plugins/safety-net

It ships an entry module, so rovecode imports it in-process — the approval preview says so before anything is installed.

Configuration

None. It applies to tools named bash, shell or run, and does nothing to any other tool.

← 마켓 전체