ניתוח מלא של מנגנון Claude Code Hooks: חמישה סוגי אירועים, בקרת קודי יציאה וארבעה תצורות אמיתיות להפיכת פעולות AI לניתנות לביקורת, עצירה ואוטומציה.
בכל פעם ש-Claude Code קורא קובץ, כותב קוד או מריץ פקודה, מערכת אירועים פועלת ברקע. Hooks הם הממשק להתחבר למערכת זו — ניתן להזריק לוגיקה משלך בכל עת: להריץ linters אוטומטית, לתעד פעולות, לחסום פעולות מסוכנות, או להפעיל כל פקודת shell.
מאמר זה מכסה באופן מלא את מנגנון ה-Hooks, הגדרתם ושימוש מעשי בהם.
Hooks הם פקודות shell המוגדרות ב-settings.json ש-Claude Code מריץ אוטומטית כאשר מתרחשים אירועים ספציפיים.
האנלוגיה הישירה ביותר: git hooks. ל-git יש יכולת להפעיל סקריפטים לפני ואחרי פעולות כמו commit ו-push. Claude Code Hooks פועלים בדיוק אותו אופן — ההבדל הוא שנקודות ההפעלה הן קריאות לכלים של ה-AI.
למה זה חשוב?
ככל ש-Claude Code הופך לחזק יותר, כך יש צורך גדול יותר בשכבת שליטה דטרמיניסטית. Hooks מספקים:
- ערבויות הרצה שאינן תלויות ב-prompt (Claude עשוי להתעלם מהוראות, אך hook תמיד יורץ)
- יומני פעולות הניתנים לביקורת
- בדיקות איכות אוטומטיות
| סוג | מפעיל | שימוש טיפוסי |
|---|---|---|
PreToolUse |
לפני קריאה לכלי | חסימת פעולות מסוכנות |
PostToolUse |
אחרי קריאה לכלי | Auto-lint, הרצת בדיקות |
PreCompact |
לפני דחיסת הקשר | שמירת snapshot של המצב |
Notification |
כאשר Claude שולח התראה | התראות desktop, Slack |
Stop |
כאשר Claude מסיים תגובה | סיכום לוגים |
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{"type": "command", "command": "npm run lint --silent"}]
}
]
}
}
שלושה שדות מרכזיים: matcher — regex לשמות כלים; type — רק "command"; command — כל פקודת shell.
| קוד | משמעות |
|---|---|
0 |
הצלחה, המשך ביצוע |
2 |
חסימה: בטל קריאה לכלי, שלח stderr ל-Claude |
| אחר שאינו אפס | תעד שגיאה, המשך |
עיצוב אוטומטי לאחר כתיבת קבצים — PostToolUse על Write|Edit, מריץ rubocop לקבצי .rb.
מניעת מחיקת תיקיות — PreToolUse על Bash, מחזיר קוד 2 בזיהוי rm .*/migrations.
יומן ביקורת — PostToolUse על Write|Edit|Bash, מוסיף ל-~/.claude/audit.log.
התראה בסיום — Stop hook, מריץ osascript או notify-send.
גלובלי (~/.claude/settings.json): כללים לכל הפרויקטים. רמת פרויקט (.claude/settings.json): בדיקות ספציפיות. שני הסטים מתמזגים ורצים יחד. מומלץ לבצע commit ל-settings.json של הפרויקט ב-git.
Write זה לא writeecho "triggered" >> /tmp/hook.logהערך המרכזי של Hooks הוא חיבור התנהגות AI בלתי-צפויה עם תקנים הנדסיים דטרמיניסטיים. התחל עם hook אחד: auto-lint לאחר כתיבת קבצים.