בלוג

Claude Code: מגבלת 30 דקות לפקודות רקע

Markdown

Claude Code מפסיק פקודת רקע אחרי 30 דקות בהרצות ללא השגחה: ‎-p, Agent SDK, CI וענן. כך מגדילים את המגבלה ומה עושים אחרי שפקודה נעצרת.

קריאת המאמר המלא

Claude Code מפסיק פקודת רקע אחרי 30 דקות כשהיא פועלת ללא השגחה: הפעלה עם הדגל -p, יישום Agent SDK, משימת CI או הפעלה בענן. אם Claude מגדיר לפקודה עצמה זמן, היא תפעל לכל היותר שעתיים, בעוד שבטרמינל הרגיל, באפליקציית שולחן העבודה וב-VS Code אין מגבלה מאז גרסה 2.1.288.

פעם הייתי יושב מול המסך כל היום: נותן לסוכן שלב, בודק, מתקן ומבקש ממנו להמשיך. שלב אחר שלב. ייתכן שהמחשב כתב את הקוד, אבל אני הייתי זה שמפעיל אותו. עכשיו אני כותב תוכנית, מחלק אותה לשלבים, מוסר את המימוש לתתי-סוכנים למשך הלילה והולך. במשך 8 שעות בלעדיי, Claude מתקדם בתוכנית: לומד, בונה ומשפר. בבוקר אני משקיע יותר זמן באישור העבודה מאשר בעשייה מחדש.

אבל אם הרצה לילית משתמשת ב--p, פועלת לפי לוח זמנים בשרת, ב-CI או בענן, שרת פיתוח ותהליך build שפועלים ברקע יימשכו 30 דקות. ואז Claude Code יעצור אותם, והעבודה הלילית תיתקע באמצע. אסביר על מי חלה המגבלה, איך להגדיל אותה ומה לעשות אם פקודה כבר נעצרה. נתחיל.

לעזרה בשימוש בשירות, עיינו בתיעוד Ailoot.

הנקודה המרכזית

מאז גרסה 2.1.285, Claude Code עוצר בעצמו פקודות רקע כשהן מגיעות למגבלת הזמן ומודיע ל-Claude מה הסיבה. מאז גרסה 2.1.288, המגבלה חלה רק על הרצות ללא השגחה: -p, ‏Agent SDK, ‏CI והפעלות בענן. פקודה שהופעלה ישירות ברקע פועלת במשך 30 דקות או במשך הזמן שהוגדר לה, אך לא יותר משעתיים. פקודה שהועברה לרקע לאחר פקיעת זמן ההמתנה פועלת במשך 30 דקות מאותו רגע. אפשר להגדיל את המגבלה באמצעות 2 משתנים בקובץ ההגדרות ~/.claude/settings.json.

על מי חלה המגבלה

פקודת רקע היא פקודה ש-Claude מפעיל ומשאיר פועלת בזמן שהוא עסוק במשהו אחר. לדוגמה, שרת פיתוח שהופעל באמצעות npm run dev, או build שעוקב אחר שינויים בקבצים.

בתיעוד Claude Code נכתב:

בהפעלה ללא השגחה, כגון הרצה עם הדגל -p, יישום Agent SDK, משימת CI או הפעלה בענן, לפקודות Bash ו-PowerShell ברקע יש מגבלת זמן. להפעלה מקומית שבה אתם עובדים בטרמינל, באפליקציית שולחן העבודה או בתוסף VS Code אין מגבלת זמן לפקודות רקע.

מגבלת הזמן מחייבת את Claude Code בגרסה 2.1.285 ואילך. לפני גרסה 2.1.288 היא חלה בכל הפעלה.

— Anthropic, מדריך הכלים, https://code.claude.com/docs/en/tools-reference.md

במילים אחרות, המגבלה חלה כשאתם לא נמצאים שם: הרצה עם -p, יישום Agent SDK, משימת CI או הפעלה בענן. כשאתם עובדים בעצמכם בהפעלה, אין מגבלה בטרמינל, באפליקציית שולחן העבודה או ב-VS Code. המגבלה הוכנסה בגרסה 2.1.285 וחלה בכל מקום לפני גרסה 2.1.288.

