claude-code-notifier
طريقة العمل الأدلة الأسئلة الشائعة
◐العربية
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
ابدأ الآن
كل الأدلة

Notification hook في Claude Code: متى يُطلَق وكيف تستخدمه

آخر تحديث 31 أكتوبر 2026 · قراءة في 6 دقيقة
في هذه الصفحة 01أنواع الإشعارات 02قواعد التوقيت 03ما يتلقاه الـ hook 04ما يستطيع الـ hook فعله وما لا يستطيع 05أمثلة 06أين يأتي دور Claude Code Notifier 07الأسئلة الشائعة

يعمل الـ hook Notification في Claude Code كلما أرسل Claude Code إشعارًا، وغالبًا لأن طلب إذن ينتظر (permission_prompt) أو لأن Claude انتهى ولم ترد بعد (idle_prompt). توقيته مضبوط على الأوقات التي يبدو فيها أنك بعيد: يُطلَق permission_prompt بعد أن ينتظر الطلب نحو ست ثوانٍ دون أي ضغطة مفتاح، وidle_prompt بعد نحو 60 ثانية من انتهاء Claude. يتلقى الـ hook نص الإشعار بصيغة JSON، ولا يمكنه حظر أي شيء، وهو مخصص للتأثيرات الجانبية مثل تنبيه على سطح المكتب أو push إلى هاتفك.

01أنواع الإشعارات

الـ matcher في hook من نوع Notification هو نوع الإشعار. اتركه فارغًا ليعمل مع جميع الأنواع، أو اذكر الأنواع التي تريدها مفصولة بـ |. الأنواع التي ستستخدمها على الأرجح:

Matcherمتى يُطلَق
permission_promptيحتاج Claude إلى موافقتك على استخدام أداة (أو على طلب شبكة من أمر يعمل في sandbox) وقد انتظر الطلب نحو ست ثوانٍ
idle_promptانتهى Claude من الرد قبل نحو 60 ثانية ولم تكتب شيئًا منذ ذلك
elicitation_dialogفتح خادم MCP نموذجًا ولم تكتب شيئًا منذ نحو ست ثوانٍ
elicitation_url_dialogطلب منك خادم MCP فتح رابط ولم تكتب شيئًا منذ نحو ست ثوانٍ
auth_successاكتملت المصادقة

هناك أنواع أخرى، مثل agent_needs_input وagent_completed للجلسات الخلفية في عرض الوكلاء، ومجموعة من أنواع quota_auto_resume_* لفترات انتظار حدود الاستخدام. تجد القائمة الكاملة والمحدّثة في مرجع الـ hooks.

02قواعد التوقيت

هذا هو الجزء الذي يُربك كثيرين. يشترك hook Notification في توقيته مع إشعارات سطح المكتب الخاصة بـ Claude Code، لذا لا يعمل في جلسة الـ terminal إلا حين تنصرف عن الشاشة:

  • permission_prompt يبدأ مؤقتًا مدته ست ثوانٍ تقريبًا عند ظهور الـ prompt، وتعيد كل ضغطة مفتاح ضبطه. إذا أجبت بسرعة فلن يعمل أبدًا.
  • idle_prompt يعمل بعد نحو 60 ثانية من انتهاء Claude، بشرط ألا تكون قد كتبت شيئًا منذ ذلك الحين وألا يكون هناك agent يعمل في الخلفية. ولا يعمل أثناء انتظار Claude Code لإعادة ضبط حد الاستخدام.
  • الطلب الذي يصل أثناء فتح نافذة حوار أخرى يُحسب توقيته من لحظة وصوله، لذا قد يصلك إشعاره وهو لا يزال ينتظر خلف النافذة المفتوحة.

البيئات المضيفة التي تجيب على الأذونات عبر Agent SDK، مثل Claude Desktop وإضافة VS Code، تحسب توقيت permission_prompt بطريقة مختلفة: بعد نحو ست ثوانٍ من الطلب، دون تأجيل بسبب الكتابة، ويُتخطى إذا أجبت أنت أو أجاب hook PermissionRequest أولًا.

إذا أردت إشارة فورية بلا تأخير، فاستخدم حدثًا آخر:

ما تريدهاستخدم
تنبيه فور طلب Claude إذنًاPermissionRequest
تنبيه فور انتهاء ClaudeStop
تذكير فقط إذا ابتعدت فعلًاNotification مع idle_prompt

03ما يتلقاه الـ hook

إضافةً إلى الحقول المشتركة (session_id وtranscript_path وcwd وhook_event_name)، يتلقى hook Notification نص الإشعار في message، وtitle اختياريًا، وnotification_type:

