Comparison with Dippy
rippy is fully inspired by and a Rust rewrite of Dippy by @ldayton. Dippy pioneered the idea of a command safety hook for AI coding tools; rippy ports the idea to Rust, adds a few capabilities, and keeps config compatibility so you can switch without rewriting anything.
Side by side
Section titled “Side by side”| Dippy | rippy | |
|---|---|---|
| Language | Python | Rust |
| Runtime | Python 3.9+, pip | Single static binary |
| Startup | ~200 ms | < 1 ms |
| Parser | bash-parser (Parable) | rable, pure Rust |
| Config files | .dippy (flat) | .rippy.toml (structured; also reads legacy .rippy / .dippy flat) |
| Handlers | ~50 commands | 100+ commands |
| File analysis | — | Reads .py, .sql, .sh, .awk, .graphql for informed decisions |
| Claude Code permission integration | — | Reads ~/.claude/settings.json allow/deny/ask rules |
Migrating from Dippy
Section titled “Migrating from Dippy”rippy reads .dippy config files and the DIPPY_CONFIG environment
variable out of the box. The full migration is three steps:
- Install rippy.
- Replace
dippywithrippy --mode claude(or--mode cursor,--mode gemini,--mode codex) in your hook config. - Done. Your existing
.dippyconfig keeps working.
Renaming .dippy → .rippy and ~/.dippy/config → ~/.rippy/config is
optional — rippy accepts both paths indefinitely.
Why a rewrite?
Section titled “Why a rewrite?”A 200ms cold start is fine for a one-off tool, but it adds up fast when
you run a hook before every Bash call in an AI coding session. A
sub-millisecond static binary disappears into the background — you stop
thinking about whether to turn the hook off “because it’s slow”.
The rewrite was also a chance to:
- Build on rable, a properly typed pure-Rust bash parser, instead of shelling out to a JavaScript bash parser.
- Add file-content analysis for scripts, which is much easier to do safely with a compiled language and a real AST.
- Integrate with Claude Code’s own permission rules so you don’t have to maintain the same allow/deny list in two places.
The ideas, though, are all Dippy’s. Huge thanks to @ldayton for shipping the original and making the concept real.