מדריך קלוד קוד בעברית

פרק 12

אוטומציה, סקריפטים וצנרת CLI

ערכת Agent SDK מעניקה את אותם הכלים, אותה לולאת סוכן ואותו ניהול הקשר שמפעילים את קלוד קוד. היא זמינה ככלי שורת פקודה (CLI) עבור סקריפטים ותהליכי CI/CD, או כחבילות Python ו-TypeScript לשליטה תכנותית מלאה.

להרצת קלוד קוד במצב לא אינטראקטיבי, מעבירים את הדגל -p יחד עם ההנחיה והאפשרויות הנדרשות משורת הפקודה:

claude -p "Find and fix the bug in auth.py" --allowedTools "Read,Edit,Bash"

חלק זה מתמקד בשימוש ב-Agent SDK דרך שורת הפקודה באמצעות claude -p. לחבילות SDK בשפות Python ו-TypeScript עם פלט מובנה, פונקציות חזרה לאישור כלים ואובייקטי הודעות מקוריים, עיינו בתיעוד המלא של Agent SDK.

#שימוש בסיסי

מוסיפים את הדגל -p (או --print) לכל פקודת claude כדי להריץ אותה באופן לא אינטראקטיבי. לא כל אפשרות CLI משתלבת עם -p:

  • קלוד קוד דוחה את הדגל --bg כאשר משלבים אותו עם -p, ומציג שגיאה המפרטת את ההתנגשות.
  • קלוד קוד דוחה את הדגל --cloud כאשר מועבר תיאור משימה יחד עם -p, ומציג שגיאה המפרטת את ההתנגשות.
  • העברת --cloud עם מזהה סשן קיים יחד עם הדגל -p מכניסה במקום זאת הודעה לתור של אותו סשן ענן ויוצאת.

אפשרויות שנפוץ לשלב עם -p:

  • הדגל --continue להמשך שיחות.
  • הדגל --allowedTools לאישור מראש של כלים.
  • הדגל --output-format לקבלת פלט מובנה.

דוגמה זו שואלת את קלוד שאלה על בסיס הקוד ומדפיסה את התשובה:

claude -p "What does the auth module do?"

קלוד קוד יוצא עם קוד 0 בהצלחה, ועם קוד שאינו אפס כאשר הריצה נכשלת, וכך סקריפטים יכולים להסתעף לפי סטטוס היציאה. אם מועבר דגל שאינו חוקי, קלוד קוד מדווח על השגיאה ל-stderr לפני תחילת הריצה. כאשר כשל מתרחש בתוך הריצה עצמה, כמו היעדר אימות, קלוד קוד מדפיס את הכשל כתוצאה ל-stdout.

#הפעלה מהירה במצב bare

הוספת הדגל --bare מקצרת את זמן העלייה על ידי דילוג על גילוי אוטומטי של hooks, סקילים, פקודות מותאמות אישית, סוכני משנה, תוספים, שרתי MCP, זיכרון אוטומטי וקובץ CLAUDE.md. ללא דגל זה, claude -p טוען את אותו ההקשר שסשן אינטראקטיבי היה טוען, כולל כל מה שמוגדר בתיקיית העבודה או בנתיב ~/.claude.

מצב bare שימושי לסביבות CI ולסקריפטים שבהם נדרשת אותה תוצאה בדיוק בכל מכונה. hook שמוגדר בנתיב ~/.claude של חבר צוות או שרת MCP מקובץ .mcp.json של הפרויקט לא ירוצו, כי מצב bare לעולם אינו קורא אותם. תיקייה ששמה צוין באמצעות הדגל --add-dir מהווה חריג חלקי: מצב bare טוען סקילים מתוך תיקיית .claude/skills/ שלה, אך עדיין מדלג על התיקיות .claude/commands/ ו-.claude/agents/ שלה.

ללא --bare, סשן -p מריץ את ה-hooks מתוך קובץ .claude/settings.json של הפרויקט ומתחבר לשרתים מתוך .mcp.json, אפילו בתיקייה שמעולם לא הוגדרה כמהימנה. סשן -p אינו מציג תיבת אישור אמון לסביבת העבודה ואינו מציג בקשת אישור לכל שרת.