{
  "session_id": "abc123",
  "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "cwd": "/Users/...",
  "hook_event_name": "Notification",
  "message": "Claude needs your permission",
  "title": "Permission needed",
  "notification_type": "permission_prompt"
}

الحقل message بصياغة Claude Code نفسه، لذا يمكن عرضه كما هو بأمان. ويفيد cwd حين تشغّل عدة جلسات وتريد معرفة المشروع الذي يطلب.

04ما يستطيع الـ hook فعله وما لا يستطيع

لا يستطيع hook Notification منع الإشعار أو تأخيره أو تغييره. يُتجاهل رمز الخروج وstderr، ويُهمل Claude Code الحقلين systemMessage وcontinue من مخرجات JSON. فهو مخصص للتأثيرات الجانبية فقط.

هناك حقل إخراج واحد يمكنه استخدامه: terminalSequence. تعمل الـ hooks دون terminal، فلا يمكنها كتابة escape sequences بنفسها، لكن يمكنها تمرير واحدة إلى Claude Code ليُصدرها. يتيح ذلك للـ hook إطلاق إشعار أصلي من الـ terminal في iTerm2 وGhostty وKitty وWezTerm وWindows Terminal وغيرها، حتى داخل tmux. ولا يعمل إلا في جلسة تفاعلية تكون فيها واجهة Claude Code ظاهرة على الشاشة.

ولا يوقف الإعداد preferredNotifChannel الـ hook أيضًا. فحتى مع تعطيل الإشعارات المدمجة، يظل حدث Notification يعمل. هذا الإعداد يغيّر فقط طريقة تنبيه Claude Code لك؛ راجع دليل جرس الـ terminal.

05أمثلة

معالجات مختلفة لكل نوع

شغّل سكربتًا منفصلًا لطلبات الإذن وآخر لتذكيرات الخمول:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/permission-alert.sh" }]
      },
      {
        "matcher": "idle_prompt",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/idle-alert.sh" }]
      }
    ]
  }
}

اجعل كل سكربت قابلًا للتنفيذ باستخدام chmod +x. أوامر إشعارات سطح المكتب لأنظمة Mac وWindows وLinux موجودة في كيف تتلقى إشعارًا عند انتهاء Claude Code، لذا لن نكررها هنا.

عرض الرسالة الفعلية والمشروع

يضع هذا السكربت (macOS وLinux) رسالة Claude Code ومجلد المشروع في الإشعار بدلًا من نص ثابت:

#!/bin/bash
# ~/.claude/hooks/notify.sh
input=$(cat)
msg=$(jq -r '.message // "Claude Code needs your attention"' <<<"$input")
project=$(basename "$(jq -r '.cwd // "."' <<<"$input")")

if command -v osascript >/dev/null 2>&1; then
  osascript -e 'on run argv' \
            -e 'display notification (item 1 of argv) with title (item 2 of argv)' \
            -e 'end run' "$msg" "Claude Code: $project"
elif command -v notify-send >/dev/null 2>&1; then
  notify-send "Claude Code: $project" "$msg"
fi
exit 0

تمرير النص كوسائط (on run argv) يمنع تعطل AppleScript عندما تحتوي الرسالة على علامات اقتباس. ويتطلب تثبيت jq.

إشعار أصلي من الـ terminal

يستخدم مثال Anthropic نفسها terminalSequence مع OSC 777، الذي تفهمه Ghostty وWarp وurxvt:

#!/bin/bash
input=$(cat)
title="Claude Code"
body=$(jq -r '.message // "Needs your attention"' <<<"$input")
seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")
jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

أما في iTerm2 أو Windows Terminal أو WezTerm فاستخدم OSC 9، وفي Kitty استخدم OSC 99. يُتجاهل أي شيء خارج التسلسلات المسموح بها.

06أين يأتي دور Claude Code Notifier

hook Notification يستدعي خدمة push يوصل التنبيه إلى هاتفك، وهذا يكفي كثيرين. يشرح دليل ntfy هذه الطريقة.

الثغرة هي الرد. فحين يعمل permission_prompt، يكون Claude منتظرًا نافذة حوار لا يستطيع hook Notification الإجابة عليها. يتعامل Claude Code Notifier مع ذلك عبر الـ hooks القادرة على ذلك: PermissionRequest لإعادة قرارك، وPreToolUse على AskUserQuestion لإعادة إجابتك. أداة سطر الأوامر المجانية الخاصة به، ccn، تعمل على Mac وWindows وLinux وتعرض إشعارات سطح المكتب بمفردها. وبعد ربط تطبيق iPhone أو Android، يمكنك السماح مرة واحدة أو السماح طوال الجلسة أو الرفض من الهاتف. وإذا كتبت شيئًا خلال آخر 30 ثانية، فلا شيء ينتظر الهاتف ويسألك الـ terminal كالمعتاد. الأداة مستقلة وليست من صنع Anthropic. تجد طريقة التثبيت في صفحة ccn.