כך תדעו אם המגבלה חלה עליכם:

  • פתחתם את Claude Code בטרמינל או ב-VS Code, נתתם לו משימה והלכתם לישון. אין מגבלה אם הגרסה היא 2.1.288 ואילך. בגרסאות 2.1.285 עד 2.1.287 היא חלה גם במקרה הזה. הסברתי איך לעדכן לגרסה האחרונה במאמר נפרד.
  • Claude Code מופעל באמצעות claude -p "task" לפי לוח זמנים, מתוך יישום Agent SDK משלכם או ב-CI. המגבלה חלה.
  • המשימה פועלת בהפעלה בענן. המגבלה חלה.

כשאני מגדיר סוכנים לעבודה עצמאית, אני מבקש בהנחיה: “כתבו את התנאים האלה ואת הסיבות לעצירה בתוכנית העבודה. בדקו שהתהליך אינו תלוי בחלון שאסגור או במחשב עצמו.” מגבלת 30 הדקות היא אחת הסיבות האלה.

כמה זמן פועלת פקודת רקע

הספירה לאחור מתחילה כשהפקודה עוברת לרקע. יש 2 מקרים.

Claude מפעיל את הפקודה ישירות ברקע. היא מקבלת 30 דקות. אם Claude מציין זמן כשהוא מפעיל אותה (הפרמטר timeout), היא מקבלת את הזמן הזה, אך לא יותר משעתיים.

הפקודה לא מסתיימת בזמן ש-Claude ממתין לה. Claude ממתין 2 דקות לפקודה רגילה. אם היא לא הסתיימה, Claude Code לא עוצר אותה; הוא מעביר אותה לרקע. מרגע זה עומדות לרשותה 30 דקות.

כשהזמן מסתיים, Claude Code עוצר את הפקודה ומודיע ל-Claude:

Background command "<description>" was stopped after reaching its background time limit

אם העבודה לא הסתיימה, Claude יכול להריץ את הפקודה שוב עם זמן ארוך יותר.

ועוד נקודה לגבי -p. בהרצה מסוג זה, פקודות רקע מסתיימות בערך 5 שניות לאחר התשובה הסופית של Claude. שרת שהופעל בהרצה לילית עם -p יפעל רק כל עוד ההרצה עצמה נמשכת. מגבלת 30 הדקות חשובה כשההרצה נמשכת יותר זמן: Claude מפעיל שרת בתחילת ההרצה ומקדיש שעה להרצת בדיקות מולו.

איך לארגן עבודה לילית ב-Claude Code

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

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

בדוגמה המתוארת, במשך 3 ימים הושלמו בדרך זו 8 מתוך 14 שלבים.

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

איך להגדיל את המגבלה

אפשרות 1: לבקש מ-Claude. Claude בוחר את הזמן לפקודה מסוימת; אתם לא מגדירים אותו בעצמכם. אבל אפשר לכתוב במשימה: “השאר את שרת הפיתוח ברקע למשך שעתיים.” כך אי אפשר לקבל יותר משעתיים.

אפשרות 2: משתנים בקובץ ההגדרות. הערכים הם במילישניות. אי אפשר להוריד את המגבלות מתחת ל-30 דקות ולשעתיים; אפשר רק להגדיל אותן.

  • BASH_DEFAULT_TIMEOUT_MS אם מגדירים אותו מעל 1800000 (30 דקות), ברירת המחדל של 30 דקות משתנה. הוא חל גם על פקודות ש-Claude מפעיל ברקע בלי לציין זמן וגם על פקודות שמועברות לרקע לאחר פקיעת זמן ההמתנה. אם מגדירים אותו מעל 7200000 (שעתיים), גם התקרה עולה.
  • BASH_MAX_TIMEOUT_MS אם מגדירים אותו מעל 7200000, תקרת השעתיים עולה. הוא לא משנה את ברירת המחדל של 30 דקות: פקודה ללא זמן מוגדר משלה עדיין תיעצר אחרי 30 דקות.

ל-BASH_DEFAULT_TIMEOUT_MS יש תופעת לוואי. אותו משתנה קובע כמה זמן Claude ממתין לפקודה רגילה לפני שהוא מעביר אותה לרקע. הגדירו אותו לשעה, ו-Claude ימתין שעה במקום 2 דקות. זה לא מפריע בלילה. במהלך היום תמתינו זמן רב יותר לתגובה כשפקודות נמשכות זמן רב.

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

