Get notified when Claude Code needs your input

Stop constantly checking your terminal. Set up notifications that alert you when Claude Code is ready for your input.

Get notified when Claude Code needs your input

Claude Code often runs for a while - exploring code, making edits, running builds. You switch to another task, forget to check back, and waste time waiting when it was already done.

The fix: desktop notifications that pop up the moment Claude Code is ready for input or needs your permission to continue.

iTerm2 Built-in Notifications

If you use iTerm2, there’s a built-in option. No hooks required.

  1. Open Preferences (Cmd+,)
  2. Go to ProfilesTerminal
  3. Check Silence bell
  4. Under Notifications, select Send Growl/Notification Center alerts

That’s it. iTerm2 will notify you when Claude Code is waiting for input.

For more details, see the official terminal configuration docs.

Custom Hook with terminal-notifier

Not using iTerm2? Or want more control over the notifications? Use a Notification hook.

First, install terminal-notifier:

brew install terminal-notifier

Then add this to your ~/.claude/settings.json:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "idle_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -message 'Ready for input'"
          }
        ]
      },
      {
        "matcher": "permission_prompt",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -message 'Permission required' -sound default"
          }
        ]
      }
    ]
  }
}

Two matchers handle different scenarios:

  • idle_prompt - Claude finished working and is waiting for your next instruction
  • permission_prompt - Claude needs your approval to run a command or make a change (includes a sound so you don’t miss it)

For the full hooks reference, see the Claude Code hooks documentation.

Which to Choose

iTerm2 users: Use the built-in notifications. Simpler setup, no external dependencies.

Everyone else: Use the terminal-notifier hook. Works in any terminal and lets you customize the message and add sounds.

More Articles

Generate Commit Messages with Ollama in Neovim

Generate Commit Messages with Ollama in Neovim

Generate conventional commit messages from staged diffs using Ollama. Run it locally for privacy and offline, or use cloud models for speed.

Adding Umami analytics to the OpenClaw morning brief

Adding Umami analytics to the OpenClaw morning brief

An agent skill that fetches traffic data from Umami, and how it fits into a daily automated briefing.

Setting up Google Calendar sync for OpenClaw

Setting up Google Calendar sync for OpenClaw

How I set up read-only Google Calendar sync for my personal AI assistant running on a home server VM.

Better Clipboard Handling in Claude Code

Better Clipboard Handling in Claude Code

A plugin that makes clipboard operations in Claude Code more reliable and natural to use.

Auto-format generated Code with Claude Code Hooks

Auto-format generated Code with Claude Code Hooks

How to set up a PostToolUse hook in Claude Code to automatically run prettier after every file edit or write operation.

PWA Web Share Target on Android: The Absolute URL Fix

PWA Web Share Target on Android: The Absolute URL Fix

Getting the Web Share Target API to work on Android PWAs can be frustrating. Your manifest looks correct, but the app never appears in the share sheet. Here is what finally worked.

Standard function keys on external keyboards in MacOS

Standard function keys on external keyboards in MacOS

Configure Karabiner Elements to use standard function keys on external keyboards while keeping media keys on your MacBook.

How to Clear Cloudflare Cache using a webhook

How to Clear Cloudflare Cache using a webhook

Automatically purge Cloudflare cache using webhooks and API tokens.

Monitoring Cron Jobs with Notifery

Monitoring Cron Jobs with Notifery

Stop silent cron job failures from catching you off guard.