07الأسئلة الشائعة

لماذا لا يعمل Notification hook أبدًا؟

غالبًا لأنك ما زلت أمام لوحة المفاتيح. كل ضغطة مفتاح تؤجل permission_prompt، وidle_prompt لا يعمل إلا إذا لم تكتب شيئًا لمدة دقيقة تقريبًا بعد انتهاء Claude. للاختبار، أطلق طلب إذن، ثم انتقل إلى نافذة أخرى وانتظر ست ثوانٍ على الأقل. إذا لم يعمل بعد ذلك، فتحقق من ظهوره في /hooks وراجع قائمة استكشاف الأخطاء.

ما هو idle_prompt؟

هو نوع الإشعار الذي يرسله Claude Code عندما يكون Claude قد أنهى رده قبل نحو 60 ثانية ولم تكتب شيئًا منذ ذلك الحين. إنه تذكير بأن الدور دورك، وليس إشارة فورية على الانتهاء. لذلك استخدم hook Stop.

هل يستطيع Notification hook الموافقة على إذن؟

لا. لا تملك hooks Notification أي تحكم في القرار، فلا شيء تطبعه يمكنه الإجابة على الـ prompt. استخدم hook PermissionRequest للسماح أو الرفض، كما هو موضح في دليل PermissionRequest.

هل يعمل Notification hook إذا ضبطت preferredNotifChannel على notifications_disabled؟

نعم. هذا الإعداد يغيّر فقط طريقة تنبيه Claude Code لك بنفسه، أما حدث Notification والـ hooks الخاصة بك فتظل تعمل.

لماذا تصلني إشعاران؟

يعمل الإشعار المدمج في Claude Code والـ hook الخاص بك جنبًا إلى جنب. وفي iTerm2 أو Ghostty أو Kitty قد يظهر لك الاثنان معًا. عطّل أحدهما، مثلًا عبر preferredNotifChannel، أو أبقِ على الـ hook وحده.

Claude Code Notifier احصل على إشعار push على هاتفك عندما ينتهي Claude Code أو يحتاج إليك، ثم وافق أو ارفض أو أجب من هناك. أداة سطر الأوامر ccn مجانية على Mac وWindows وLinux.
نزّل لنظام iOS نزّل لنظام Android ثبّت ccn

أدلة ذات صلة

  • كيف تتلقى إشعارًا عندما ينتهي Claude Codeاستخدم Stop hook لحالة "انتهى" وNotification hook لحالة "يحتاج إلى مدخلات". إعدادات جاهزة للنسخ على Mac وWindows وLinux، إضافةً إلى تنبيهات الهاتف.
  • الرد على طلبات الأذونات من hook (PermissionRequest)كيف يعمل PermissionRequest hook في Claude Code، وكيف تسمح أو ترفض من سكربت، ولماذا تكون قواعد الأذونات غالبًا الأداة الأنسب.
  • الـ Stop hook في Claude Code: نفّذ أمرًا عندما ينتهي Claudeكيف يعمل الـ Stop hook في Claude Code، وما المدخلات التي يتلقاها، وكيف تنفّذ أمرًا عندما ينتهي Claude، وكيف تجعل Claude يواصل العمل بأمان.
  • الإشعارات المدمجة في Claude Code: جرس الـ terminal والإعداد preferredNotifChannelكيف تعمل التنبيهات المدمجة في Claude Code، وما وظيفة كل قيمة من قيم preferredNotifChannel، وكيفية إعداد iTerm2 وApple Terminal وKitty وGhostty وtmux.
claude-code-notifier

Claude Code Notifier تطبيق مستقل تابع لجهة خارجية. وهو غير تابع لشركة Anthropic, PBC ولا معتمد أو مموّل منها. "Claude" و"Claude Code" علامتان تجاريتان لشركة Anthropic, PBC.

التطبيقات تطبيق iOS تطبيق Android ccn لأنظمة macOS وWindows وLinux كل الأدلة
قانوني سياسة الخصوصية شروط الخدمة لغات أخرى © 2026 touchtap. جميع الحقوق محفوظة. شركة TouchTap Ltd مسجلة في إنجلترا وويلز، رقم الشركة 13942589.