קובץ ההגדרות נמצא בתיקיית .claude בספריית הבית שלכם: ~/.claude/settings.json ב-macOS וב-Linux, וב-Windows: %USERPROFILE%\.claude\settings.json. אם הקובץ לא קיים, צרו אותו. כך נראית מגבלה של שעה:

{
  "env": {
    "BASH_DEFAULT_TIMEOUT_MS": "3600000"
  }
}

אם כבר יש בקובץ בלוק env, הוסיפו אליו את השורה. הפעלה פעילה תקלוט את הערכים החדשים כשתשמרו את הקובץ. הסרת משתנה תיכנס לתוקף רק בפעם הבאה שתפעילו את claude.

הקובץ חייב להימצא במחשב שבו הסוכן פועל. כדי שהסוכן יעבוד בלילה, המחשב חייב להישאר ער. לחלופין, הפעילו את Claude Code בשרת מרוחק ושמרו שם את ההגדרות.

אם הפקודה כבר נעצרה

אין צורך לעשות דבר ידנית. Claude Code מודיע ל-Claude למה פקודה נעצרה, לכן קודם פשוט שאלו אותו מה קרה.

לאחר מכן פעלו שלב אחר שלב:

  1. הרצה חד-פעמית ארוכה של עד שעתיים. בקשו מ-Claude להריץ את הפקודה שוב עם זמן ארוך יותר.
  2. פקודות זקוקות באופן קבוע ליותר מ-30 דקות. הגדירו את BASH_DEFAULT_TIMEOUT_MS לערך גבוה מ-1800000 בקובץ ההגדרות, כפי שמוצג בדוגמה למעלה. אם אתם צריכים יותר משעתיים, הגדירו שם גם את BASH_MAX_TIMEOUT_MS לערך גבוה מ-7200000.
  3. הריצו את הפקודה שוב. התיעוד אינו מבטיח דבר לגבי פקודה שכבר פעלה ברקע לפני השינוי.
  4. בדקו את תוצאת ההרצה הבאה. אם הדיווח של Claude שוב כולל את הביטוי “stopped after reaching its background time limit”, ההגדרה לא חלה על הפקודה הזאת.

תתי-סוכנים ושגרות הם אלה שמאפשרים לסוכן להמשיך לעבוד כשאתם לא נמצאים.

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

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

מקורות

  • Claude Code: מדריך הכלים - על אילו הרצות חלה המגבלה, גרסאות 2.1.285 ו-2.1.288, 30 דקות ושעתיים, העברת פקודות לרקע לאחר פקיעת זמן ההמתנה, נוסח ההודעה והמשתנים BASH_DEFAULT_TIMEOUT_MS ו-BASH_MAX_TIMEOUT_MS.
  • Claude Code: משתני סביבה - ברירת המחדל של 2 דקות לפקודה רגילה, בלוק env בקובץ ~/.claude/settings.json ומועד קליטת הערכים החדשים בהפעלה.
  • Claude Code: מצב ללא ממשק - הרצות עם ‎-p; פקודות רקע מסתיימות בערך 5 שניות לאחר התשובה הסופית.
  • Claude Code: הגדרות - מיקום ~/.claude/settings.json ב-Windows.

הכירו את Ailoot.

פרטים נוספים

שאלות ותשובות: Claude Code: מגבלת 30 דקות לפקודות רקע

האם מפגש אינטראקטיבי שנשאר פתוח בלילה כפוף למגבלת 30 הדקות?

ב-Claude Code 2.1.288 ומעלה, המגבלה המתוארת במאמר חלה על הרצות ללא השגחה כגון -p, Agent SDK, CI ומפגשי ענן. השארת מפגש מקומי אינטראקטיבי רגיל פתוח אינה מכניסה אותו לקטגוריה הזאת.

האם הגדלת זמן ההמתנה תשאיר שרת פועל אחרי סיום הרצת -p?

לא. פקודות רקע בהרצת -p מסתיימות זמן קצר אחרי התשובה הסופית. שינוי זמן ההמתנה משפיע על משך הפקודה במהלך ההרצה; הוא אינו הופך אותה לאירוח מתמשך.

כל המאמרים