← Blog

Blog

The Hidden Cost of Missed Claude Code Approvals

Harjas Singh

5 min readclaude-codeapprovalstool-callssafetypermissions

You're deep in Figma, working on a component library. Claude Code is running in another window, refactoring your API routes. It finishes a file read, needs to run a bash command, and asks for approval.

You don't see it. You're in Figma. Ten minutes pass before you check back.

That's ten minutes of Claude sitting completely idle, waiting for a single keystroke. Multiply that across a day of real work and the numbers get ugly.

The Math Nobody Talks About

Let's be honest about the numbers. A Claude Code session doing meaningful work will request approval roughly 8-15 times per hour. File writes, bash commands, tool calls — each one pauses execution until you say yes.

If you're sitting in the terminal watching, you approve instantly. No cost. But the moment you're doing anything else — reviewing a PR, answering Slack, eating lunch — approvals start getting missed.

Each missed approval costs roughly 10 minutes of idle time on average. Sometimes it's 2 minutes, sometimes it's 30. But the average across a workday settles around 10.

With a single session, you might miss 3-5 approvals per day. That's 30-50 minutes of wasted Claude time. Annoying, but manageable.

With three sessions running? You're missing 10-15 approvals per day. That's 100-150 minutes — over two hours of Claude sitting idle. With six sessions, you can easily lose half your compute to missed approvals.

And this isn't hypothetical. Before I built Claude Pulse, I tracked my own sessions for a week. I was losing about 35% of my Claude compute time to missed approvals. Over a hundred minutes per day, gone.

The Notification Problem

"Just use notifications," people say. Sure. Let's talk about why that doesn't work.

Terminal notifications in macOS are inconsistent. They don't fire reliably across Spaces. If you're in a full-screen app, you might not see the banner. If you have Focus mode on, they get suppressed entirely.

Even when they work, terminal notifications are generic. "Terminal wants your attention" doesn't tell you which session needs what. You still have to switch to the terminal, find the right tab, read the context, and decide.

For one session, this is fine. For four sessions all requesting approvals at different times, terminal notifications become noise. You start ignoring them — which means you're back to manual polling.

The "Approve All" Footgun

Some tools solve this by letting you batch-approve everything. One click: approve all pending operations across all sessions. Fast, easy, dangerous.

Think about what "approve all" actually means. You're approving every bash command, every file write, every tool call without reading any of them. That includes rm -rf. That includes DROP TABLE. That includes git push --force to main.

Most of the time, those commands aren't in the queue. But "most of the time" is exactly how you get burned. You batch-approve 20 safe operations and one destructive one because you didn't look. The whole point of the approval system is to catch the dangerous stuff. Blanket approval defeats it.

This is a footgun dressed as a feature. It optimizes for speed at the cost of the safety guarantees that make Claude Code trustworthy.

Safety-Aware Batch Approval

There's a middle ground. Not every approval carries the same risk. Reading a file is not the same as deleting one. Running grep is not the same as running rm -rf /.

Claude Pulse categorizes tool calls by risk level:

Safe operations — file reads, grep, glob, listing directories. These can be batch-approved with a single keystroke. Hit Cmd+Y and approve all pending safe operations across all sessions at once.

Destructive operations — bash commands with rm, DROP, force-push, file deletions, anything that modifies state irreversibly. These always require individual confirmation. You see exactly what the command is, which session is requesting it, and what files it affects. One at a time, with full context.

This means the routine approvals (which make up 70-80% of all approval requests) get handled instantly. The dangerous ones (the 20-30% that actually matter) get your full attention. You're not slowed down by safe operations and you're not rushing through dangerous ones.

Notifications That Actually Work

Beyond batch approval, the notification layer matters. Claude Pulse uses native macOS notifications with inline actions. When a session needs approval:

  1. A notification appears with the session name and what it wants to do
  2. You can tap Allow or Deny right from the notification — no window switching
  3. Notifications work across Spaces, across full-screen apps, across Focus modes (Claude Pulse registers as a time-sensitive notification source)

The notch also shows status persistently. An amber breathing dot means something needs approval. It's visible in your peripheral vision no matter what app you're using. You don't have to remember to check — the dot catches your eye when it changes from green to amber.

Check the features page for the full list of approval-related capabilities, including the safety classification system and keyboard shortcuts.

The Right Default

Here's how I think about it: the best approval workflow is one you don't think about for safe operations and can't miss for dangerous ones.

If Claude wants to read a file, that should be frictionless. If Claude wants to delete a directory, that should require my explicit attention. The gap between those two should be handled by the tool, not by my vigilance.

Every minute Claude sits idle waiting for approval is a minute you're paying for but not using. Safety-aware batch approval gives you that time back without asking you to trust blindly. You get speed where it's safe and caution where it matters.

That's not a compromise. That's the right default.

Try Claude Pulse

Manage Claude Code sessions from your MacBook notch. Free.

Download for macOS
Written by Harjas Singh · @claudepulse