דוגמה זו מריצה משימת סיכום חד פעמית במצב bare ומאשרת מראש את כלי הקריאה Read כדי שהקריאה תושלם ללא שאלת הרשאה:

claude --bare -p "Summarize README.md" --allowedTools "Read"

יש להגדיר את משתנה הסביבה ANTHROPIC_API_KEY לפני הרצת הפקודה, מכיוון שמצב bare אינו משתמש בהתחברות המנוי שלכם. במצב bare, קלוד קוד לעולם אינו קורא נתוני אימות של OAuth או את מחסן הסיסמאות של מערכת ההפעלה. עבור Anthropic API, מגדירים את ANTHROPIC_API_KEY בסביבה עם מפתח שנוצר ב-Claude Console, או מספקים apiKeyHelper בתוך ה-JSON של הדגל --settings. פלטפורמות Amazon Bedrock, Google Cloud Agent Platform ו-Microsoft Foundry ממשיכות לקרוא את פרטי האימות הרגילים של הספק שלהן.

במצב bare יש לקלוד גישה לכלי Bash, לקריאת קבצים ולעריכת קבצים. כל הקשר נוסף מועבר באמצעות דגלים:

כדי לטעוןהשתמשו בדגל
תוספות להנחיית המערכת--append-system-prompt, --append-system-prompt-file
הגדרות--settings <file-or-json>
שרתי MCP--mcp-config <file-or-json>
סוכנים מותאמים אישית--agents <json>
תוסף--plugin-dir <path>, --plugin-url <url>

מלכודת: הדגל --bare הוא המצב המומלץ לקריאות מסקריפטים ול-SDK, והוא מתוכנן להפוך לברירת המחדל עבור -p בגרסה עתידית.

#משימות רקע בעת יציאה

אם קלוד מתחיל משימת Bash ברקע במהלך ריצת claude -p, למשל שרת פיתוח או תהליך build בהאזנה, תהליך מעטפת זה מופסק כחמש שניות לאחר שקלוד החזיר את התוצאה הסופית וקלט ה-stdin נסגר. תקופת חסד זו מאפשרת למשימה שמסתיימת מיד לאחר התוצאה להעביר את הפלט שלה.

לעומת זאת, אם קלוד מפעיל סוכן משנה או תהליך עבודה (workflow) ברקע, ריצת claude -p נשארת פתוחה עד לסיום העבודה, משום שהתוצאה היא חלק מהפלט הסופי.

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

אם קלוד מפעיל האזנת מעקב מסוג Monitor watch במהלך ריצת claude -p, קלוד קוד ממתין להאזנה עד לפקיעת התוקף שלה או עד שתקרת 10 הדקות מסיימת את ההמתנה, המוקדם מביניהם. בזמן ההמתנה, קלוד ממשיך להגיב לדיווחים שמגיעים מההאזנה. כברירת מחדל, תוקף האזנה פוקע כעבור חמש דקות מרגע שקלוד הפעיל אותה.

#עצירת ריצה באמצעות SIGTERM

אם עוצרים ריצת claude -p באמצעות אות SIGTERM, למשל בעזרת פקודת kill או ממנהל תהליכים, קלוד קוד יוצא עם קוד 143. קלוד קוד משאיר את התור שהיה בעיצומו במצב לא גמור ואינו רושם עבורו תוצאה. כדי לסיים את התור במקום זאת, שלחו SIGINT או קראו לפונקציה interrupt() ב-Agent SDK לפני עצירת התהליך.

