איך גורמים ל-Claude Code להריץ משימות אוטומטית כל יום (גם כשהאפליקציה סגורה)
משימה מתוזמנת מתוך הדסקטופ תלויה בכך שהאפליקציה פתוחה — וזה לא אמין. הדרך הנכונה: מצב Headless (claude -p) + מתזמן של מערכת ההפעלה (launchd/cron/Task Scheduler). כך משימה רצה כל יום לבד, גם כשהאפליקציה סגורה.
הידעת?
משימה מתוזמנת שמוגדרת מתוך אפליקציית הדסקטופ של Claude רצה רק כשהאפליקציה פתוחה. הדרך האמינה להרצה אוטומטית יומית היא מצב Headless (claude -p) מופעל על ידי מתזמן של מערכת ההפעלה — launchd, cron או Task Scheduler — שממשיך לעבוד גם כשהחלון סגור.
כדי לגרום ל-קלוד קוד (Claude Code) להריץ משימה אוטומטית כל יום — גם כשהאפליקציה סגורה — אל תסתמכו על משימה מתוזמנת מתוך אפליקציית הדסקטופ (היא רצה רק כשהחלון פתוח). במקום זה מריצים את קלוד במצב Headless עם הפקודה claude -p (הוראה אחת, בלי חלון אינטראקטיבי), ומתזמנים אותה עם מתזמן של מערכת ההפעלה: launchd ב-macOS, cron או systemd ב-Linux, ו-Task Scheduler ב-Windows. המתזמן מפעיל את הפקודה בזמן שקבעתם בלי קשר לאפליקציה — התנאי היחיד הוא שהמחשב יהיה דלוק. אם צריך הרצה גם כשהמחשב כבוי, עוברים לענן (Cloud Routines).
בקצרה (TL;DR)
- אפליקציית דסקטופ = לא אמין. משימה מתוזמנת מתוכה רצה רק כשהחלון פתוח והמחשב ער. חלון סגור = לא רץ, בלי התראה.
- מצב Headless (
claude -p) = הבסיס. הרצה לא-אינטראקטיבית של הוראה אחת עד הסוף — בדיוק מה שמתזמן צריך. - מתזמן של מערכת ההפעלה = האמינות.
launchd(macOS),cron/systemd(Linux), Task Scheduler (Windows). עצמאי, רץ ברקע. - התנאי: המחשב דלוק. הרצה כשהמחשב כבוי דורשת ענן — Cloud Routines (צריך GitHub).
- בטיחות: מגבילים כלים (
--allowedTools), צעדים (--max-turns) ותקציב, ומריצים בתיקייה מבודדת.
למה משימה מתוזמנת רגילה בדסקטופ לא מספיק אמינה
אפליקציית הדסקטופ של Claude יודעת להריץ "משימות מתוזמנות", וזה נוח לניסוי — אבל יש בזה מלכוד אחד גדול: המשימה רצה בתוך תהליך האפליקציה עצמה. המשמעות המעשית:
- סגרתם את החלון? המשימה לא תרוץ.
- המחשב נכנס לשינה? לא תרוץ.
- האפליקציה קרסה או התעדכנה? לא תרוץ — ובלי שום התראה שמשהו פוספס.
לאוטומציה אמיתית — "כל בוקר ב-8 תסכם לי את המיילים", "כל לילה תריץ בדיקת אתר" — אתם צריכים מנגנון שלא אכפת לו אם פתחתם את האפליקציה או לא. המנגנון הזה כבר קיים בכל מחשב: המתזמן של מערכת ההפעלה. הוא רכיב עצמאי שרץ ברקע, שמופקד בדיוק על "הרץ את הדבר הזה בזמן הזה", והוא לא תלוי בשום אפליקציה שתהיה פתוחה. כל מה שנשאר הוא לתת לו להפעיל את קלוד בצורה שמתאימה לרקע — כלומר במצב Headless.
מה זה מצב Headless (claude -p)
באופן רגיל אתם מריצים claude ונפתחת שיחה אינטראקטיבית בטרמינל. זה נהדר לעבודה מול המסך, אבל חסר טעם למתזמן — אין שם בן אדם שיקליד.
מצב Headless פותר את זה. מוסיפים את הדגל -p (מלשון print / prompt) ונותנים את ההוראה כמחרוזת אחת:
claude -p "סכם את שלושת המיילים האחרונים ושמור לקובץ daily-summary.md"
קלוד מקבל את ההוראה, מבצע אותה מהתחלה ועד הסוף (כולל קריאה לכלים, כתיבת קבצים, קריאות MCP — לפי מה שהרשיתם), מחזיר פלט לפלט התקני (stdout) ויוצא. אין חלון, אין שאלות באמצע, אין המתנה. זו בדיוק הצורה שמתזמן יכול להפעיל לבד: פקודה אחת, נכנסת ויוצאת. אם אתם רוצים להעמיק בעולם האוטומציות והרוטינות ב-Claude Code, מצב Headless הוא אבן היסוד של כולן.
סקריפט הרנר — התבנית
במקום להריץ פקודה חשופה מהמתזמן, כדאי לעטוף אותה בסקריפט רנר קטן. ככה יש לכם מקום אחד לנהל את הנתיב, את המשתנים ואת ההגבלות, ומקום לתעד לוג. תבנית בסיסית ל-macOS/Linux:
#!/bin/bash
# ~/automations/daily-summary.sh
export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"
cd "$HOME/automations/workspace" || exit 1
claude -p "עבור על המשימות של היום וכתוב סיכום ל-report.md" \
--allowedTools "Read,Write,Bash" \
--max-turns 12 \
>> "$HOME/automations/logs/daily-$(date +\%F).log" 2>&1
שלוש נקודות שחוסכות כאב ראש: (1) מגדירים PATH במפורש — מתזמן לא טוען את פרופיל ה-shell שלכם, ובלי זה הוא פשוט לא ימצא את הפקודה claude. (2) עושים cd לתיקיית עבודה קבועה ומבודדת. (3) מפנים את הפלט והשגיאות ללוג, כדי שתוכלו לבדוק בדיעבד מה קרה בכל הרצה. אחרי שהסקריפט עובד כשמריצים אותו ידנית — מחברים אותו למתזמן.
לתזמן ב-macOS (launchd)
ב-macOS המתזמן הרשמי הוא launchd (לא cron — הוא קיים אבל מיושן ב-Mac). מגדירים קובץ .plist בתיקייה ~/Library/LaunchAgents/, למשל com.tzedek.daily-summary.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>com.tzedek.daily-summary</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/you/automations/daily-summary.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict><key>Hour</key><integer>8</integer><key>Minute</key><integer>0</integer></dict>
</dict>
</plist>
טוענים אותו פעם אחת עם launchctl load ~/Library/LaunchAgents/com.tzedek.daily-summary.plist, ומאותו רגע launchd יריץ את הסקריפט כל יום ב-08:00 — גם אם אפליקציית Claude סגורה לגמרי. אם המחשב היה ישן בזמן היעד, launchd יריץ את המשימה ברגע שהוא מתעורר. חשוב: זה עדיין דורש שהמחשב יהיה דלוק (או במצב שינה שממנו הוא מתעורר); Mac כבוי לחלוטין לא יריץ כלום.
לתזמן ב-Linux (cron / systemd timer)
ב-Linux יש שתי דרכים. הפשוטה היא cron — עורכים את הטבלה עם crontab -e ומוסיפים שורה אחת:
0 8 * * * /home/you/automations/daily-summary.sh
זה מריץ את הסקריפט כל יום ב-08:00. cron מצוין לשרתים שדלוקים תמיד (VPS, ענן). החיסרון: אם המכונה הייתה כבויה בדיוק בזמן היעד, cron לא ישלים את ההרצה בדיעבד.
הדרך המודרנית והחזקה יותר היא systemd timer: מגדירים זוג קבצים — daily-summary.service (מה להריץ) ו-daily-summary.timer (מתי). היתרון הגדול הוא Persistent=true, שגורם ל-timer להשלים הרצה שפוספסה כשהמכונה חוזרת לפעול — בדיוק מה שרוצים ל-workstation שלא תמיד דלוק. בשני המקרים ההרצה עצמאית לחלוטין מכל אפליקציית דסקטופ.
לתזמן ב-Windows (Task Scheduler)
ב-Windows המנגנון המקביל הוא Task Scheduler. פותחים אותו, יוצרים משימה חדשה (Create Task), ומגדירים:
- Trigger: יומי, בשעה הרצויה.
- Action: Start a program — למשל
wsl.exeשמריץ סקריפט bash, או ישירות אתclaudeעם הפרמטרים. - Settings: מסמנים "Run whether user is logged on or not" כדי שהמשימה תרוץ ברקע גם בלי שתהיו מחוברים, ו-"Run task as soon as possible after a scheduled start is missed" כדי להשלים הרצה שפוספסה.
התוצאה זהה: קלוד קוד רץ במצב Headless בזמן שקבעתם, בלי קשר לכך שאפליקציית הדסקטופ פתוחה. גם כאן — המחשב צריך להיות דלוק בזמן היעד.
בטיחות — לתת לסוכן לרוץ לבד בלי להסתכן
משימה שרצה לבד, בלי בן אדם שמאשר כל צעד, מחייבת גדרות ברורות. ארבעה כללים:
--allowedTools— הגבילו כלים. תנו רק את מה שהמשימה באמת צריכה (למשלRead,Writeבלבד לסיכום). ככה סוכן שרץ לבד לא יכול פתאום למחוק קבצים או להריץ פקודות מסוכנות.--max-turns— הגבילו צעדים. תקרה על מספר הצעדים מונעת ממשימה שנתקעה להיכנס ללולאה שרצה שעות ושורפת טוקנים.- תקציב (
--max-budget-usdוכד'). תקרת עלות לכל הרצה מבטיחה שאפילו טעות לא תפתיע אתכם בחשבון. - תיקייה מבודדת. הריצו תמיד בתיקיית עבודה ייעודית (ה-
cdבסקריפט הרנר), ולא בשורש הבית או בתוך ריפו רגיש. סוכן אוטונומי צריך ארגז חול משלו.
הצירוף של ארבעת אלה הוא מה שהופך "סוכן שרץ לבד" ממתכון לצרות למשהו שאפשר לישון בשקט לצידו. את התבנית המלאה — סקריפט הרנר, קבצי ה-launchd/cron/Task Scheduler, ההגבלות והלוגים — ארזנו כערכה מוכנה ב-ערכת האוטומציה המתוזמנת, כדי שתחברו משימה יומית אמינה על המחשב שלכם בלי לבנות הכול מאפס.
מתי ענן עדיף (Cloud Routines)
לכל השיטות למעלה יש תנאי אחד משותף: המחשב צריך להיות דלוק בזמן ההרצה. זה מצוין לשרת שרץ 24/7, אבל פחות לנייד שסגרתם בתיק. אם אתם צריכים משימה שרצה גם כשהמחשב כבוי לגמרי, התשובה היא ענן.
Anthropic מציעה Cloud Routines — הרצה מתוזמנת של Claude Code בתשתית שלהם, שלא תלויה בשום מחשב שלכם. אתם מגדירים לוח זמנים והמשימה רצה בענן, גם בלילה, גם כשאתם בחופש. המחיר: זה דורש חיבור מאגר GitHub (שם קלוד עובד על הקוד/ההקשר), אז זה מתאים בעיקר לזרימות שמבוססות ריפו. הכלל הפשוט: צריך רק שהמשימה תרוץ כשהמחשב ממילא דלוק? מתזמן מקומי (launchd/cron/Task Scheduler) מספיק ובחינם. צריך אמינות גם כשהמחשב כבוי? Cloud Routines.
שורה תחתונה
"סוכן שרץ לבד כל יום" זה לא קסם — זה שני רכיבים שמתחברים: מצב Headless (claude -p) שנותן הרצה אחת נקייה, ומתזמן של מערכת ההפעלה (launchd, cron/systemd, או Task Scheduler) שמפעיל אותה בזמן קבוע בלי תלות באפליקציה פתוחה. הוסיפו גדרות בטיחות (--allowedTools, --max-turns, תקציב, תיקייה מבודדת) והמשימה רצה אמינה כל עוד המחשב דלוק. צריך יותר מזה — הרצה גם כשהמחשב כבוי — עוברים ל-Cloud Routines בענן. אם אתם רוצים להעמיק, כדאי קלוד (Claude) בעברית — המדריך המרכזי ו-אוטומציות ורוטינות ב-Claude Code. רוצים שנחבר לכם משימה יומית אמינה על המחשב שלכם, מקצה לקצה? קחו שיעור פרטי 1-על-1 ונעשה את זה יחד.
שאלות נפוצות
איך גורמים ל-Claude Code להריץ משימה אוטומטית כל יום גם כשהאפליקציה סגורה?
מריצים את קלוד קוד (Claude Code) במצב Headless עם הפקודה claude -p (הוראה אחת, בלי חלון אינטראקטיבי), ומתזמנים אותה עם מתזמן של מערכת ההפעלה: launchd ב-macOS, cron או systemd timer ב-Linux, ו-Task Scheduler ב-Windows. המתזמן מריץ את הפקודה בזמן שהגדרתם בלי קשר לאפליקציית הדסקטופ. התנאי היחיד: שהמחשב יהיה דלוק באותו רגע. אם צריך הרצה גם כשהמחשב כבוי — צריך ענן (Cloud Routines).
למה משימה מתוזמנת מתוך אפליקציית הדסקטופ לא מספיק אמינה?
כי היא רצה בתוך תהליך האפליקציה. אם החלון סגור, המחשב במצב שינה, או האפליקציה קרסה — המשימה פשוט לא תרוץ, בלי התראה. מתזמן של מערכת ההפעלה (launchd/cron/Task Scheduler) הוא רכיב עצמאי שממשיך לעבוד ברקע בלי תלות בכך שהאפליקציה פתוחה.
מה זה מצב Headless ב-Claude Code?
זה הרצה לא-אינטראקטיבית של קלוד קוד עם הדגל -p (למשל claude -p "סכם את המיילים"). במקום לפתוח שיחה בטרמינל, קלוד מקבל הוראה אחת, מבצע אותה עד הסוף ומחזיר פלט — בדיוק מה שצריך כדי שמתזמן יוכל להפעיל אותו לבד, בלי בן אדם שיושב מול המסך.
מתי עדיף להריץ בענן ולא על המחשב? כשאתם צריכים שהמשימה תרוץ גם כשהמחשב כבוי או נייד, או כשאתם רוצים אמינות מלאה בלי לתחזק שרת ביתי. Anthropic מציעה Cloud Routines — הרצה מתוזמנת של Claude Code בענן. זה דורש חיבור מאגר GitHub, אבל משחרר אתכם מהתלות במחשב מסוים שדלוק.