Auto-approve Claude Code permission prompts with a denylist and daily limits
Project description
yes-claudio
Auto-approve Claude Code permission prompts — with a denylist and daily limits.
Quick start
Free (20 approvals/day):
- macOS / Linux (recommended —
pip installis blocked on Homebrew Python by PEP 668):uv tool install yes-claudio && yes-claudio start
Don't have
uv? Install it withcurl -LsSf https://astral.sh/uv/install.sh | sh(orbrew install uv). See Installation for details. - Windows:
pip install yes-claudio && yes-claudio start
yes-claudio start registers the hook, opens the tray + panel, and asks whether to launch yes-claudio at login. It returns to the prompt; use yes-claudio stop to quit the tray. Power users can run yes-claudio app instead — same tray, no setup prompts.
Unlimited: buy at bravoevert.gumroad.com/l/yes-claudio, then either:
- right-click the tray icon → Ativar Licença... → paste the serial, or
- run
yes-claudio activate YOUR-SERIAL-KEY.
How it works
yes-claudio installs a PreToolUse hook in ~/.claude/settings.json. Every time Claude Code would show you a permission prompt, the hook intercepts it and returns allow — unless the command matches the denylist, in which case it returns ask (the prompt appears normally).
| Tier | Daily limit | Price |
|---|---|---|
| Free | 20 approvals/day | $0 |
| Paid | Unlimited | $2 one-time |
The GUI shows a tray icon (green = active, orange = daily limit reached, grey = inactive) and a panel with your approval count and license status.
Installation
Requirements:
- Python 3.11+
- macOS:
brew install python-tk@3.14(tkinter is not bundled with Homebrew Python) - Linux: distro-provided
python3-tkpackage if your Python doesn't ship tkinter - Windows: no extra dependencies
No Homebrew on macOS? Install it from brew.sh (one-liner on the homepage), or use the Astral
curlinstaller foruv(alternative to brew) and skip Homebrew entirely.
macOS / Linux
Homebrew Python (and most modern distros) marks the system interpreter as "externally managed" (PEP 668), so pip install yes-claudio is blocked. Install in an isolated tool environment instead:
uv (recommended):
# install uv once:
curl -LsSf https://astral.sh/uv/install.sh | sh
# or: brew install uv
uv tool install yes-claudio
pipx (alternative):
# install pipx once:
brew install pipx # macOS
# or: sudo apt install pipx # Debian/Ubuntu
pipx install yes-claudio
Windows
pip install yes-claudio
Usage
Start the app (tray + panel)
yes-claudio start # full setup: hook + tray + panel + asks about login auto-start
yes-claudio start --no-autostart # skip the login auto-start prompt
yes-claudio start --yes # answer "yes" to login auto-start (for automation)
yes-claudio app # just the tray (no setup prompts)
yes-claudio stop # quits the tray
yes-claudio app -f # foreground mode (debug; blocks the terminal)
Open panel only
yes-claudio panel
Activate a license key
yes-claudio activate XXXX-XXXX-XXXX-XXXX
The hook is registered automatically by yes-claudio start. To toggle it later, use the panel ("Auto-sim ativo") or the tray menu.
Denylist — what's always blocked
These patterns are always sent back to you for review (ask), regardless of tier:
| Pattern | Reason |
|---|---|
rm -rf |
Recursive deletion |
git push --force / git push -f |
Force push |
git reset --hard |
Discards uncommitted changes |
DROP TABLE / DROP DATABASE / TRUNCATE |
Destructive SQL |
sudo |
Privilege escalation |
dd |
Low-level disk write |
mkfs / fdisk / parted |
Disk partitioning |
chmod 777 /etc |
System-wide permission change |
curl | bash / wget | bash |
Remote code execution |
shred |
Secure file deletion |
shutdown / reboot / halt |
System power commands |
/etc/, /usr/, /bin/, /sbin/ |
System paths |
You can add custom patterns via the "Editar Denylist" button in the panel (supports regex or simple wildcards with * and ?).
Manual configuration (no GUI)
yes-claudio writes this entry to ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "yes-claudio hook",
"timeout": 10,
"_tag": "autoconfirm-hook"
}
]
}
]
}
}
To disable, remove the entry above or uncheck "Auto-sim ativo" in the panel.
Uninstall
To remove all traces of yes-claudio:
yes-claudio uninstall
This removes:
- The hook entry from
~/.claude/settings.json ~/.config/autoconfirm/(approvals log, license token, custom denylist)- The package itself (via
uv tool uninstallorpip uninstall)
Use --yes / -y to skip the confirmation prompt (useful in scripts).
You can also uninstall from the panel GUI via the red "Desinstalar yes-claudio" button at the bottom.
FAQ
How do I know it's active?
Green tray icon in the menu bar. You can also run yes-claudio hook manually and pipe JSON to it — it should return {"hookSpecificOutput": {"hookEventName": "PreToolUse", "permissionDecision": "allow", ...}}.
What happens when I hit the daily limit?
The hook returns ask — Claude Code shows the normal permission prompt. The panel banner turns orange and displays an upgrade link.
Is it safe?
Dangerous commands (see denylist above) are always escalated to you. The hook is fail-safe: any internal error returns ask, so Claude Code never auto-approves silently on a crash.
Can I use it on multiple machines? Yes — up to 2 activations per serial. To move to a new machine, contact support to reset.
Does it work with --dangerously-skip-permissions?
No — yes-claudio detects that mode and steps aside. That mode already bypasses prompts; there's nothing to approve.
Where is data stored?
~/.config/autoconfirm/data.json— daily counts and approval log~/.config/autoconfirm/license.json— license token (local, no server)~/.config/autoconfirm/machine_id.txt— stable per-machine ID for license binding~/.config/autoconfirm/denylist.json— custom patterns
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yes_claudio-0.1.6.tar.gz.
File metadata
- Download URL: yes_claudio-0.1.6.tar.gz
- Upload date:
- Size: 32.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d0cd696473fa7dc01a5c4c5328ff6ba86acfb27702d67c146cf62cba9cd053f
|
|
| MD5 |
bce22054772c55ec7d0cede82843012f
|
|
| BLAKE2b-256 |
dc3ed6554c36f0ebb1b47a03d9f0a5e10407055416d67cd702c9f8a463f46fbf
|
File details
Details for the file yes_claudio-0.1.6-py3-none-any.whl.
File metadata
- Download URL: yes_claudio-0.1.6-py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0444115c34a5ab40f199440395b1e0c1521feea0f05718c547aa12ee3d058046
|
|
| MD5 |
0c44caa4bcbbd849fe5e353d318498df
|
|
| BLAKE2b-256 |
2f9f007c2e172d1d5da736f4dc1f89658180256e3049d033387368ceeaa3a6e0
|