Skip to content

[FEATURE] Built-in webhook/push notification support for permission requests #29827

@mingrath

Description

@mingrath

Preflight Checklist

  • I have searched existing requests and this feature hasn't been requested yet
  • This is a single feature request (not multiple features)

Problem Statement

When running Claude Code in autonomous mode (YOLO), tasks can take 5-15 minutes. When Claude finally needs user input (permission request, clarification), there's no way to know unless you're watching the terminal. I end up coming back to find Claude has been waiting for 10+ minutes.

I built claude-code-notify using hooks + terminal-notifier + ntfy.sh to push notifications to Mac, iPhone, and Apple Watch. It works, but it's fragile — relies on parsing hook events, external services, and manual setup.

A built-in notification system would be more reliable and accessible to all users.

Proposed Solution

Add a notifications config in settings.json that supports:

  1. Webhook URL — POST to any endpoint (ntfy.sh, Pushover, Slack, Discord, custom)
  2. macOS native — use osascript or terminal-notifier built-in
  3. Sound alert — play a system sound when permission is needed
{
  "notifications": {
    "onPermissionRequest": {
      "webhook": "https://ntfy.sh/my-claude-topic",
      "sound": true,
      "macosNotification": true
    }
  }
}

Feature Area

Configuration and settings

Use Case Example

  1. I start Claude Code on a large refactoring task in autonomous mode
  2. I switch to another app or walk away from my desk
  3. After 8 minutes, Claude needs approval to delete a file
  4. My iPhone/Apple Watch buzzes with "Claude Code needs your input"
  5. I come back and approve immediately — no wasted idle time

This is especially valuable for Max subscribers who have rate limits — every minute Claude sits idle waiting for input is wasted quota.

Additional Context

I built and open-sourced a workaround: claude-code-notify — it uses hooks + ntfy.sh + terminal-notifier to achieve this. 200+ lines of shell scripting to solve what could be a 5-line config. The community clearly needs this — autonomous mode is only useful if you know when to come back.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions