המדריך המלא ל-Claude
→ חזרה לנושא
פרק 17 · CLI

Hooks: אוטומציה על מחזור חיי הסשן

Hooks הם פקודות שרצות אוטומטית באירועים מוגדרים במחזור החיים של הסשן: לפני כלי, אחרי כלי, בהודעות ועוד. הם מאכפים איכות ומדיניות בלי לסמוך על זיכרון.

אומת מול המקור בתאריך 2026-09-30

סרטון פתיחה

אירוע אחד, לא כל ההרשאות

תבדקו היקף, קלט אירוע ו-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 באירוע.

הרשאה מפתיעה: החלטות רחבות ומצב בפועל.

סוד בלוג: עצירת איסוף ובדיקת שמירה וגישה.

כשל לא חוסם: סמנטיקה של האירוע, בלי הבטחת אכיפה.

המחשת מנגנון (אנימציה)

דמו מצולם · הסרטון יתווסף בשלב המדיה

סיכום

בדיקת הבנה

למה משתמשים ב-hooks?

סיכום

מקורות וקריאה נוספת

→ הקודם חזרה לנושא הבא ←