Skip to main content

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 install is blocked on Homebrew Python by PEP 668):
    uv tool install yes-claudio && yes-claudio start
    
  • 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-tk package if your Python doesn't ship tkinter
  • Windows: no extra dependencies

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 uninstall or pip 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

yes_claudio-0.1.5.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yes_claudio-0.1.5-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file yes_claudio-0.1.5.tar.gz.

File metadata

  • Download URL: yes_claudio-0.1.5.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for yes_claudio-0.1.5.tar.gz
Algorithm Hash digest
SHA256 e24fefbc224a7142cb62aac5e14f72e87a55bd17eb38eba0d9eb764a71818f64
MD5 566bac0c9f782c5b54b76b0f00f3fa1d
BLAKE2b-256 7f50319d88ebaed15040bb84140384b08c4ebf2d44ccbe56e717dd5b0f18d9a6

See more details on using hashes here.

File details

Details for the file yes_claudio-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: yes_claudio-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 24.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for yes_claudio-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e6e0709d47137d0d8b8908957318591f1a9cef33266fad10586e06af37beb54c
MD5 af47bff4969fc75cf2ff2f2b6987e88b
BLAKE2b-256 aa80e4610b9553274c695842ddd667fceeb794381ccd1cc75dbf10f550718a66

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page