trust · before you install
It presses your keys.
Here's the contract.
A tool that types into your terminal at 3am has to earn that. unsnooze is a scheduler, not an auto-approver — it never changes how your agent handles permissions.
- Types only after proving the pane is yours
- Every keystroke requires identity (an ownership stamp or a process-id + birth-time lease — pane ids get recycled, so a mismatch vetoes) and liveness (your agent is still running there, foreground, not mid-stream). Ownership unprovable → it opens a fresh session instead of typing.
- Never a blind Enter
- Claude's limit menu is located and read before any key is sent; unsnooze computes the exact moves to “Stop and wait for limit to reset.” Unreadable menu → it presses nothing. It will never select “Upgrade your plan.”
- No bypass flags, ever
- No
--dangerously-skip-permissions, no auto-trust, no auto-approve, no touching MCP config. Whatever your agent does after resuming is governed by its own permission model — the same as if you'd typed the message yourself. - See before you trust
unsnooze preview is a true dry-run: it prints exactly what would be typed, where, and why — or what's holding it back — and sends nothing. It shares its decision code with the real dispatcher, so it cannot drift from what dispatch actually does.- Nearly zero network, zero telemetry
- One daily version check to the npm registry (nothing identifying; off with one setting), and push notifications only if you configure an ntfy topic. All state stays local under
~/.unsnooze. - Reversible install
- The settings hook and rc-file wrappers are backed up first;
unsnooze uninstall removes every change. Releases are published to npm with provenance.