מה זה Hooks ב-Claude Code?

Hooks ב-Claude Code הם פקודות מערכת (shell) שרצות אוטומטית באירועים מוגדרים במחזור-החיים — למשל לפני או אחרי שימוש בכלי, בתחילת סשן או כשקלוד מסיים לענות. בניגוד להוראה ב-CLAUDE.md, Hook רץ ללא תלות בהחלטת המודל, ולכן הוא מנגנון אכיפה דטרמיניסטי.

עודכן ב-28 ביוני 2026

מונחים נרדפים (עברית): ווים · פקודות אוטומטיות באירוע · נקודות-עיגון במחזור-החיים
English: Hooks · Claude Code lifecycle hooks
הגדרה באנגלית: Hooks in Claude Code are shell commands that run automatically at defined lifecycle events (before or after a tool call, at session start, when Claude stops, and more). Unlike a CLAUDE.md instruction, a hook runs regardless of what the model decides, making it a deterministic enforcement layer.

הבעיה ש-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 יכול לעצור קריאה לכלי לפני שהיא רצה, בשלוש דרכים:

#!/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
🔎 הערת אימות (FLAG): שמות האירועים, מיקומי ההגדרה (מפתח 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 וסוכני-משנה — בעברית, עם דוגמאות מעשיות.

לעמוד הקורס