דילוג לתוכן הראשי

מצב אוטומטי בקלוד קוד: מה המסווג לא רואה

מאת ירון דויטשר עודכן לאחרונה:

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

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

מה המסווג בכלל רואה?

מצב אוטומטי אינו רשימת כללים. הוא מודל נפרד שרץ לפני כל פעולה ומחליט אם להריץ אותה. השאלה המעניינת אינה מה הוא חוסם, אלא מה מגיע אליו בכלל — והתיעוד של Anthropic עונה על זה בשורה אחת ישירה:

המסווג רואה הודעות משתמש, קריאות כלים שאינן שליפות לקריאה בלבד, ואת תוכן ה-CLAUDE.md שלכם. תוצאות הכלים נחתכות, כך שתוכן עוין בקובץ או בדף אינו יכול לתמרן אותו ישירות.

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

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

ובדיוק אותה החלטה יוצרת את נקודת העיוורון.

השרשרת שהודגמה, שלב אחר שלב

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

הפרטים חשובים כאן יותר מהכותרת:

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

החוקר מדד שלוש וריאציות ודיווח על הצלחה ב-60% עד 80% מהניסיונות. הוא גם כתב במפורש שאלה מדגמים קטנים ולא מדידה כללית של שיעור הצלחה, וכדאי לצטט אותו כך ולא אחרת.

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

למה זה עבר, ולמה זה לא באג

עכשיו חברו את שני החלקים. בכל אחד מהשלבים, כל מה שהיה זדוני ישב בתוכן שחזר — בגוף התגובה של השרת, בקבצים שבתוך הארכיון, בשם הקובץ שבתיקייה. כלומר בדיוק בחומר שהמסווג אינו מקבל.

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

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

מה Anthropic אמרה, ומה היא עשתה

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

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

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

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

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

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

המספרים, ביושר

שווה להכיר את מה שנמדד, כי הוא מצייר תמונה מאוזנת יותר משתי הכותרות הקיצוניות.

Anthropic בדקה את המסווג על שלושה מאגרים: עשרת אלפים קריאות כלים אמיתיות של עובדים, 52 מקרים מתועדים שבהם עובד עצר פעולה נמרצת מדי, ואלף ניסיונות מסונתזים של הוצאת מידע. בצינור המלא שיעור ההתרעות השגויות ירד ל-0.4% — כלומר הוא כמעט אינו מפריע לעבודה שגרתית. במקביל, שיעור ההחמצה עמד על 17% בקטגוריית הפעולות הנמרצות מדי ועל 5.7% בניסיונות הוצאת המידע.

17% אינו מספר רע למסנן. הוא מספר בלתי אפשרי לגבול אבטחה. זה כל ההבדל.

אז מה כן עוצר את זה?

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

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

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

3. נקודות עצירה אנושיות במקומות הנכונים. כלל ask ממוקד-תוכן מכריח שאלה גם במצב אוטומטי:

{
  "permissions": {
    "ask": [
      "Bash(git push *)",
      "Bash(gh pr create *)"
    ]
  }
}

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

4. לספר למסווג איפה אתם גרים. ברירת המחדל שלו סומכת רק על תיקיית העבודה ועל ה-remotes שהוגדרו לה בתחילת הסשן. ארגון הקוד של החברה, ה-bucket המשותף וה-registry הפנימי נחשבים יעד חיצוני עד שתגידו אחרת — וכשקלוד רץ בקונטיינר או בפוד יש עכשיו גם ערך ייעודי לתיאור המצב הזה, שבלעדיו כללי ה-Containment Escape חוסמים גם שימוש לגיטימי. הפירוט המלא נמצא במצב אוטומטי לא מכיר את התשתית שלכם.

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

{
  "autoMode": {
    "classifyAllShell": true
  }
}

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

6. ולמי שרוצה לתקוף את נקודת העיוורון ישירות: אפשר להזרים למסווג הקשר שהוא לעולם לא היה מקבל לבד. hook מסוג PostToolUse יכול להוסיף לתוצאה שדה ‎classifierContext‎, שהמסווג קורא כהקשר שסופק על ידי היישום. זה בדיוק המקום להסמין מאיפה הגיע קובץ, אם ארכיון הגיע ממקור לא מהימן, או שתוצאה נראית חשודה. אין הרבה מי שמשתמש בזה, וזה חבל.

שורה תחתונה

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

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

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

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

שאלות נפוצות

האם מצב אוטומטי מגן מפני הזרקת פרומפט?

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

מה זה כלל Containment Escape במצב אוטומטי?

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

איך חוסמים פעולה שהמסווג מאשר?

בכלל הרשאות, לא בהגדרות המסווג. כלל deny בהגדרות מנוהלות נבדק לפני שהמסווג בכלל נקרא, ולא המסווג ולא כוונה מפורשת שלכם יכולים לעקוף אותו. כלל ask ממוקד-תוכן מכריח שאלה גם במצב אוטומטי. לעומתם, כלל שמוסיפים לרשימת ה-allow של המסווג הוא תוספת ולא גבול מדיניות: מפתח יכול להוסיף לעצמו כלל שמבטל חסימה רכה של הארגון.

האם כדאי לכבות את מצב אוטומטי?

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

מדריכים קשורים

הניוזלטר: מה חדש בקלוד, בעברית ובחינם

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

מעדיפים ללמוד את זה בקורס או בסדנה?

רוצים שאנחנו נבנה לכם עוזר AI או אוטומציה בקלוד?