בעת קבלת SIGTERM, קלוד קוד מסיים את עץ התהליכים של כל פקודת Bash שעדיין רצה. לאחר מכן קלוד קוד מריץ hooks מסוג SessionEnd בלבד ויוצא. במהלך היציאה, קלוד קוד אינו מתחיל קריאת כלי חדשה, אינו שולח בקשת מודל חדשה ואינו מריץ שום hook אחר מלבד SessionEnd. אם הריצה הייתה באמצע פקודה או המתינה למענה בשאלת הרשאה כאשר האות הגיע:

  • הרצת פקודה: קלוד קוד רושם את הפקודה כמחוסלת בסשן.
  • המתנה למענה בשאלת הרשאה: אם נשלח SIGTERM לתהליך, קלוד קוד משאיר את השאלה ללא מענה. אם התוכנית שלכם סוגרת את הסשן דרך ה-Agent SDK, ה-SDK מסיים את הקלט של קלוד קוד לפני שליחת אות כלשהו, וקלוד קוד מבטל את שאלת ההרשאה ברגע שהקלט מסתיים.

בעת חידוש הסשן, קלוד קוד ממשיך את התור ש-SIGTERM השאיר לא גמור.

#דוגמאות מעשיות

דוגמאות אלו מדגישות דפוסי CLI נפוצים. בכל מקום שבו פקודה מציינת קובץ כמו auth.py או build-error.txt, החליפו אותו בקובץ מהפרויקט שלכם. בסביבות CI או בסקריפטים, הוסיפו את הדגל --bare כדי שקלוד קוד יתחיל בלי לטעון hooks, תוספים, זיכרון אוטומטי או קובץ CLAUDE.md מהמכונה המארחת.

#הזרמת נתונים דרך קלוד (צנרת וקלט stdin)

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

דוגמה זו מזרימה לוג בנייה לתוך קלוד וכותבת את ההסבר לקובץ:

cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

בשילוב הדגל --output-format json, גוף התגובה כולל את השדה total_cost_usd ופירוט עלויות לפי מודל, וכך סקריפטים יכולים לעקוב אחר הוצאות לכל קריאה מבלי לבדוק את לוח הבקרה. שני הנתונים הם הערכות בצד הלקוח ויכולים להיות שונים מהחשבון בפועל.

מלכודת: קלט מוזרם מ-stdin מוגבל לתקרה של 10MB. חריגה מהתקרה תגרום לקלוד קוד לצאת עם שגיאה ברורה וקוד סטטוס שאינו אפס. לקלטים גדולים יותר, כתבו את התוכן לקובץ והפנו לנתיב הקובץ בהנחיה במקום להזרים אותו בצנרת.

אם קלוד קוד אינו מצליח לקרוא מ-stdin, למשל משום שהתהליך שהפעיל אותו ניתק את החיבור שלו, קלוד קוד מדפיס אזהרה ל-stderr וממשיך עם ההנחיה משורת הפקודה. לפני גרסה v2.1.211, קלט בלתי קריא ב-Windows גרם לקריסת הסשן או ליציאה שקטה ללא פלט.

#הוספת קלוד לסקריפט בנייה

ניתן לעטוף קריאה לא אינטראקטיבית בתוך סקריפט כדי להשתמש בקלוד כבודק שגיאות או כסוקר קוד ייעודי לפרויקט.

סקריפט זה בקובץ package.json מזרים את ה-diff מול ענף main לתוך קלוד ומבקש ממנו לדווח על שגיאות הקלדה:

{
  "scripts": {
    "lint:claude": "git diff main | claude -p \"you are a typo linter. for each typo in this diff, report filename:line on one line and the issue on the next. return nothing else.\""
  }
}

מריצים אותו באמצעות הפקודה npm run lint:claude. הזרמת ה-diff בצנרת חוסכת מקלוד את הצורך בהרשאת Bash כדי לקרוא אותו, והמרכאות הכפולות המוברחות שומרות על תאימות גם ב-Windows.

#קבלת פלט מובנה

השתמשו בדגל --output-format כדי לשלוט באופן החזרת התגובות:

  • text (ברירת מחדל): פלט טקסט רגיל.
  • json: פלט JSON מובנה הכולל תוצאה, מזהה סשן ומטא דאטה.
  • stream-json: פלט JSON מופרד בשורות חדשות להזרמה בזמן אמת.

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

claude -p "Summarize this project" --output-format json

