מה זה Hooks ב-Claude Code?
Hooks ב-Claude Code הם פקודות מערכת (shell) שרצות אוטומטית באירועים מוגדרים במחזור-החיים — למשל לפני או אחרי שימוש בכלי, בתחילת סשן או כשקלוד מסיים לענות. בניגוד להוראה ב-CLAUDE.md, Hook רץ ללא תלות בהחלטת המודל, ולכן הוא מנגנון אכיפה דטרמיניסטי.
עודכן ב-28 ביוני 2026
הבעיה ש-Hooks פותר
הוראות ב-CLAUDE.md הן בקשה מנומסת — קלוד מנסה לכבד אותן, אבל אין ערובה שזה יקרה בכל פעם. כשצריך ודאות — שכל קובץ ייעבר בפורמט אחרי עריכה, שאף פקודת מחיקה מסוכנת לא תרוץ, שבדיקות יורצו לפני כל commit — בקשה לא מספיקה. Hook הופך את ה"בבקשה" ל"תמיד": פקודה אמיתית שרצה מעצמה ברגע הנכון.
אירועי ה-Hooks הנפוצים
כל Hook נקשר לאירוע. אלה הנפוצים ביותר:
| אירוע | מתי רץ |
|---|---|
PreToolUse | לפני שכלי מופעל — יכול גם לחסום אותו |
PostToolUse | אחרי שכלי הסתיים בהצלחה (למשל לפרמוט אוטומטי) |
UserPromptSubmit | כששולחים פרומפט, לפני שקלוד מעבד אותו |
SessionStart | כשסשן מתחיל או מתחדש |
Stop | כשקלוד מסיים לענות |
SubagentStop | כשסוכן-משנה מסיים את עבודתו |
PreCompact | לפני דחיסת ההקשר |
זו רשימה חלקית של הנפוצים — בגרסאות העדכניות קיים סט אירועים רחב הרבה יותר (כ-30, כולל אירועי הרשאות, תת-סוכנים, worktree ועוד). את הסט המלא והמדויק כדאי לאמת תמיד מול התיעוד הרשמי.
איפה מגדירים Hooks
Hooks מוגדרים בקובצי ה-settings תחת המפתח hooks, עם matcher (לאיזה כלי) ורשימת פקודות:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{ "type": "command", "command": "/path/to/block-rm.sh" }
]
}
]
}
}
אפשר להגדיר אותם ברמת הפרויקט (.claude/settings.json), ברמת הפרויקט-המקומית (.claude/settings.local.json), ברמת המשתמש (~/.claude/settings.json), במדיניות מנוהלת, וגם בתוך תוספים (Plugins) או ב-frontmatter של Skill/Agent.
איך Hook חוסם פעולה
Hook מסוג PreToolUse יכול לעצור קריאה לכלי לפני שהיא רצה, בשלוש דרכים:
- יציאה עם קוד 2: ה-Hook יוצא עם
exit 2, וה-stderrשלו מועבר לקלוד כשגיאה. - JSON עם permissionDecision: יציאה תקינה עם פלט JSON שבו
"permissionDecision": "deny"וסיבה. - JSON עם decision: פלט עם
"decision": "block"לחסימה פשוטה.
#!/bin/bash
command=$(jq -r '.tool_input.command')
if echo "$command" | grep -q 'rm -rf'; then
echo "Destructive rm -rf blocked" >&2
exit 2 # blocks the tool call
fi
exit 0
hooks), ושלוש דרכי החסימה של PreToolUse אומתו מול התיעוד הרשמי code.claude.com/docs/en/hooks נכון ל-28 ביוני 2026 (Claude Code v2.1). רשימת האירועים המלאה מתרחבת בין גרסאות — אמתו מול המקור לפני הסתמכות.
שאלות נפוצות
מה ההבדל בין Hook לבין הוראה ב-CLAUDE.md?
CLAUDE.md הוא הקשר שקלוד מנסה לפעול לפיו — בלי ערובה לציות מוחלט. Hook הוא פקודת מערכת שרצה אוטומטית באירוע מוגדר, ללא תלות בהחלטת המודל. לכן כל דבר שחייב לקרות תמיד (לפני commit, אחרי עריכת קובץ) עדיף לממש כ-Hook.
האם Hook יכול לחסום פעולה של Claude?
כן. Hook מסוג PreToolUse יכול לחסום קריאה לכלי — ביציאה עם קוד 2 (וה-stderr עובר לקלוד), או בפלט JSON עם permissionDecision: "deny", או עם decision: "block".
איפה מגדירים Hooks?
בקובצי ה-settings תחת המפתח hooks — ברמת הפרויקט (.claude/settings.json), המקומית (.claude/settings.local.json), המשתמש (~/.claude/settings.json), מדיניות מנוהלת, וגם בתוך Plugins או ב-frontmatter של Skill/Agent.
מהם אירועי ה-Hooks הנפוצים?
הנפוצים: PreToolUse, PostToolUse, UserPromptSubmit, SessionStart, Stop, SubagentStop ו-PreCompact. בגרסאות העדכניות יש רשימה רחבה יותר (כ-30) — כדאי לאמת את הסט המלא מול התיעוד הרשמי.
רוצים ללמוד לכתוב Hooks שמגינים על הקוד שלכם?
קורס Claude Code Mastery מלמד Hooks, Skills וסוכני-משנה — בעברית, עם דוגמאות מעשיות.
לעמוד הקורס