لتتلقى إشعارًا عندما ينتهي Claude Code، أضف hook من نوع Stop إلى ~/.claude/settings.json يشغّل أمر الإشعارات في نظامك. يُطلَق Stop لحظة انتهاء Claude من الرد. ولحالة "Claude يحتاج إلى مدخلاتي"، أضف أيضًا hook من نوع Notification: يُطلَق عندما ينتظر طلب إذن نحو ست ثوانٍ، أو عندما يبقى Claude خاملًا لنحو دقيقة. يعمل كلاهما على Mac وWindows وLinux، ويمكن لأداة مثل Claude Code Notifier إرسال التنبيهات نفسها إلى هاتفك.
01ما يفعله Claude Code تلقائيًا
يحاول Claude Code بالفعل تنبيهك حين يبدو أنك بعيد عن الـ terminal. افتراضيًا يرسل إشعار سطح مكتب في iTerm2 وGhostty وKitty، وقد يرسل رمز جرس (bell) في Apple Terminal، ولا يفعل شيئًا في غيرها. كما يتطلب iTerm2 تفعيل إعدادات التنبيه قبل أن يظهر أي شيء.
لذا إن كنت تستخدم terminal في VS Code أو Warp أو Windows Terminal أو معظم terminals في Linux، فلن يصلك غالبًا أي شيء. يمكنك فرض جرس الـ terminal عبر الإعداد preferredNotifChannel، كما هو مشروح في دليل جرس الـ terminal. أما للحصول على إشعار سطح مكتب حقيقي في أي terminal، فتحتاج إلى hook.
02الـ hooks التي تحتاجها
الـ hooks أوامر يشغّلها Claude Code عند نقاط محددة في الجلسة. يهمّنا هنا اثنان منها:
Stopعندما ينتهي Claude من الرد (لا عند مقاطعتك له)"انتهى Claude"Notification مع matcher permission_promptانتظر طلب إذن نحو ست ثوانٍ دون أن تكتب شيئًا"Claude يحتاج إلى موافقة"Notification مع matcher idle_promptبعد نحو 60 ثانية من انتهاء Claude، إن لم تكتب شيئًا منذ ذلكتذكير بأن الدور عليكStop هو الأسرع، إذ يعمل فورًا في نهاية كل دورة. أما أنواع Notification فمشروطة بابتعادك: كل ضغطة مفتاح تؤجلها، فلا يصلك تنبيه وأنت تتابع. إن أردت إشارة فور طلب Claude للإذن، فاستخدم hook من نوع PermissionRequest بدلًا من ذلك، كما هو موضح في دليل PermissionRequest.
لمعرفة طريقة عمل الـ hooks عمومًا (الأحداث والـ matchers وملفات الإعدادات ورموز الخروج)، راجع شرح hooks في Claude Code.
03إعداد جاهز على macOS
افتح ~/.claude/settings.json (أنشئه إن لم يكن موجودًا) وأضف ما يلي. إن كان الملف يحتوي على كائن hooks، فأضف Stop وNotification كمفاتيح داخله بدلًا من استبداله.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude has finished\" with title \"Claude Code\"'"
}
]
}
],
"Notification": [
{
"matcher": "permission_prompt|idle_prompt",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
}
]
}
]
}
}
لا يملك Stop أي matcher، لذا يُطلَق في كل دورة. أما matcher الخاص بـ Notification فيقصره على النوعين اللذين يعنيان "عُد".
إن لم يظهر شيء، فقد يكون macOS يحظر Script Editor الذي يستخدمه osascript لعرض الإشعارات. شغّل osascript -e 'display notification "test"' مرة واحدة في Terminal، ثم افتح System Settings > Notifications، وابحث عن Script Editor وفعّل Allow Notifications.
04الإعداد نفسه على Linux وWindows
احتفظ ببنية JSON أعلاه واستبدل سلاسل command فقط.
Linux (يتطلب خدمة إشعارات لسطح المكتب، لذا لا يعمل على خادم بلا واجهة رسومية):
"command": "notify-send 'Claude Code' 'Claude has finished'"
إذا لم يكن notify-send مثبتًا، فثبّت libnotify-bin على Debian وUbuntu، أو الحزمة المقابلة في توزيعتك. أما لإعدادات SSH والخوادم، فراجع الإشعارات عبر SSH.
Windows (PowerShell). يفتح المثال الرسمي من Anthropic نافذة رسالة بدلًا من إشعار منبثق في زاوية الشاشة:
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude has finished', 'Claude Code')\""
قد تظهر النافذة خلف نافذة الـ terminal، لذا جرّب الأمر في PowerShell أولًا. وفي WSL، يجب أن يكون powershell.exe متاحًا عبر ميزة التشغيل البيني مع Windows. يتناول دليل Windows خيارات أخرى.
05تحقّق من أنه يعمل
- اكتب
/hooksفي Claude Code. يُفترض أن تظهر الـ hooks الخاصة بك تحتStopوNotification. - اطرح على Claude سؤالًا قصيرًا. عندما يرد، يُفترض أن يظهر إشعار
Stop. - اطلب شيئًا يحتاج إلى إذن، ثم انتقل إلى نافذة أخرى وانتظر. سيصل إشعار
permission_promptبعد ست ثوانٍ تقريبًا.
تُطبَّق التعديلات على settings.json عادةً فورًا. إذا لم يظهر hook في /hooks، فتأكد من أن الملف JSON صالح (بلا فواصل زائدة في النهاية ولا تعليقات). شغّل Claude Code بالأمر claude --debug لترى ما فعله كل hook. ستجد حلولًا أخرى في قائمة استكشاف الأخطاء وإصلاحها.
06استلام التنبيه على هاتفك
لا يفيد إشعار سطح المكتب إلا إذا كنت أمام جهازك. فإذا ابتعدت، تحتاج إلى التنبيه في مكان آخر. وهناك ثلاث طرق شائعة:
- خدمة push تشغّلها بنفسك، مثل ntfy، تُستدعى عبر
curlمن الـ hooks نفسها. رخيصة ومرنة. راجع دليل ntfy. - webhook لتطبيق دردشة مثل Telegram أو Slack أو Discord. خيار جيد إن كنت تقضي وقتك في الدردشة أصلًا. راجع دليل webhooks الدردشة.
- Claude Code Notifier، الذي يتولى إعداد الـ hooks نيابةً عنك ويتيح لك الرد من الهاتف.
الطرق اليدوية حل مناسب إن كان كل ما تريده تنبيهًا بسيطًا. لكن عيبها أنها أحادية الاتجاه: تعرف أن Claude ينتظرك، ثم تضطر للعودة إلى لوحة المفاتيح للموافقة على أي شيء.
Claude Code Notifier أداة مستقلة (ليست من Anthropic) تتكون من جزأين: ccn، وهي أداة سطر أوامر مجانية لأنظمة Mac وWindows وLinux، وتطبيقات لـ iPhone وAndroid. ثبّتها بسطر واحد:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
على Windows، استخدم irm https://claudecodenotifier.com/install.ps1 | iex في PowerShell (دعم Windows لا يزال تجريبيًا). تجد خيارات أخرى، منها Homebrew وnpx @touchtap/ccn وإضافة Claude Code، في صفحة ccn.
يضيف التثبيت سبعة إدخالات hook يشغّل كلٌّ منها ccn hook، ويُبقي بقية settings.json كما هي، ويحفظ نسخة احتياطية لمرة واحدة بجانبه. وحتى بدون هاتف، يعرض ccn إشعارًا على سطح المكتب عندما ينتهي Claude أو يحتاج إلى إذن أو يطرح سؤالًا. هذا الجزء مجاني ويعمل دون اتصال بالشبكة.
اربط هاتفًا باستخدام ccn pair لتحصل أيضًا على:
- إشعار push بعنوان "انتهى Claude" فور انتهاء كل دور؛
- طلبات الإذن التي يمكنك السماح بها مرة واحدة، أو طوال الجلسة، أو رفضها؛
- أسئلة Claude متعددة الخيارات، تجيب عنها من الهاتف؛
- مربع متابعة لإرسال التعليمة التالية إلى Claude فور انتهائه.
إذا كتبت شيئًا خلال آخر 30 ثانية، فلن ينتظر أي شيء الهاتف وسيسألك الـ terminal كالمعتاد. تتطلب التطبيقات اشتراكًا أو شراءً مدى الحياة؛ راجع الأسعار. ويشرح دليل ربط الهاتف خطوات الإعداد.
07الأسئلة الشائعة
لماذا يتأخر تشغيل Notification hook لديّ؟
ينتظر النوع permission_prompt حتى يبقى الطلب ظاهرًا نحو ست ثوانٍ دون أن تكتب شيئًا، بينما ينتظر idle_prompt نحو 60 ثانية بعد انتهاء Claude. هذا التأخير مقصود حتى لا تصلك تنبيهات وأنت تتابع الشاشة. استخدم hook من نوع Stop لتنبيه فوري بالانتهاء، وhook من نوع PermissionRequest لتنبيه فوري عند الحاجة إلى موافقة.
هل يعمل Stop hook إذا ضغطت Esc لمقاطعة Claude؟
لا. لا يعمل Stop عندما ينتهي الدور بسبب مقاطعتك له، ولا عندما ينتهي بخطأ في API مثل تجاوز حد الاستخدام. في هذه الحالة يطلق Claude Code حدثًا منفصلًا هو StopFailure، ويمكنك ربط hook به بالطريقة نفسها.
هل يعمل Stop hook بعد كل رسالة، أم فقط عند إنجاز المهمة كاملة؟
بعد كل دور. لا يعرف Claude Code متى تنتهي مهمتك ككل، بل يعرف فقط متى توقف عن الرد. فإذا كانت المحادثة طويلة، ستتلقى تنبيهًا مع كل رد. وإن وجدت ذلك كثيرًا، فاستخدم إشعار idle_prompt بدلًا منه، إذ لا يعمل إلا بعد غيابك نحو دقيقة.
هل يعمل هذا في terminal ضمن VS Code أو JetBrains؟
نعم. تعمل الـ hooks من Claude Code نفسه لا من الـ terminal، لذا تعمل في أي terminal، بما في ذلك terminal بيئات التطوير. أما الإشعارات المدمجة فهي التي تعتمد على الـ terminal. راجع دليل terminal بيئات التطوير.
هل يمكنني تلقي الإشعارات على هاتفي دون تثبيت أي شيء عليه؟
جزئيًا. يمكن لـ hook يرسل إلى ntfy أو إلى webhook دردشة أن يصل إلى تطبيق لديك بالفعل، لكنه يكتفي بإخبارك بما حدث. وللموافقة أو الرد من الهاتف، تحتاج إلى شيء يعيد ردك إلى الـ hook، وهذا ما تفعله تطبيقات Claude Code Notifier.