הגדרת מדיניות ארגז חול
האם הרצת סוכן פועלת בארגז חול נקבע בשרת, באתחול
(--sandbox). המתג הפעלת ארגז חול ובורר בקאנד תחת הגדרות → שרת →
אבחון ופרטיות הם העדפות הנשמרות במכשיר שלכם. זיהוי המארח בכרטיס
ארגז חול מדווח מה מארח השרת יכול לעטוף.
שני אמצעי בקרה מגיעים אל ההרצה, והמדריך הזה מכסה את שניהם: כללי הפעולה
בהגדרות → סביבת עבודה → הרשאות סוכנים, שקובעים מה סוכן רשאי לדחוף,
לפתוח או לגשת אליו, והדגל --sandbox של השרת עצמו.
מה מגביל הרצת סוכן
קטע בשם “מה מגביל הרצת סוכן”שישה דברים מגבילים סוכן. הראשון הוא ארגז החול של מערכת ההפעלה, והוא היחיד שהוא מותנה — החמישה האחרים מחזיקים בכל מארח.
| גבול | מה הוא עושה |
|---|---|
| ארגז החול של מערכת ההפעלה | Seatbelt ב-macOS, bubblewrap ב-Linux וב-WSL2. עוטף את ה-CLI של Claude Code, את מתאמי ACP ואת כלי ה-bash של מנגנון ההרצה. נעדר ב-Windows וב-Linux ללא bwrap ו-socat |
| עץ העבודה הפרטי שלו | כל שיחה מקבלת צ׳קאאוט בהעתקה בעת כתיבה. הצ׳קאאוט המקורי מקופל לתוך ההרצה כנתיב דחיית כתיבה, וארגז החול הוא מה שאוכף זאת |
| פרטי גישה דרך ה-broker | broker פרטי הגישה מנפיק סביבה לכל הרצה ומבטל אותה כשההרצה מתפרקת. אסימון ה-GitHub שבה יכול לקרוא אבל לא לדחוף: דחיפות עוברות דרך Control Center, ששואל קודם את כלל הדחיפה |
| מעקות הבטיחות של הפעולות | כל כלי משנה־מצב מצהיר על מחלקות ההשפעה שלו, ומנוע ההכרעה מכריע בהן לפני שהקריאה רצה. prompt בלי מאשר מחובר נדחה |
| חיטוי הסביבה | ACP וכלי ה-bash של מנגנון ההרצה מקבלים סביבה מסוננת. Claude Code דרך NoSandboxAdapter יורש את סביבת המארח |
| משטח הכלים של המצב | מצב לקריאה בלבד מסיר את כלי שינוי עץ העבודה כליל ומצמיד את פועל הפלט של המצב עצמו כדי שיוכל עדיין לספק תוצר |
שלושה דברים נשארים חלשים מכפי שהם נראים:
- רק מנגנון ההרצה המובנה אוכף את שער הכלים, חוזי ההשלמה וכללי המצב
המבניים. מתאם Claude Code אינו עושה זאת. Claude
Code בפרט מופעל עם
--dangerously-skip-permissions, משום ש-claude -pלא אינטראקטיבי היה אחרת נתקע לנצח בבקשת ההרשאה של עצמו — כך שקריאות הקריאה, הכתיבה והעריכה של Claude עצמו אינן נראות ואינן מגודרות בידי Control Center, ופקודות bash נבדקות רק בידי hook שקורא את שורת הפקודה. במקום שארגז החול פועל, הוא הגבול סביבן. - כלי הקבצים בתהליך של מנגנון ההרצה (read, write, edit, apply patch, search,
find, search_files) רצים בתוך תהליך השרת, ולכן אף פרופיל של ארגז חול אינו מגביל אותם.
רק כלי ה-
bashעובר דרך מריץ הפקודות העטוף בארגז חול. הכלים האלה מתוחמים בידי ריתוק הנתיבים שלהם בתוספת מעקות הבטיחות של הפעולות. - במארח בלי בקאנד השורה הראשונה אינה חלה כלל. ACP וכלי
ה-
bashשל מנגנון ההרצה נופלים חזרה לחיטוי הסביבה בתוספת מדיניות הפקודות; Claude Code יורש את סביבת המארח דרךNoSandboxAdapter. השרת אומר זאת ביומן האתחול שלו. בדקו את שלכם להלן.
להחליט מה סוכן רשאי לדחוף
קטע בשם “להחליט מה סוכן רשאי לדחוף”אין מתגים לכל סוכן עבור git push, GitHub, כרטוס או רשת. כל אחד מהם הוא כלל פעולה:
| כלל | ברירת מחדל מובנית | מה הוא מכסה |
|---|---|---|
| דחיפה למאגר מרוחק | שאל קודם | כל git push ל-GitHub, מכל מתאם |
| פתיחת בקשת משיכה | שאל קודם | gh pr create וכלי בקשות המשיכה |
| פרסום סקירה או מיזוג | שאל קודם | gh pr merge, gh pr review, gh pr comment, gh pr close |
| כתיבה למערכת מעקב חיצונית | שאל קודם | כתיבת כרטיסים דרך כלי Control Center ו-gh issue |
| גישה לרשת | אפשר | האם לארגז החול יש רשת, וכלי הרשת של מנגנון ההרצה |
- עברו אל הגדרות → סביבת עבודה → הרשאות סוכנים
- בחרו טווח — סביבת עבודה, סוכן או מרחב — ואז בחרו אפשר, שאל קודם או חסום בשורה של הכלל
כללי דחיפה מוגבלי-ענף, כמו כלל שחוסם דחיפות ל-main, חלים גם הם: ראו
מעקות בטיחות.
נקודת ביקורת: בקשו מסוכן לדחוף ענף. עם שאל קודם תקבלו בקשת אישור שמציינת
את המאגר ואת ה-ref; עם חסום, git מדפיס
! [remote rejected] <ref> (Control Center policy: …).
איך כל כלל מגיע להרצה:
- דחיפות נאכפות לפי מה שההרצה מחזיקה. אסימון ה-GitHub שלה הוא אסימון התקנה
של GitHub App לקריאה בלבד, שקורא תוכן ועובד עם בקשות משיכה. תצורת ה-git שלה
שולחת כל דחיפה ל-GitHub לשער loopback ב-
cc_server, ששואל את הכלל ורק אז מעביר את הדחיפה עם אסימון כתיבה שהסוכן לעולם אינו רואה. השער מעביר רק למאגר של עץ העבודה עצמו או למאגר GitHub שמקושר לסביבת העבודה. זה נכון לכל מתאם. - בקשות משיכה ונושאים מהמעטפת מזוהים לפי שורת הפקודה: בכלי ה-
bashשל מנגנון ההרצה, ודרך hook בכלי ה-Bashשל Claude Code. סוכן שמסתיר את הפקודה (סקריפט,eval, קריאת API ישירה) עוקף את הבדיקה הזו, אבל לא את שער הדחיפה. - מפתחות כרטוס לעולם אינם מוכנסים לארגז החול. סוכנים כותבים כרטיסים דרך כלי ה-MCP של Control Center, ששואלים את הכלל.
- הרשת נקבעת פעם אחת, בתחילת ההרצה. חסום מכבה את הרשת של ארגז החול;
אפשר ושאל קודם משאירים אותה דלוקה, ותחת שאל קודם הכלים
web_fetchו-web_searchשל מנגנון ההרצה עדיין שואלים בכל קריאה. GitHub תמיד נמצא ברשימת ההיתר לתעבורה יוצאת כל עוד הרשת דלוקה.
בדיקה אם הרצות הסוכן שלכם עטופות בארגז חול
קטע בשם “בדיקה אם הרצות הסוכן שלכם עטופות בארגז חול”שני דברים מכריעים בכך, ושניהם בשרת: אם המארח מציע בקאנד ואם --sandbox
פועל. בדקו אותם בסדר הזה.
- עברו אל הגדרות → שרת → אבחון ופרטיות
- קראו את כרטיס ארגז חול. העובדה מארח היא המכונה ש-
cc_serverרץ עליה, לא המכונה שאתם מסתכלים עליה. השדה בקאנד מפרט ארגז חול מקורי (Seatbelt ב-macOS, bubblewrap ב-Linux וב-WSL2) או ללא בידוד. העובדה בתוקף היא ההעדפה של המכשיר הזה, לא העטיפה שהשרת באמת משתמש בה. - קראו את יומן האתחול של השרת. הוא מדפיס בדיוק אחת משלוש שורות:
agent sandbox ONבתוספת הערת הבקאנד — ההרצות עטופותno OS-native agent sandbox on this hostבתוספת רמז התקנה במקום שיש כזה — ההרצות אינן עטופותagent sandbox DISABLED by --sandbox off— ביטול מכוון
GET /healthz אינו מדווח על מצב ארגז החול, ולכן יומן האתחול הוא הבדיקה.
כדי לכבות את ארגז החול במכוון — מארח שבו הפרופיל מתנהג שלא כשורה הוא
הסיבה שהוא קיים — הפעילו את השרת עם --sandbox off, או הגדירו
CC_SERVER_SANDBOX=off. ברירת המחדל היא on, ו-on משמעו “השתמשו בבקאנד
אם למארח יש כזה”, ולעולם לא “דרוש אחד”.
שני מצבים לעולם אינם מקבלים עטיפת ארגז חול מקורי. ב-Windows בדיקת ארגז
החול המקורי מדווחת תמיד כלא זמינה ואין מה להתקין — שיגור הסוכן
משתמש ב-none. הבקאנד microvm נפרד (מסופים אינטראקטיביים ותחנות)
והוא תלוי בבדיקה של סביבת הריצה שלו בלבד. ב-Linux וב-WSL2 גם bwrap וגם
socat חייבים להיות ב-PATH; בלעדיהם הבדיקה מדווחת כלא זמינה
ומציינת את החבילות החסרות.
ב-Linux/WSL2 עם bubblewrap מותקן, אי אפשר לאכוף את תבניות הגלוב של קובצי
הסוד במדיניות התקנית על קבצים שסוכן יוצר אחר כך. הרצה מקורית כזו נכשלת כעת
במקום להתעלם מהכללים בשקט. בדיקת אתחול מוצלחת אינה מבטיחה אפוא ששיגור
ב-Linux יצליח להתחיל. --sandbox off הוא ביטול מכוון בלי הגבלה, לא גבול
אבטחה חלופי.
לדעת למה מצב כבר מסרב
קטע בשם “לדעת למה מצב כבר מסרב”המצב נשמר לפי מרחב ומזין את מנוע מעקות הבטיחות כשכבת ערכת המצב. שלושה מארבעת המצבים הם לקריאה בלבד, ומצב לקריאה בלבד מסרב על הסף לאחת עשרה מחלקות השפעה:
| מצב | עץ העבודה | מסורב בידי הערכה |
|---|---|---|
סוכן (chat) |
ניתן לכתיבה | דבר לא — ברירות המחדל המובנות חלות |
| תכנון | לקריאה בלבד | מחיקת קובץ, כתיבה מחוץ לעץ העבודה, ביצוע קומיט, דחיפה, פתיחת בקשת משיכה, פרסום או מיזוג, כתיבה למערכת מעקב חיצונית, התקנת חבילה, הרצת תהליך, שינוי מבנה סביבת העבודה, הפעלה או שליטה במתחם מבודד |
| סקירה | לקריאה בלבד | אותן אחת עשרה. אינו ניתן לבחירה בידי המשתמש — תיבת הכתיבה מציעה רק סוכן, תכנון ותזמור |
| תזמור | לקריאה בלבד | אותן אחת עשרה |
גישה לרשת וגישה לסודות אינן נמסרות במכוון בסירוב של מצב לקריאה בלבד: מחקר הוא כל תכליתו של מצב כזה.
דרישת אישור לפני שפעולה רצה
קטע בשם “דרישת אישור לפני שפעולה רצה”אישור הוא החלטה של מעקות בטיחות, לא הגדרה של ארגז חול.
- עברו אל הגדרות → סביבת עבודה → הרשאות סוכנים
- הגדירו את מחלקת הפעולה לשאל קודם בטווח סביבת העבודה, הסוכן או המרחב
החלטת שאל קודם קוטעת את ההרצה ושואלת אתכם. בלי מאשר מחובר היא נכשלת באופן סגור והפעולה נדחית. ראו הגדרת מעקות בטיחות לסדר ההכרעה המלא.
פתרון תקלות
קטע בשם “פתרון תקלות”סוכן לא מצליח לדחוף ומעולם לא סירבתי לו
קטע בשם “סוכן לא מצליח לדחוף ומעולם לא סירבתי לו”בדקו מה git הדפיס. Control Center policy: … פירושו שכלל חסם את הדחיפה, או
ששאל קודם לא נענה. … is not linked to this workspace פירושו שהיעד אינו
המאגר של עץ העבודה עצמו ואינו מקושר לסביבת העבודה.
Control Center has no GitHub credential that can push … פירושו שבמאגר אין
התקנה של GitHub App ואין פרטי גישה חלופיים שיכולים לדחוף: התקינו את
האפליקציה במאגר הזה, או חברו את GitHub.
כרטיס ארגז החול מדווח שאין ארגז חול מקורי
קטע בשם “כרטיס ארגז החול מדווח שאין ארגז חול מקורי”אז הרצות סוכן במארח הזה אינן עטופות ב-Seatbelt או ב-bubblewrap, והגבולות
שנותרו הם מה שיש לכם. ב-Linux וב-WSL2 התקינו את שני הכלים החסרים —
sudo apt-get install bubblewrap socat — והפעילו מחדש את השרת; יומן האתחול
אמור אז לומר שארגז החול פועל. ב-Windows אין בקאנד מקורי להתקין, ולכן הדקו
במקום זאת את מעקות הבטיחות: ראו
הגדרת מעקות בטיחות.
סוכן הגיע לקובץ מחוץ לעץ העבודה שלו
קטע בשם “סוכן הגיע לקובץ מחוץ לעץ העבודה שלו”הכלי שאיתו הוא הגיע מכריע אם זה צפוי.
כלי הקבצים בתהליך של מנגנון ההרצה (read, write, edit, apply patch, search,
find, search_files) רצים בתהליך השרת, ולכן שום פרופיל של ארגז חול אינו חל עליהם
— הגבול שלהם הוא ריתוק הנתיבים שלהם בתוספת מעקות הבטיחות. פקודת bash או
ה-CLI של Claude Code כן עטופים במקום שקיים בקאנד, והצ׳קאאוטים הרשומים
שלכם הם דחיית כתיבה בתוך העטיפה הזו בכל מצב, כולל בצורותיהם
המפוענחות-סימבולית (ב-macOS נתיב שמגיעים אליו דרך /tmp או
/var/folders נפתר תחת /private, ושתי הצורות נדחות כעת). במארח בלי בקאנד
שום דבר מזה אינו חל. כך או כך, מעקות הבטיחות יכולים לסרב
לכתיבה מחוץ לעץ העבודה על הסף.
מדריכים קשורים
קטע בשם “מדריכים קשורים”- הגדרת מעקות בטיחות
- יצירה והגדרה של סוכן
- אבחון סוכן
- מנועי ארגז חול
- CLI של cc_server: הדגל
--sandbox