Developer Safety - alexherrero/crickets GitHub Wiki
Developer Safety keeps you in control of an agent that works on its own. The longer an agent runs unattended, the more you want three things: a way to stop it, a way to redirect it without starting over, and the confidence that nothing is lost if a session ends unexpectedly. This plugin gives you all three โ a kill switch, a steering note, and an automatic snapshot of in-flight work โ plus a few ground rules for what the agent may decide for itself. It needs nothing else to work, and its safety hooks quietly engage across the rest of your workflow when the other plugins are installed.
How the hooks wrap the running workflow โ every tool call passes the operator's live controls, guided by the recoverability doctrine, with a snapshot catching anything unsaved:
Developer Safety runs on three hooks, each watching for a simple trigger file in your project. Two of them give you live control while the agent works. The kill switch checks before every step: drop in a STOP file and the agent stops at once; delete it and it carries on โ no restart. Steer works differently: write a "do it this way instead" note in STEER.md and the agent picks it up on your next submitted prompt, then sets it aside so you keep a record of what you asked. A STOP file still blocks the very next tool call regardless of what you type, while STEER.md waits for your next prompt โ the two no longer fire on the same event, so there's no "which one wins" question; to both halt and redirect, drop STOP, write STEER.md, then send your next message before removing STOP. The third hook, commit-on-stop, is the safety net: when a turn ends with unsaved changes, it records a snapshot of your work to a separate ref, so a session that ends unexpectedly never loses what was in flight.
Under the hooks sits the recoverability doctrine โ the judgment the agent applies on its own. Before it acts, it asks one question: can this be undone? If it can, it goes ahead and tells you; if it can't, it stops and checks with you first. Two short conventions round it out: no Co-Authored-By line on commits, and new worktrees only when you ask for one. One thing to know โ the hooks do their full job on Claude Code; on Antigravity kill-switch and commit-on-stop still fire but can't block, and steer doesn't fire at all, so there you lean on an always-on rule that checks the same trigger files before each step.
| Direction | Plugin | How |
|---|---|---|
| Enhances (soft) | Development Lifecycle | The three hooks engage across the phase loop, and the recoverability doctrine backs /work's recoverability gate โ only when both are installed. |
| Enhanced by (soft) | โ | None. |
| Requires (hard) | โ | None. Developer Safety is fully standalone. |
| Required by (hard) | โ | None. |
Developer Safety is opinionated, and it will not fit every setup. Reach for something else if:
- You prefer a different control model โ a custom pre-tool hook, a wrapper script, or your host's own interrupt โ over trigger files under
.harness/. - You disagree with a convention it ships: some teams do want a
Co-Authored-Bytrailer, or a looser worktree policy. The snippets encode a specific stance. - The change is small or throwaway and you don't need a halt/steer/snapshot safety net โ for a quick one-off session the hooks add machinery you won't use.
Each primitive links to the source that implements it.
| Primitive | Kind | What it does |
|---|---|---|
recoverability |
skill | Classify every action recoverable vs unrecoverable; proceed on one, stop on the other. |
kill-switch |
hook | Blocks every tool call while .harness/STOP exists โ an operator emergency halt (Claude-effective). |
steer |
hook | Surfaces .harness/STEER.md on your next submitted prompt, then renames it for audit โ mid-run redirect (Claude-effective). |
commit-on-stop |
hook | Snapshots a dirty tree to a hidden refs/auto-save/<ts> ref at Stop, without touching your work (both hosts). |
commit-no-coauthor |
snippet | The no-Co-Authored-By-trailer commit convention. |
worktrees-operator-initiated |
snippet | Worktrees are first-class but operator-initiated โ never spawned autonomously. |
No configuration โ the plugin works out of the box. The three hooks are driven entirely by trigger files you create under .harness/ (STOP, STEER.md), and recovery snapshots land on refs/auto-save/ refs.
- Hooks โ the full hook catalog and per-host effectiveness.
- Compatibility โ per-hook Antigravity effectiveness (observe-only vs. doesn't fire at all).
- Developer-safety design ยท Composition design โ the deeper design.
Reference ยท Architecture ยท Home