لا يعرض Claude Code افتراضيًا أي إشعار على سطح المكتب في Windows Terminal أو PowerShell أو terminal VS Code، لذا عليك إضافته بنفسك على Windows. ضع hook من نوع Notification (وhook من نوع Stop لإشعار الانتهاء) في %USERPROFILE%\.claude\settings.json يشغّل PowerShell: صندوق الرسائل يعمل دون تثبيت أي شيء، ووحدة BurntToast تمنحك إشعار toast حقيقيًا. وإذا كان Claude Code يعمل داخل WSL، فإن الـ hook يعمل في Linux، ولذلك يجب أن يستدعي powershell.exe عبر آلية interop في Windows ليصل إلى سطح مكتب Windows.
01Windows الأصلي أم WSL: أين تعمل الـ hooks
يعمل Claude Code إما مباشرة على Windows أو داخل WSL، وهذا ما يحدد طريقة عمل hook الإشعارات.
- Windows الأصلي. توجد الإعدادات في
%USERPROFILE%\.claude\settings.json. ووفقًا لـمرجع الـ hooks من Anthropic، تعمل hooks الأوامر افتراضيًا في Git Bash، أو في PowerShell إذا لم يكن Git Bash مثبتًا. يمكنك فرض PowerShell لـ hook واحد باستخدام"shell": "powershell"؛ وعندها يستخدم Claude Code pwsh.exe(PowerShell 7) إن وجده، وإلا فيستخدمpowershell.exe(Windows PowerShell 5.1). - WSL. أنت تثبّت
claudeوتشغّله داخل terminal WSL، لذا فملف الإعدادات هو ملف Linux، أي~/.claude/settings.jsonداخل التوزيعة، وتعمل الـ hooks في shell Linux. وعادةً لا يصلnotify-sendمن هناك إلى سطح مكتب Windows، لذا استدعِ برامج Windows بدلًا منه.
02اختبار سريع: جرس الـ terminal
أبسط إشارة هي الجرس. أضف ما يلي إلى ملف الإعدادات:
{
"preferredNotifChannel": "terminal_bell"
}
بعد ذلك يرسل Claude Code رمز الجرس عندما ينتهي أو ينتظرك. في Windows Terminal، يُحدَّد سلوك الجرس لكل profile عبر bellStyle في ملف settings.json الخاص به. فالقيمة "bellStyle": ["window", "taskbar"] تجعل النافذة وزرها في شريط المهام يومضان بدلًا من تشغيل صوت. وفي دليل جرس الـ terminal مزيد من التفاصيل حول هذا الأسلوب. لكنه لا يفيد إلا عندما يكون الـ terminal ظاهرًا أمامك.
03Notification hook باستخدام PowerShell
هذا مثال Windows من دليل الـ hooks الخاص بـ Anthropic، ويعمل دون تثبيت أي شيء:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
}
]
}
]
}
}
يفتح هذا مربع حوار وليس إشعار toast في زاوية الشاشة، وقد يظهر المربع خلف الـ terminal. اختبر الأمر في PowerShell أولًا، ثم اكتب /hooks في Claude Code للتأكد من تحميل الـ hook.
الـ matcher الفارغ يُطلق مع كل أنواع الإشعارات، بما فيها permission_prompt (طلب موافقة انتظر نحو ست ثوانٍ) وidle_prompt (انتهى Claude قبل نحو 60 ثانية). يشرح دليل Notification hook هذه التوقيتات.
04إشعار toast حقيقي باستخدام BurntToast
BurntToast وحدة PowerShell واسعة الانتشار يصونها المجتمع، مخصصة لإشعارات toast في Windows. ثبّتها مرة واحدة لمستخدمك:
Install-Module -Name BurntToast -Scope CurrentUser
ثم تحقق من أنها تعمل:
New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'
استخدمها في hook. يشغّل هذا الإصدار PowerShell دون profile ويتجاوز سياسة التنفيذ لهذا الاستدعاء فقط، فيتصرف بالطريقة نفسها سواء من Git Bash أو PowerShell:
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude needs your attention'\""
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
يعمل hook Stop في نهاية كل دور، فتعرف بانتهاء المهمة فورًا لا بعد دقيقة؛ راجع دليل Stop hook. أما "async": true فيشغّل الـ hook في الخلفية حتى لا يؤخر بطء تشغيل PowerShell عمل Claude Code.
إذا لم تظهر الإشعارات أبدًا، فافحص Settings > System > Notifications: يجب أن تكون الإشعارات مفعّلة ووضع Do Not Disturb متوقفًا. تظهر إشعارات BurntToast عادةً هناك تحت Windows PowerShell، والذي يجب السماح له بالإشعارات أيضًا.
05من WSL: استدعِ Windows عبر interop
داخل WSL يعمل الـ hook في Linux، لكن WSL يستطيع تشغيل برامج Windows باسمها مع اللاحقة .exe. ويشير دليل Anthropic إلى أن powershell.exe يجب أن يكون ضمن PATH عبر interop في Windows. وهذا هو الوضع الافتراضي، ويتحكم فيه الإعداد appendWindowsPath في قسم [interop] من /etc/wsl.conf. تحقق من ذلك من shell WSL:
command -v powershell.exe
بعد تثبيت BurntToast على جانب Windows، يكون الـ hook في ملف ~/.claude/settings.json داخل WSL هو الأمر نفسه:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"New-BurntToastNotification -Text 'Claude Code', 'Claude has finished'\"",
"async": true
}
]
}
]
}
}
قد يستغرق تشغيل Windows PowerShell من WSL ثانية أو أكثر، وهذا سبب إضافي لاستخدام "async": true.
06أين يأتي دور Claude Code Notifier
الـ hooks السابقة مناسبة ما دمت أمام جهازك، لكنها لا تفيدك بشيء حين تبتعد عنه، ولا يمكن لإشعار toast أن يوافق على أمر نيابةً عن Claude.
Claude Code Notifier أداة مستقلة (من تطوير TouchTap، لا Anthropic) مبنية على hooks Claude Code. أداة سطر الأوامر المجانية التابعة لها، ccn، تعمل على Mac وWindows وLinux، ودعم Windows في مرحلة beta. على Windows الأصلي، ثبّتها من PowerShell:
irm https://claudecodenotifier.com/install.ps1 | iex
تضيف الأداة إدخالات الـ hooks الخاصة بها إلى إعدادات Claude Code، وتترك بقية الملف كما هو، وتحتفظ بنسخة احتياطية. ومباشرةً تعرض إشعار toast في Windows عندما ينتهي Claude أو يحتاج إلى إذن أو يطرح سؤالًا، دون الحاجة إلى هاتف أو اتصال بالشبكة. ولأنها ترتبط بـ Claude Code لا بالـ terminal، فإنها تعمل بالطريقة نفسها في Windows Terminal وPowerShell والـ terminal المدمج في بيئات التطوير.
إذا كان Claude Code يعمل في WSL، فثبّت ccn داخل WSL باستخدام أمر Linux، لأن Claude Code وإعداداته موجودة هناك:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
ثم شغّل ccn test. وصول إشعار سطح المكتب من داخل WSL إلى سطح مكتب Windows يعتمد على إعداد WSL لديك، لذا فالهاتف هو الطريق الموثوق مع WSL. بعد ربط هاتف، تصلك الأحداث كإشعارات push، ويمكنك من الهاتف السماح بطلب الإذن مرة واحدة أو طوال الجلسة أو رفضه، والإجابة عن أسئلة Claude، وإرسال التعليمة التالية. راجع ربط الهاتف وصفحة ccn والأسعار لتطبيقات الهاتف.
إذا ثبّتَّ ccn، فاحذف hooks الـ toast الخاصة بك لتجنّب تكرار الإشعارات.
07الأسئلة الشائعة
لماذا لا يفعل hook PowerShell أي شيء على Windows؟
شغّل الأمر نفسه في PowerShell أولًا. إذا نجح هناك، فتحقّق من ظهور الـ hook في /hooks ومن صحة الـ escaping في JSON (كل " داخلية تحتاج إلى شرطة مائلة عكسية). أما مع BurntToast، فتأكّد من تثبيت الوحدة للمستخدم نفسه الذي يشغّل Claude Code، ومن إيقاف وضع «عدم الإزعاج».
هل يحتاج Claude Code على Windows إلى Git Bash لتشغيل hooks؟
لا. تعمل hooks في Git Bash إذا كان Git for Windows مثبّتًا، وفي PowerShell إن لم يكن كذلك. ويمكنك أيضًا ضبط "shell": "powershell" على أي hook بمفرده.
هل يعمل notify-send في WSL؟
غالبًا لا يصل إلى سطح مكتب Windows. الطريقة الموثوقة هي استدعاء powershell.exe من الـ hook عبر interop في WSL، كما هو موضّح أعلاه.
هل يستطيع Windows Terminal عرض إشعارات Claude Code بمفرده؟
ليس افتراضيًا. اضبط preferredNotifChannel على terminal_bell واختر قيمة bellStyle تجعل النافذة أو شريط المهام يومض، أو استخدم hook لعرض toast.
هل توجد طريقة مجانية للحصول على إشعار في Windows؟
نعم. hooks PowerShell أعلاه وإشعارات سطح المكتب في ccn كلاهما مجاني. تطبيقات الهاتف وحدها تتطلّب اشتراكًا أو شراءً مدى الحياة.