כדי לקבל פלט התואם לסכימה מוגדרת, משלבים את הדגלים --output-format json ו---json-schema יחד עם הגדרת JSON Schema. התגובה כוללת מטא דאטה על הבקשה (מזהה סשן, שימוש וכו') יחד עם הפלט המובנה בשדה structured_output.

דוגמה זו מחלצת שמות פונקציות ומחזירה אותם כמערך של מחרוזות:

claude -p "Extract the main function names from auth.py" \
  --output-format json \
  --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

אם הערך אינו סכימת JSON תקינה, claude יוצא עם השגיאה Error: --json-schema is not a valid JSON Schema ולאחריה אבחון הבדיקה. קלוד קוד מקבל סכימות שמשתמשות במילת המפתח format, כגון "format": "email", אך מתייחס ל-format כהערה בלבד ואינו אוכף אותה. לפני גרסה v2.1.205, קלוד קוד התעלם בשקט מסכימה לא תקינה והחזיר טקסט רגיל, והתייחס לכל סכימה המכילה format כלא תקינה.

טיפ: השתמשו בכלי כמו jq כדי לנתח את התגובה ולחלץ שדות ספציפיים:

# חילוץ תוצאת הטקסט
claude -p "Summarize this project" --output-format json | jq -r '.result'

# חילוץ הפלט המובנה
claude -p "Extract function names from auth.py" \
  --output-format json \
  --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \
  | jq '.structured_output'

#הזרמת תשובות בזמן אמת

השתמשו בדגל --output-format stream-json יחד עם --verbose ו---include-partial-messages כדי לקבל טוקנים בזמן יצירתם. כל שורה היא אובייקט JSON המייצג אירוע:

claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages

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

אם הצרכן שלכם קורא את הזרם באיטיות, קלוד קוד ממתין לריקון הפלט שבתור לפני היציאה, בהתאם לכמות הפלט שעדיין בתור ועד לתקרה של 30 שניות. לפני גרסה v2.1.214 תקרת ההמתנה ביציאה עמדה על כשתי שניות בלבד, מה שעלול היה לקטוע את סופה של תגובה ארוכה.

דוגמה זו משתמשת ב-jq כדי לסנן מקטעי טקסט (text deltas) ולהציג רק את הטקסט המוזרם. הדגל -r מחזיר מחרוזות גולמיות ללא גרשיים והדגל -j מחבר ללא שורות חדשות כדי שהטוקנים יוזרמו ברצף:

claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \
  jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

להזרמה תכנותית עם פונקציות חזרה (callbacks) ואובייקטי הודעה, עיינו בתיעוד ה-Agent SDK.

#מעקב אחר הודעות של סוכני משנה

הודעות מסוכני משנה מופיעות בזרם כהודעות assistant ו-user שבהן השדה parent_tool_use_id מכיל את מזהה קריאת הכלי שהפעילה את סוכן המשנה. הודעות מהשיחה הראשית נושאות ערך null בשדה זה.

ההודעה הראשונה מסוכן משנה שרץ בחזית היא הודעת user הנושאת את ההנחיה שמפעילה אותו. לאחר הודעה ראשונה זו, קלוד קוד פולט:

  • כברירת מחדל: את בלוקי tool_use ו-tool_result של סוכן המשנה.
  • עם הדגל --forward-subagent-text או משתנה הסביבה CLAUDE_CODE_FORWARD_SUBAGENT_TEXT: גם את בלוקי הטקסט והמחשבה של סוכן המשנה, וכך ניתן לשחזר את התמליל של כל סוכן משנה. אפשרות זו דורשת קלוד קוד v2.1.211 ומעלה.

כאשר מפעילים אחת מאפשרויות אלו, קלוד קוד מעביר הודעות מסוכני משנה בכל עומק קינון: כאשר סוכן משנה מפעיל סוכן משנה משלו, ההודעות של סוכן המשנה המקונן נושאות בשדה parent_tool_use_id את המזהה של קריאת כלי ה-Agent שהפעילה אותו, וכך ניתן לבנות מחדש את עץ הקינון המלא על ידי מעקב אחר מזהים אלו. לפני גרסה v2.1.219, הודעות מסוכני משנה מקוננים לא הופיעו בזרם.

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

#טיפול בניסיונות חוזרים ב-API

כאשר בקשת API נכשלת בשגיאה הניתנת לניסיון חוזר, קלוד קוד פולט אירוע system/api_retry לפני ביצוע הניסיון הבא. בגרסה v2.1.246 ומעלה, כאשר שגיאת 401 או 403 דוחה את פרטי האימות של apiKeyHelper, קלוד קוד מבצע את שני הניסיונות הראשונים בשקט ללא אירוע, ואז פולט את האירוע כרגיל מהניסיון השלישי הרצוף ואילך. הניסיונות השקטים נספרים בתוך השדה attempt. ניתן להשתמש באירוע כדי להציג את התקדמות הניסיונות החוזרים בממשק שלכם.

שדהסוגתיאור
type"system"סוג ההודעה
subtype"api_retry"מזהה את האירוע כאירוע ניסיון חוזר
attemptintegerמספר הניסיון הנוכחי, מתחיל ב-1
max_retriesintegerסך הניסיונות החוזרים המותרים לסיבת כשל זו, שיכול להיות נמוך מתקציב הסשן הכולל
retry_delay_msintegerמילישניות עד לניסיון הבא
error_statusinteger או nullקוד סטטוס HTTP של הניסיון שנכשל, או null כאשר לא התקבלה תגובת HTTP מה-API
no_responseobject, אופציונלימופיע רק כאשר הניסיון שנכשל לא קיבל כותרות תגובה בזמן. השדה waited_ms מציין כמה זמן הניסיון המתין, והשדה retry_wait_ms מציין כמה זמן ימתין הניסיון החוזר. באירועים אלה, max_retries משקף את הניסיון החוזר הבודד שסיבה זו מקבלת בדרך כלל, ולא את תקציב הסשן הכולל. דורש קלוד קוד v2.1.261 ומעלה
errorstringקטגוריית השגיאה: authentication_failed, oauth_org_not_allowed, account_on_hold, billing_error, rate_limit, overloaded, invalid_request, model_not_found, server_error, max_output_tokens, cloud_credential_error, או unknown
uuidstringמזהה ייחודי של האירוע
session_idstringהסשן שאליו שייך האירוע

#קריאת מטא דאטה של הסשן

אירוע system/init מדווח על מטא דאטה של הסשן כולל המודל, הכלים, שרתי MCP והתוספים שנטענו. זהו האירוע הראשון בזרם, אלא אם מקדימים אותו אירועי הפעלה:

  • אירועי plugin_install, כאשר משתנה הסביבה CLAUDE_CODE_SYNC_PLUGIN_INSTALL מוגדר.
  • אירועי hook_started, hook_progress ו-hook_response, בזמן שרץ hook מוגדר מסוג SessionStart או Setup. אירועים אלו מוזרמים בזמן שה-hook מייצר אותם. בגרסאות קלוד קוד v2.1.169 עד v2.1.203 הם נמסרו כמקבץ יחיד לאחר סיום ה-hook, עדיין לפני system/init. גרסה v2.1.204 החזירה מסירה ישירה בזמן אמת.

האירוע כולל גם מערך אופציונלי בשם capabilities המכיל מחרוזות של התנהגויות פרוטוקול שגרסת קלוד קוד זו מממשת, כגון interrupt_receipt_v1 או interrupt_cancel_queued_v1. מומלץ לבדוק שדה זה כדי לזהות יכולות במקום להשוות מחרוזות גרסה, ולהתעלם מערכים שאינכם מזהים. השדה דורש קלוד קוד v2.1.205 ומעלה ואינו קיים בגרסאות קודמות.

#הכשלת CI כאשר תוסף או שרת MCP לא נטענים

השתמשו בשדות התוספים באירוע system/init כדי לזהות תוסף שלא נטען:

שדהסוגתיאור
pluginsarrayתוספים שנטענו בהצלחה, כל אחד עם name ו-path
plugin_errorsarrayשגיאות בטעינת תוספים, כל אחת עם plugin, type ו-message. כולל גרסאות תלות שלא סופקו וכשלים בטעינת נתיב --plugin-dir כגון נתיב חסר או קובץ ארכיון לא תקין. תוספים שנפגעו מורדים בדרגה ואינם מופיעים ב-plugins. המפתח מושמט כאשר אין שגיאות

השתמשו בשדות שרתי MCP באותו אופן. כאשר מעבירים את הדגל --mcp-config יחד עם -p, קלוד קוד ממתין לשרתים שטרם סיימו להתחבר לפני הרצת התור הראשון, עד לתקרת הזמן להפעלה של MCP_TIMEOUT, העומדת על 30 שניות כברירת מחדל. שרת מרוחק בעל רשימת כלים שמורה במטמון מדלג על ההמתנה, מציג סטטוס pending ב-system/init, ומתחבר בקריאת הכלי הראשונה שלו. ההמתנה דורשת קלוד קוד v2.1.221 ומעלה.

קלוד קוד מאמת כל רשומה ב---mcp-config בעת ההפעלה ומדלג על רשומות שנכשלות באימות, למשל רשומת url ללא שדה type. הריצה ממשיכה ומסתיימת בצורה תקינה, ולכן יש לבדוק שדות אלו כדי לאתר שרת שמעולם לא נטען:

שדהסוגתיאור
mcp_serversarrayשרתי MCP בסשן, כל אחד עם name ו-status
mcp_server_errorsarrayרשומות --mcp-config שנדלגו עקב אימות הגדרות, כל אחת עם name, type ו-message. השדה type הוא קטגוריית דילוג כגון unknown_type, url_missing_type, invalid_config או reserved_name. יש להתייחס לערכים לא מוכרים כדילוג כללי. שרתים שנפגעו אינם מופיעים ב-mcp_servers. המפתח מושמט כאשר אין שגיאות, כך שבדיקת CI יכולה להיכשל אם המערך אינו ריק. דורש קלוד קוד v2.1.219 ומעלה

כאשר מריצים את הפקודה ידנית בטרמינל, קלוד קוד מדפיס גם אזהרת הפעלה ל-stderr, למשל Warning: 1 MCP server skipped due to invalid config:, ולאחריה הסיבה לכל רשומה שנדלגה. כאשר מפנים את stderr, או כאשר תוכנית כמו מריץ CI או מארח SDK לוכדת אותו, קלוד קוד אינו מדפיס אזהרה ומדווח על הרשומות שנדלגו רק בשדה mcp_server_errors. האזהרה דורשת קלוד קוד v2.1.219 ומעלה.

#מעקב אחר התקנת תוספים

כאשר משתנה הסביבה CLAUDE_CODE_SYNC_PLUGIN_INSTALL מוגדר, קלוד קוד פולט אירועי system/plugin_install בזמן התקנת תוספים מה-marketplace לפני התור הראשון. ניתן להשתמש בהם כדי להציג את התקדמות ההתקנה בממשק שלכם.

שדהסוגתיאור
type"system"סוג ההודעה
subtype"plugin_install"מזהה את האירוע כאירוע התקנת תוסף
status"started", "installed", "failed", או "completed"הערכים started ו-completed תוחמים את ההתקנה הכוללת. installed ו-failed מדווחים על כל marketplace בנפרד
namestring, אופציונלישם ה-marketplace, מופיע בסטטוסים installed ו-failed
errorstring, אופציונליהודעת שגיאה, מופיעה בסטטוס failed
uuidstringמזהה ייחודי של האירוע
session_idstringהסשן שאליו שייך האירוע

#אישור אוטומטי של כלים

השתמשו בדגל --allowedTools כדי לאפשר לקלוד להשתמש בכלים מסוימים ללא שאלת אישור. דוגמה זו מריצה סדרת בדיקות ומתקנת כשלים, ומאפשרת לקלוד להריץ פקודות Bash ולקרוא או לערוך קבצים ללא בקשת הרשאה:

claude -p "Run the test suite and fix any failures" \
  --allowedTools "Bash,Read,Edit"

כדי להגדיר נקודת מוצא לכל הסשן במקום לציין כל כלי בנפרד, מעבירים מצב הרשאות (permission mode). עבור -p, מצב ההרשאות ההתחלתי המובנה הוא Manual בכל התוכניות, ולכן יש להעביר את מצב ההרשאות הרצוי:

  • auto: העבירו --permission-mode auto כדי שמסווג יבדוק את רוב הפעולות במקומכם.
  • dontAsk: קלוד קוד דוחה כל קריאה שהייתה דורשת שאלה בדרך כלל, דבר שימושי לריצות CI נעולות ומאובטחות. פעולות שאינן דורשות אישור במצב Manual עדיין ירוצו, כגון קריאת קבצים בתיקיות העבודה וערכת הפקודות לקריאה בלבד, וכך גם פעולות שרשומות ה---allowedTools או כללי permissions.allow מכסים. הכלי AskUserQuestion, כלי connector שהארגון שלכם הגדיר כ-ask, וכלים של שרתי MCP המסומנים כ-requiresUserInteraction נדחים גם כאשר קיים כלל שמתיר אותם.
  • acceptEdits: קלוד כותב קבצים ללא בקשת אישור, וקלוד קוד מאשר אוטומטית פקודות מערכת קבצים נפוצות כגון mkdir, touch, mv ו-cp. הפעולות שאף מצב אינו מאשר אוטומטית עדיין חלות. מלבד ערכת הפקודות לקריאה בלבד, פקודות shell אחרות ובקשות רשת עדיין דורשות רשומה ב---allowedTools או כלל ב-permissions.allow.

דוגמה זו מחילה תיקוני lint עם acceptEdits כנקודת מוצא:

claude -p "Apply the lint fixes" --permission-mode acceptEdits

#כיבוי שאלות הרשאה בריצות ללא השגחה

העבירו --permission-prompts none כאשר אין אדם זמין למענה על שאלות הרשאה, למשל במשימה מתוזמנת. הדגל משמעותי במיוחד כאשר לריצה יש מארח הרשאות (permission host): אפליקציית Agent SDK עם פונקציית חזרה canUseTool, או כלי MCP שמועבר באמצעות --permission-prompt-tool. ללא הדגל, הריצה ממתינה לאותו מארח שיענה על כל בקשת הרשאה.

עם הדגל, הריצה אינה פונה למארח ואינה ממתינה לו. כל פעולה שהייתה מציגה שאלה נדחית, אלא אם hook מסוג PermissionRequest מאשר אותה. לקלוד נמסר שאין מי שיאשר את הבקשה ושאין לנסות אותה שוב, והריצה נמשכת. בריצת -p ללא מארח, בקשות אלו נדחות ממילא, והדגל גם מורה לקלוד לא לנסות אותן שוב. כללי הרשאות, hooks מסוג PermissionRequest ומצב ההרשאות שהוגדר עדיין מכריעים בכל קריאה תחילה. קלוד קוד דוחה רק את הבקשות שאף גורם אחר לא פתר.

דוגמה זו מריצה משימה ללא השגחה במצב auto. המסווג בודק כל פעולה כרגיל, וקלוד קוד דוחה כל מה שהיה מגיע לשאלת אישור:

claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none

עם --permission-prompts none, קלוד קוד מסיר את הכלים שדורשים מענה מאדם, כגון AskUserQuestion, כך שקלוד אינו יכול לקרוא להם. כל בקשת elicitation של שרת MCP ששום hook מסוג Elicitation אינו עונה עליה מבוטלת.

בשימוש ב---output-format stream-json, דחיות מופיעות כהודעות מערכת מסוג permission_denied, והודעת התוצאה הסופית מפרטת אותן בשדה permission_denials.

מלכודת: הדגל --permission-prompts דורש קלוד קוד v2.1.259 ומעלה. גרסאות קודמות דוחות אותו עם שגיאת אפשרות לא מוכרת.

#יצירת commit

דוגמה זו בודקת שינויים ב-staged ויוצרת commit עם הודעה מתאימה:

claude -p "Look at my staged changes and create an appropriate commit" \
  --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

הדגל --allowedTools משתמש בתחביר כללי הרשאות. התו * בסוף מאפשר התאמת קידומת (prefix matching), כך ש-Bash(git diff *) מתיר כל פקודה שמתחילה ב-git diff. הרווח לפני ה-* חשוב: בלעדיו, Bash(git diff*) היה מתאים גם ל-git diff-index.

תמיכה בפקודות במצב -p:

  • סקילים ופקודות מותאמות אישית שהמשתמש מפעיל פועלים כרגיל. כללו /skill-name במחרוזת ההנחיה וקלוד קוד מרחיב אותו לפני ההרצה.
  • פקודות מובנות שרצות רק בממשק הטרמינל, כגון /login, אינן זמינות.
  • הפקודות /model, /effort, /fast, /color ו-/rename מקבלות ערך כארגומנט, למשל /model sonnet, והפקודה /mcp ללא ארגומנטים מדפיסה סיכום טקסט של סטטוס השרתים. צורות אלו דורשות קלוד קוד v2.1.205 ומעלה.
  • לשינוי הגדרה, העבירו key=value לפקודה /config, למשל /config thinking=false.
  • הפקודה /output-style <style> מחליפה סגנון פלט, והרצת /output-style לבדה מציגה את רשימת הסגנונות. דורש קלוד קוד v2.1.269 ומעלה.

#התאמה אישית של הנחיית המערכת

השתמשו בדגל --append-system-prompt כדי להוסיף הנחיות תוך שמירה על התנהגות ברירת המחדל של קלוד קוד. דוגמה זו מזרימה בצנרת diff של PR לתוך קלוד ומנחה אותו לבדוק פרצות אבטחה. שמרו זאת כסקריפט מעטפת, למשל review.sh:

gh pr diff "$1" | claude -p \
  --append-system-prompt "You are a security engineer. Review for vulnerabilities." \
  --output-format json

בסקריפט זה, "$1" מייצג את הארגומנט הראשון שמועבר בשורת הפקודה. הרצה של bash review.sh 123 גורמת למעטפת להחליף את "$1" ב-123, וכך הסקריפט מביא את ה-diff עבור PR 123. קלוד קוד מדפיס את הסקירה כמבנה JSON, כאשר הטקסט מופיע בשדה result.

להחלפה מלאה של הנחיית ברירת המחדל במקום הוספה עליה, ניתן להשתמש בדגל --system-prompt.

#המשך שיחות

השתמשו בדגל --continue כדי להמשיך את השיחה האחרונה, או בדגל --resume עם מזהה סשן כדי להמשיך שיחה ספציפית. בגרסה v2.1.257 ומעלה, כאשר מעבירים --continue, קלוד קוד פותח סשן רקע שהסתיים, אך לא סשן שעדיין רץ. דוגמה זו מריצה סקירה ולאחר מכן שולחת הנחיות המשך:

# First request
claude -p "Review this codebase for performance issues"

# Continue the most recent conversation
claude -p "Now focus on the database queries" --continue
claude -p "Generate a summary of all issues found" --continue

אם מנהלים מספר שיחות במקביל, ניתן ללכוד את מזהה הסשן כדי לחדש סשן ספציפי:

session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')
claude -p "Continue that review" --resume "$session_id"

ניתן להריץ את שתי הפקודות מתיקיות שונות: קלוד קוד מוצא את הסשן לפי המזהה שלו בכל פרויקט במכונה. לפני גרסה v2.1.223, קלוד קוד חיפש את המזהה רק בתיקיית הפרויקט הנוכחית וב-git worktrees שלה, ולכן היה צורך להריץ את שתי הפקודות מאותה תיקייה.

במקום מזהה סשן, ניתן להעביר לדגל --resume את הנתיב המוחלט לקובץ תמליל .jsonl של הסשן, וקלוד קוד ימשיך את השיחה השמורה באותו קובץ.

#צעדים הבאים

  • מדריך מהיר ל-Agent SDK: בניית הסוכן הראשון שלכם ב-Python או TypeScript.
  • תיעוד שורת הפקודה (CLI reference): פירוט כל דגלי ואפשרויות ה-CLI.
  • GitHub Actions: שימוש ב-Agent SDK בתהליכי עבודה של GitHub.
  • GitLab CI/CD: שימוש ב-Agent SDK בצינורות עבודה של GitLab.