https://github.com/sezaakgun/yolonot
Smart auto-mode for Claude Code. The safe alternative to --dangerously-skip-permissions.
https://github.com/sezaakgun/yolonot
claude-code cli developer-tools go llm security
Last synced: about 2 months ago
JSON representation
Smart auto-mode for Claude Code. The safe alternative to --dangerously-skip-permissions.
- Host: GitHub
- URL: https://github.com/sezaakgun/yolonot
- Owner: sezaakgun
- License: mit
- Created: 2026-04-09T14:43:31.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-17T12:48:04.000Z (2 months ago)
- Last Synced: 2026-04-17T14:23:12.829Z (2 months ago)
- Topics: claude-code, cli, developer-tools, go, llm, security
- Language: Go
- Homepage:
- Size: 6.19 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
yolonot
Smart auto-mode for AI coding assistants. The safe alternative to --dangerously-skip-permissions.
Built for Claude Code. Also works with Codex CLI, OpenCode, Gemini CLI, and Cursor.
---
yolonot sits between your AI coding assistant and your shell. It uses an LLM to classify every Bash command as **safe** (allow) or **needs-review** (ask), with session memory so approved commands don't ask twice and rejected commands stay blocked. Deny rules give you absolute blocks nothing can override.
> **Claude Code first.** yolonot was designed for Claude Code and that's where it gets the richest UX (full allow/ask/deny). Cursor, Codex CLI, OpenCode, and Gemini CLI adapters ship in-tree but have upstream hook-API limitations — see [docs/harnesses.md](docs/harnesses.md) for each host's caveats.
> **⚠ LLMs are not deterministic.** yolonot's classifier is a probabilistic safety net, not a guarantee. Models hallucinate, miss context, and can be tricked by adversarial prompts. Use yolonot at your discretion: keep your own judgment in the loop, write **deny rules** for anything you truly never want run (rules beat the LLM, always), and don't treat it as a substitute for reviewing what your AI assistant is doing. If yolonot allows a destructive command, **you** are still the one who installed it on your machine.
## Quick start
### 1. Pick an LLM provider
| Provider | Cost | Latency | Key |
|----------|------|--------:|-----|
| **OpenAI** `gpt-5.4-mini` | ~10¢/day | ~500ms | `OPENAI_API_KEY` |
| **Ollama** `gemma4:e4b` | free | 2–10s | — (local) |
| **Claude Code** (default) | free | ~10s | — (subscription) |
Full matrix in [docs/providers.md](docs/providers.md).
### 2. Install
```bash
go install github.com/sezaakgun/yolonot@latest
# Make sure Go bin is in PATH
export PATH="$PATH:$(go env GOPATH)/bin"
# First-run wizard: hooks + rules + provider pick
yolonot setup
```
### 3. Restart your host CLI
Hooks are read at startup, so restart Claude Code (or whichever harness you're using) to activate yolonot.
That's it. Every Bash command now runs through [the pipeline](docs/how-it-works.md).
## Docs
| Topic | File |
|-------|------|
| How the pipeline decides — layers, hook ordering, pausing, dry-run | [docs/how-it-works.md](docs/how-it-works.md) |
| All CLI + `/yolonot` skill commands | [docs/commands.md](docs/commands.md) |
| `.yolonot` rule files — format, walk-up, messages, redirects, sensitive files | [docs/rules.md](docs/rules.md) |
| Pre-check hooks — `fast-allow` internals, Dippy integration, security model | [docs/pre-check.md](docs/pre-check.md) |
| Risk tiers — per-harness action policy, overrides | [docs/risk-tiers.md](docs/risk-tiers.md) |
| LLM providers — matrix, env vars, response schema | [docs/providers.md](docs/providers.md) |
| Harnesses — install flags, runtime pinning, per-host caveats | [docs/harnesses.md](docs/harnesses.md) |
| Analytics — `yolonot log`, `stats`, `suggest`, quiet mode | [docs/analytics.md](docs/analytics.md) |
| Eval suite — test prompt quality across models | [docs/eval.md](docs/eval.md) |
| Architecture — code layout, data directory | [docs/architecture.md](docs/architecture.md) |
## Uninstall
```bash
yolonot uninstall # removes hooks + skill, preserves data
```
Data at `~/.yolonot/` is preserved. Delete manually if wanted.
## Acknowledgements
The built-in `fast-allow` pre-checker is heavily inspired by [**Dippy**](https://github.com/lilydayton/dippy) by Lily Dayton — specifically its `SIMPLE_SAFE` allowlist, subcommand-gating approach for multiplex tools (`git`, `docker`, `kubectl`, …), and its hostile-input test corpus. yolonot ports the allowlist tables into Go and re-walks the AST via [`mvdan.cc/sh`](https://github.com/mvdan/sh) instead of Dippy's hand-written Python bash parser (Parable). Where yolonot's parser reaches ambiguity it defers to the LLM — a fallback Dippy doesn't rely on — so the Go port can be stricter (reject-to-LLM) without hurting UX. The `dippy_parity_test.go` corpus and the rules system owe a direct debt to the Dippy project. MIT-licensed, credited in file headers.
## License
MIT. See [LICENSE](LICENSE).