Human-in-the-loop confirmation for AI Agents
"I let my AI run terraform destroy.
Because I can stop it with one touch."
npm install? No. yaml config? No. Just:
curl -fsSL https://raw.githubusercontent.com/runkids/veto/main/install.sh | bash
veto setup claudeYour AI now asks before it destroys.
Your AI agent runs as you. It doesn't need sudo to rm -rf ~/Documents.
veto sits between your AI and the terminal. Dangerous command? Touch ID. Catastrophic command? Blocked. Safe command? Passes through silently.
It's a seatbelt — not a sandbox.
Touch ID · PIN · TOTP · Telegram
How does it work?
+-----------+ +-----------+ +-----------+
| AI Agent |---->| veto gate |---->| Terminal |
+-----------+ +-----+-----+ +-----------+
|
+-----v-----+
| Risk Check|
+-----+-----+
|
+---------------+---------------+
| | |
v v v
+--------+ +--------+ +--------+
| Low | | High | |Critical|
| [pass] | |[auth] | |[block] |
+--------+ +--------+ +--------+
veto setup claude adds a PreToolUse hook to ~/.claude/settings.json.
Every command Claude Code tries to run goes through veto first.
Getting Started · Cookbook · Reference · Troubleshooting
Works with Claude Code
Runs on macOS (x86/ARM) · Linux (x86/ARM)
Built with Rust.
