DEV Community

Cover image for I Got Tired of Clicking "Accept" 100 Times a Day in Claude Code. So I Built a Menu Bar App
Andrea Tasselli
Andrea Tasselli

Posted on

I Got Tired of Clicking "Accept" 100 Times a Day in Claude Code. So I Built a Menu Bar App

If you use Claude Code in VS Code, you know the pain.

Claude wants to edit a file. "Allow?" Click. Claude wants to run a command. "Allow?" Click. Claude wants to read a directory. "Allow?" Click.

On a productive day, I click "Accept" 50-100 times. It breaks flow, interrupts thinking, and adds up to minutes of pure friction.

So I built a macOS menu bar app that does it for me.


What it does

Claude Auto Accept sits in your macOS menu bar and monitors Claude Code for permission prompts. When one appears, it either:

  1. Auto-accepts it (fully automatic mode) — Claude runs uninterrupted. At the end, you get a notification with the total count of accepted prompts.
  2. Accepts via keyboard shortcut (⌘⇧⌥0 to Accept, ⌃⇧N to Reject) — you stay in control but don't have to reach for the mouse.

How it actually works

The app doesn't inspect the VS Code UI at all. Instead, it monitors Claude's own log files.

Claude Code writes JSONL logs to ~/.claude/projects/. Every time Claude requests a tool use (edit a file, run a command, read a directory), it writes a "type":"tool_use" entry with the specific tool name.

The app polls these log files every 2 seconds, detects new tool use requests, and sends the appropriate keyboard event to VS Code to accept or reject them.

The stack is straightforward macOS native:

  • AppKit (NSStatusBar, NSMenu) for the menu bar app — no SwiftUI, just classic Cocoa
  • CGEvent for registering global hotkeys and sending keyboard events to VS Code
  • UserNotifications for the summary notification when auto mode finishes
  • File system monitoring for the JSONL logs

The 2-second polling interval means there's a small delay between Claude asking for permission and the app accepting it. In practice, you barely notice it.


The honest part: it's rough

This started as an internal tool at our company. We use Claude Code daily to build Megify, an AI platform that generates WordPress sites. We needed something that worked for us, not something polished for the world.

It works. We use it every day. But:

  • Multiple VS Code windows can confuse it — it doesn't always target the right one
  • 2-second polling means occasional visible delay before acceptance
  • No prompt filtering — in auto mode, it accepts everything. You can't say "auto-accept file edits but ask me about terminal commands"
  • macOS only — it uses native APIs that don't exist on Windows or Linux
  • VS Code only — no support for Claude Code in the standalone terminal

I'm open-sourcing it because every Claude Code user has the same problem, and I'd rather have 10 people improving it than try to polish it alone.


Setup

You'll need macOS 13+ and Xcode command line tools:

xcode-select --install
git clone https://github.com/andreata/claude_vscode_accept_mac.git
cd claude_vscode_accept_mac
chmod +x install.sh && ./install.sh
Enter fullscreen mode Exit fullscreen mode

Grant Accessibility permissions when prompted (System Settings > Privacy > Accessibility). The app needs this to send keyboard events to VS Code.

Shortcuts:

  • ⌘⇧⌥0 — Accept current prompt
  • ⌃⇧N — Reject current prompt

Fair warning: auto mode means Claude executes everything without asking. Use it on projects where you trust Claude's judgment, or use shortcut mode for more control.


What I want to add (and need help with)

The roadmap, roughly in priority order:

Prompt filtering. Auto-accept file edits and directory reads, but pause for terminal commands and destructive operations. This requires parsing the tool name from the JSONL entries and maintaining an allow/deny list. Most requested feature from my team.

Better window targeting. When you have 3 VS Code windows open, the app needs to send the keyboard event to the right one. Probably requires accessibility API inspection of the window hierarchy.

Prompt history/log. A scrollable list in the menu bar dropdown showing what was accepted, when, and what tool was used. Useful for reviewing what Claude did while you were getting coffee.

Faster polling or file system events. Replace the 2-second polling with FSEvents or DispatchSource.FileSystemObject for near-instant detection.

Terminal support. Claude Code works in the regular terminal too, not just VS Code. The JSONL monitoring would still work, but sending the accept keystroke requires a different mechanism.

Homebrew formula. brew install claude-auto-accept would be the dream.

If any of these interest you, PRs are very welcome. Even bug reports help — the more macOS versions and VS Code configurations we test against, the more reliable it gets.


The bigger picture

The permission system in Claude Code exists for good reason — you don't want AI silently deleting files or running arbitrary commands. But the current UX is designed for safety, not productivity. Every developer who's been using Claude Code for months has muscle memory for "Accept" — the permission prompt is a speed bump, not a safety check.

The right solution is filtering: auto-accept safe operations (read files, edit code, create files) and require confirmation for dangerous ones (delete files, run destructive commands, access network). That's what we're building toward.

Until Anthropic adds this natively (please?), this menu bar app is the workaround.


The repo: github.com/andreata/claude_vscode_accept_mac

If you use Claude Code daily and this sounds useful — or if you've built something similar — I'd love to hear about it.

Top comments (0)