אירוע אחד, לא כל ההרשאות
תבדקו היקף, קלט אירוע ו-script ללא השפעות לפני רישום. הפלטים להמחשה.
Hook guide נבדק ב-30 בספטמבר 2026. Hooks הם handlers שמריצים קוד באירועי מחזור החיים. אפשר גם endpoint וסוגים נוספים. זו הגדרה עם קוד, לא קיצור פרומפט.
אירוע והשפעה
התראה קטנה מ-auto-approval או deploy. הגדירו Notification, matcher של idle_prompt, בלי רשת, כתיבה או החלטת הרשאה. ה-script בתרגיל מאמת קלט סינתטי בלבד.
תכנן Notification hook מסונן ל-idle_prompt בפרויקט ריק.
תחילה החזר תוכנית dry-run, JSON צפוי ומקרי בדיקה.
בלי התקנה, רשת, רישום פרומפטים, auto-approval או deploy.
הסבר היקף settings והסרת hook זה בלבד.
/hooks הוא תפריט קריאה לפי התיעוד הנוכחי. רישום אמיתי דורש עריכת settings. קראו הגדרות קיימות לפני שינוי כדי לא למחוק hooks אחרים.
קלט ופלט
Command hook מקבל JSON ב-stdin. שדות תלויים באירוע; Notification אינו קלט Bash PreToolUse. פרשו מידע, אל תריצו פקודה או נתיב מתוך הקלט.
ב-PreToolUse, exit 0 לבדו אינו אישור כלי; ההרשאות הרגילות נשארות. Exit 2 יכול לחסום באירוע מתאים. כשלים אחרים עשויים לא לחסום. Script התראה אינו שער אבטחה.
Parser ללא השפעה
שמרו script בתרגול, לא ברישום hook:
import json
import sys
event = json.load(sys.stdin)
if not isinstance(event, dict):
raise ValueError("Expected a JSON object")
if event.get("hook_event_name") != "Notification":
raise ValueError("Expected Notification")
# No output, network, file write or permission decision.
הזינו אובייקט סינתטי מתאים, אירוע שגוי ו-JSON פגום. זו בדיקת parser, לא מסלול hook חי. Exception הוא כשל בדיקה, לא הבטחה לחסימה בכל אירוע.
רשומה להמחשה:
התראה תקינה: יציאה רגילה.
אירוע שגוי: כשל אימות.
JSON פגום: כשל לפני השפעה.
Hook חי: לא נרשם ולא נבדק.
רישום הוא שינוי נוסף
לאחר בדיקת schema ו-settings אפשר לרשום handler צר בפרויקט זמני. נתיב מוחלט מהימן, timeout מתאים ובדיקת אירוע בפועל. הימנעו מ-shell עם נתיבים לא מהימנים. אין לאשר אוטומטית כל PermissionRequest כדי לחסוך הפרעות.
HTTP hook שולח נתוני אירוע לשרת; פרומפט, נתיב ופקודה יכולים להיות רגישים. Hooks עם מודל יכולים לצרוך usage. דרושה בדיקת מידע ועלות נפרדת.
מה לא הוכח
PostToolUse מגיע אחרי פעולה ולא מבטל אותה. Edit|Write מפספס כתיבה דרך Bash. Handlers תואמים יכולים כולם לרוץ גם כשאחר דוחה; denial אינו מונע השפעה של אחיו.
מסנן מילת מפתח קטן אינו מדיניות אבטחה מלאה. הגנה נשענת על הרשאות, בידוד ובדיקות אמיתיות.
תרגול מדורג
קל: אירוע
אירוע ו-matcher. הצלחה: קלט והשפעה ברורים.
בינוני: Parser
תקין, שגוי ופגום. הצלחה: אין השפעות ואין טענת בדיקה חיה.
מאתגר: ניקוי
מצאו רשומת settings. הצלחה: הסרה שומרת אחרים.
תקלות
לא מופיע: scope ומבנה JSON.
רץ יותר מדי: תמיכת matcher באירוע.
הרשאה מפתיעה: החלטות רחבות ומצב בפועל.
סוד בלוג: עצירת איסוף ובדיקת שמירה וגישה.
כשל לא חוסם: סמנטיקה של האירוע, בלי הבטחת אכיפה.