תיעוד 133
בחירת מצב הרשאות
שליטה בשאלה אם Claude שואל לפני שהוא פועל. מחליפים מצבי הרשאות עם Shift+Tab ב-CLI, במחוון המצב ב-VS Code, או בבורר המצב ב-Desktop.
מצב הרשאות קובע אילו פעולות Claude יכול לבצע בסשן בלי לשאול אותך קודם. במצב Manual, Claude Code עוצר ושואל אותך לפני רוב הפעולות שעורכות קבצים, מריצות פקודות מעטפת, או מגיעות לרשת. במצב auto, מודל שני, המסווג (classifier), סוקר פעולות במקומך. איך המסווג מעריך פעולות מפרט אילו פעולות הוא סוקר ואילו מדלגות עליו.
עם Claude Code v2.1.283 או מאוחר יותר, מצב auto הוא מצב ההרשאות ההתחלתי המובנה לסשנים אינטראקטיביים בטרמינל וב-VS Code. בגרסאות קודמות, הוא מצב ההרשאות ההתחלתי המובנה רק בתוכניות Pro, Max, Ultra ו-Team. באיזה מצב סשן מתחיל מכסה את המשטחים ואת ההגדרות שמשנים את מצב ההרשאות ההתחלתי. אפשר גם לשנות את מצב ההרשאות של סשן שרץ בכל זמן.
#מצבים זמינים
כל מצב עושה פשרה אחרת בין נוחות לפיקוח. הטבלה למטה מראה מה Claude יכול לעשות בלי בקשת הרשאה בכל מצב. מצב Manual מופיע תחת ערך התצורה שלו, default.
| מצב | מה רץ בלי לשאול | מתאים ל |
|---|---|---|
default | קריאות בלבד | סקירה עצמית של כל פעולה, עבודה רגישה |
acceptEdits | קריאות, עריכות קבצים, ופקודות נפוצות של מערכת הקבצים (mkdir, touch, mv, cp, וכדומה) | איטרציה על קוד שאתה סוקר |
plan | קריאות, ובנוסף פקודות שהמסווג אישר כשמצב auto זמין | סיור בקוד לפני שמשנים אותו |
auto | הכל, עם בדיקות בטיחות ברקע | משימות ארוכות, הפחתת עייפות מבקשות |
dontAsk | קריאות קבצים בתוך ספריות העבודה וכלים שאושרו מראש. כל מה שהיה מבקש נדחה, אם כי מוד שהתקנת עדיין יכול לאשר חלק מהקריאות האלה | CI וסקריפטים נעולים |
bypassPermissions | הכל | קונטיינרים ומכונות וירטואליות מבודדים בלבד |
המצב שסוקר כל פעולה נקרא Manual ב-CLI, ב-claude --help, בהרחבות VS Code ו-JetBrains, ובאפליקציית הדסקטופ. ערך התצורה שלו הוא default, וזה מה ש-hooks ואינטגרציות SDK משתמשים בו. ה-CLI מקבל את manual ככינוי בכל מקום שבו מקלידים את הערך, למשל claude --permission-mode manual או "defaultMode": "manual".
כתיבות אל נתיבים מוגנים אף פעם לא מאושרות אוטומטית, חוץ מבמצב bypassPermissions ובסשנים של מצב plan שבהם עקיפת הרשאות זמינה, כלומר סשני טרמינל אינטראקטיביים שהופעלו באופן שמכניס את bypassPermissions למחזור המצבים.
המצבים קובעים את קו הבסיס. מעליהם מוסיפים כללי הרשאות כדי לאשר מראש או לחסום כלים מסוימים. כללי Deny חוסמים בכל מצב, כולל bypassPermissions. כללי Deny ו-ask לא חלים על EndConversation כל עוד ל-Claude עדיין יש לפחות כלי אחד נוסף שהוא יכול לקרוא לו. לכללי Allow אין השפעה ב-bypassPermissions.
#פעולות שאף מצב לא מאשר אוטומטית
Claude Code לא מאשר אוטומטית את הפעולות הבאות באף מצב, כולל bypassPermissions, אם כי אפשר לכבות את הבקשה לפקודות rm מסוכנות במצב bypassPermissions. כל סעיף מקשר אל החלק שאומר מה קורה במקום זאת בכל מצב:
כלים שתואמים לכלל ask מפורש
כלי מחברים (connector) שהארגון שלך הגדיר ל-
ask, בסשנים שבהם ההגדרה הזו מגיעה אל Claude Codeכלים שדורשים אינטראקציה של המשתמש: הכלי המובנה
AskUserQuestionוכלי MCP שמסומניםrequiresUserInteractionמחיקות מוכרות של
rmו-rmdirבנתיבים קריטיים, שאותן אף כלל Allow או hook שלPreToolUseעם"allow"לא מאשר, ופקודות Bash שסומנוDangerous rm operation not ruled outקריאות מחוץ לספריות העבודה בזמן ש-
permissions.blockReadsOutsideWorkingDirectoriesפעיל: פקודות Bash מוכרות לקריאת קבצים מבקשות גם במצב auto ובמצבbypassPermissions, וכך גם כל ניסיון חוזר מחוץ לארגז החול שצריך אישור כדי לרוץ מחוץ לארגז החול. נדרש Claude Code v2.1.257 או מאוחר יותר.פקודה שמפענח המעטפת לא יכול לעקוב אחריה, למשל פקודה שמחליפה ספרייה יותר מפעם אחת או מריצה תת מעטפת, מבקשת באותו אופן גם כשהיא לא מציינת נתיב חיצוני. הבקשה הזו לא חלה כשהפקודה רצה בארגז החול וארגז החול אוכף את החסימה.
כתיבות מחוץ לספריות העבודה בזמן ש-
permissions.blockWritesOutsideWorkingDirectoriesפעיל: Claude Code מסרב לקריאותWrite,Editו-NotebookEditשם, חוץ מחלק מהקבצים שלו עצמו. המפתח לא מגביל פקודות מעטפת, כלי MCP, או את התוכניות ש-hooks מריצים, ולכן משתמשים בארגז חול כדי להגביל לאן פקודות מעטפת כותבות. נדרש Claude Code v2.1.314 או מאוחר יותר.
#הגדרות נפוצות
מצבי הרשאות קובעים אם Claude שואל לפני פעולה, וארגז החול של Bash וגבולות הבידוד החיצוניים קובעים לאן פעולה יכולה להגיע אחרי שהיא רצה. כל שורה למטה מזווגת מטרה עם הדגלים או ההגדרות שמביאים אליה ועם הבידוד שהיא צריכה, כנקודת התחלה. מצבים זמינים מפרט מה רץ בלי בקשה בכל מצב.
| מה שרוצים | מתחילים עם | בידוד נדרש | הערות |
|---|---|---|---|
| לסקור כל פעולה בעצמך | מצב Manual: claude --permission-mode default | אין | עבודה רגישה, קוד לא מוכר |
| לעבוד מקומית עם פחות בקשות, בלי מסווג | מצב Manual יחד עם ארגז החול של Bash במצב auto-allow: claude --permission-mode default, ואז להריץ /sandbox ולבחור auto-allow | ארגז החול המובנה של Bash, ב-macOS, ב-Linux וב-WSL2 | כללי Deny עדיין חלים, וכללי ask שמציינים פקודה, כמו Bash(git push *), עדיין מבקשים. מצב auto-allow מכסה פקודות אחרות שיכולות לבקש. כדי להפעיל את ארגז החול מקובץ הגדרות במקום זאת, מגדירים את sandbox.enabled ל-true |
| לסייר לפני שמשנים משהו | claude --permission-mode plan | אין | Claude Code חוסם עריכות עד שמאשרים תוכנית |
| לעבוד בלי ידיים במצב auto | claude --permission-mode auto, מצב ההרשאות ההתחלתי המובנה עם v2.1.283 או מאוחר יותר | אין. ארגז חול או קונטיינר מוסיפים הגנה לעומק | נדרש מודל נתמך, והארגון שלך יכול לכבות את מצב auto |
| להריץ ב-CI עם רשימת היתרים מדויקת | claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" | אין מעבר למה שרץ ה-CI מספק | סשני ענן מתעלמים מ-dontAsk מקובצי הגדרות |
| להריץ בלי השגחה לגמרי בתוך קונטיינר | claude -p "<prompt>" --dangerously-skip-permissions | נדרש: קונטיינר, מכונה וירטואלית, או סביבת הריצה של ארגז החול. ב-Linux וב-macOS, מריצים אותו כמשתמש שאינו root | סשני ענן מתעלמים מהמצב הזה מקובצי הגדרות. בהרצה הזו עם -p, מעט הקריאות שעדיין היו מבקשות נדחות במקום זאת |
ארגז החול של Bash ומצב auto עובדים בנפרד וגם יחד, עם החריגים שמפורטים תחת מצבי ארגז חול. לאינטראקציה המלאה, ראו איך ארגז חול קשור להרשאות ולמצבי הרשאות ואיך בידוד קשור למצבי הרשאות.
#באיזה מצב סשן מתחיל
כשמתחילים סשן חדש בטרמינל, Claude Code לוקח את מצב ההרשאות מהפריט הראשון שחל מבין אלה:
הדגל
--permission-mode, או--dangerously-skip-permissionspermissions.defaultModeבקובץ הגדרותאם מגדירים
"auto"ב-.claude/settings.jsonאו ב-.claude/settings.local.json, הערך לא נכנס לתוקף, ו-Claude Code משתמש אז בברירת המחדל המובנית במקום ב-defaultModeמ-~/.claude/settings.json. אם מגדירים"bypassPermissions"בשני הקבצים האלה, גם זה לא נכנס לתוקף, והסשן מתחיל במצב Manual. שאר הערכים חלים מכל קובץ הגדרות.ברירת המחדל המובנית
שיחות שהרחבת VS Code מתחילה הולכות לפי הרשימה של ההרחבה עצמה בהחלפת מצבי הרשאות. למצב ההרשאות שבו Claude Code מתחיל סשן שחודש, ראו מצב הרשאות בחידוש.
ברירת המחדל המובנית auto דורשת את Claude Code v2.1.228 ומעלה ב-macOS, ב-Linux וב-WSL, ואת v2.1.233 ומעלה ב-Windows מקורי. בגרסאות קודמות, ברירת המחדל המובנית היא Manual.
ברירת המחדל המובנית תלויה באופן שבו מריצים את Claude Code. השורה הראשונה שתואמת לסשן היא זו שחלה. הטבלה מכסה סשנים שמתחילים בטרמינל או דרך הרחבת VS Code. לאפליקציית שולחן העבודה ול-claude.ai, ראו את הכרטיסיות Desktop ו-Web בהחלפת מצבי הרשאות.
| איך מריצים את Claude Code | מצב הרשאות התחלתי מובנה |
|---|---|
כל קובץ הגדרות מגדיר את disableAutoMode ל-"disable" | default |
claude -p או Agent SDK | default |
| לארגון הוחלה תצורת HIPAA והסשן כשיר לכך | default עם Claude Code v2.1.285 ומעלה. מצב auto נשאר זמין למעבר אליו |
| בטרמינל או דרך הרחבת VS Code | auto עם Claude Code v2.1.283 ומעלה. בגרסאות קודמות, auto בתוכניות Pro, Max, Ultra או Team בסשנים ששולפים דגלי תכונות, ו-default בשאר המקרים |
כשהדגל, קובץ הגדרות או ברירת המחדל המובנית בוחרים auto, אבל מצב auto לא זמין לסשן, Claude Code מתחיל את הסשן במצב Manual. מצב auto לא זמין כשהסשן לא עומד בדרישות הזמינות, למשל כשקובץ הגדרות מכבה אותו או כשמודל לא תומך בו, או כש-Anthropic כיבתה אותו זמנית בצד השרת.
בפעם הראשונה שברירת המחדל המובנית מתחילה אחד מהסשנים במצב auto, Claude Code מציג הודעה שמקשרת לדף הזה:
- בטרמינל, פעם אחת, בראש הסשן
- בהרחבת VS Code, ככרטיס במסך שיחה חדשה שנשאר עד שסוגרים אותו
אם ~/.claude/settings.json מגדיר defaultMode שונה מ-auto ואף קובץ הגדרות אחר לא מגדיר אחד, הסשנים ממשיכים להתחיל במצב הזה.
בתוכניות Pro, Max, Ultra ו-Team, ובסשנים שלא שולפים דגלי תכונות, Claude Code שואל פעם אחת אם לשנות את ההגדרה למצב auto. השאלה מופיעה בטרמינל או בהרחבת VS Code, ואם מסרבים, ההגדרה נשארת כפי שהיא.
#קריאות כלים שנדחות בהרצות claude -p וב-Agent SDK
ב-Claude Code v2.1.302 ומעלה, הרצות claude -p ו-Agent SDK שבהן לא הוגדר מצב הרשאות מתחילות במצב Manual. המצב הזה מופיע כ-default באפשרויות ה-SDK ובהגדרות. קריאות שדורשות אישור נדחות, אלא אם מאשרים אותן בכלל allow, ב-hook, ב-callback של canUseTool, או ב---permission-prompt-tool.
כדי שהקריאות האלה יאושרו, הוסיפו כללי allow או התחילו במצב auto:
- הוספת כללי allow: Claude מריץ את הקריאות שרושמים. העבירו
--allowedTools "Bash(npm test)"ל-claude -p, או הגדירו את אפשרות allowed-tools של ה-SDK. - התחלה במצב auto: מודל מסווג בודק את הקריאות, ולכן לא רושמים דבר מראש. העבירו
--permission-mode autoל-claude -p, או הגדירו את אפשרות מצב ההרשאות של ה-SDK.
הדוגמאות האלה מציגות את הצורה של מצב auto עבור ה-CLI ועבור כל SDK:
CLI
claude -p "Run the test suite and fix any failures" --permission-mode autoTypeScript
const options = {
permissionMode: "auto"
};Python
from claude_agent_sdk import ClaudeAgentOptions
options = ClaudeAgentOptions(permission_mode="auto")לפני v2.1.302, ההרצות האלה יכלו להתחיל במצב auto אם הן לא שלפו דגלי תכונות, למשל אצל ספק צד שלישי או עם DISABLE_TELEMETRY.
#התחלה במצב הרשאות אחר
אפשר להגדיר את מצב ההרשאות ההתחלתי לסשן אחד, או כברירת מחדל לכל סשן במחשב, בפרויקט או בארגון. כשיותר מקובץ הגדרות אחד מגדיר permissions.defaultMode, קדימות ההגדרות קובעת, כך שערך של פרויקט או ערך מנוהל גובר על ~/.claude/settings.json. כדי לשנות את מצב ההרשאות של סשן שכבר רץ, ראו החלפת מצבי הרשאות.
| כדי להגדיר את מצב ההרשאות ההתחלתי עבור | עשו כך |
|---|---|
| סשן אחד שעומדים להתחיל | העבירו את מצב ההרשאות כדגל, לדוגמה claude --permission-mode default |
| כל סשן טרמינל שמתחילים במחשב הזה | הגדירו permissions.defaultMode ב-~/.claude/settings.json. לגבי מה שהרחבת VS Code קוראת, ראו החלפת מצבי הרשאות |
| כל סשן טרמינל שמתחילים בפרויקט אחד | הגדירו permissions.defaultMode ב-.claude/settings.json של הפרויקט. סשנים שמתחילים בטרמינל מכבדים כל ערך חוץ מ-auto ומ-bypassPermissions. סשנים שהרחבת VS Code מתחילה לא קוראים הגדרות פרויקט עבור מצב ההרשאות ההתחלתי |
| כל סשן טרמינל בארגון | הגדירו permissions.defaultMode בהגדרות מנוהלות. סשני טרמינל מתחילים במצב הזה, ואנשים עדיין יכולים לעבור למצב auto. לגבי מה שהרחבת VS Code קוראת, ראו החלפת מצבי הרשאות. כדי להסיר את מצב auto כך שאף אחד לא יוכל לבחור אותו, הגדירו במקום זאת את permissions.disableAutoMode ל-"disable" |
הדוגמה הזו גורמת לכל סשן טרמינל במחשב להתחיל במצב Manual, שערך התצורה שלו הוא default. שמרו אותה ב-~/.claude/settings.json:
{
"permissions": {
"defaultMode": "default"
}
}הסשן הבא שמתחילים מציג ⏸ manual mode on בשורת המצב.
#מצבי הרשאות עם תצורת HIPAA
בארגון שבו הוחלה תצורת HIPAA, ברירת המחדל המובנית auto לא חלה. סשן טרמינל או VS Code מתחיל במצב Manual כששום דבר אחר לא בוחר את מצב ההרשאות ההתחלתי שלו. סשן טרמינל מציג גם Auto mode isn't the default for your organization · Shift+Tab to switch, והרחבת VS Code לא מציגה הודעה. בדקו איך מפתחים נכנסים ומתחברים מפרט את הסשנים שזה חל עליהם.
מצב auto ו-bypassPermissions נשארים זמינים:
- מעבר למצב auto: לחצו
Shift+Tab, או השתמשו בפקד של הממשק - התחלה במצב auto: העבירו
--permission-mode auto, או הגדירו אתpermissions.defaultModeל-autoבהגדרות המשתמש, או בהגדרות מנוהלות לכל הארגון. ראו התחלה במצב הרשאות אחר - הסרת מצב auto: הגדירו את
permissions.disableAutoModeל-"disable"בהגדרות מנוהלות - חסימת
bypassPermissions: הגדירו אתpermissions.disableBypassPermissionsModeל-"disable"בהגדרות מנוהלות
נדרש Claude Code v2.1.285 ומעלה, הגרסה המזערית לתצורת HIPAA.
#מעבר בין מצבי הרשאה
לכל ממשק יש פקד משלו להחלפת מצבי הרשאה במהלך סשן, ודרך משלו לבחירת מצב ההרשאה שבו סשנים חדשים מתחילים. בחרו את הממשק כדי לראות את הפקדים שלו.
#CLI
במהלך סשן: לחצו על Shift+Tab כדי לעבור במחזור בין מצבי הרשאה. מ-auto, הלחיצה הראשונה עוברת ל-default, ואחר כך המחזור רץ default → acceptEdits → plan. מצבים אופציונליים משתלבים אחרי plan. שורת המצב מציגה את המצב הפעיל באפור ⏸ manual mode on עבור default, או כ-⏵⏵ accept edits on, ⏸ plan mode on, ⏵⏵ auto mode on, ⏵⏵ don't ask on, או ⏵⏵ bypass permissions on.
צפו בשורת המצב בקליפ הזה של סשן שהתחיל במצב auto. בכל לחיצה על Shift+Tab היא משתנה מ-auto mode on ל-manual mode on, accept edits on, plan mode on, וחזרה ל-auto mode on.
לא כל מצב נמצא במחזור ברירת המחדל:
auto: מופיע כאשר מצב auto זמין. מעבר אליו במחזור מחליף מצבי הרשאה בלי הנחיית אישורbypassPermissions: מופיע אחרי שמתחילים עם--permission-mode bypassPermissions,--dangerously-skip-permissions,--allow-dangerously-skip-permissions, אוpermissions.defaultMode: "bypassPermissions"ב-הגדרות משתמש,--settings, או הגדרות מנוהלות. הווריאנט--allow-מוסיף את מצב ההרשאה למחזור בלי להפעיל אותוdontAsk: אף פעם לא מופיע במחזור. מגדירים אותו עם--permission-mode dontAsk
מצבים אופציונליים שמופעלים משתלבים אחרי plan, כאשר bypassPermissions ראשון ו-auto אחרון. אם שניהם מופעלים, תעברו דרך bypassPermissions בדרך אל auto.
מהנחיית הרשאה של Bash: במצבי ההרשאה Manual ו-acceptEdits, כאשר מצב auto זמין, Claude Code מוסיף Yes, and switch to auto mode להנחיית ההרשאה של פקודת Bash. בחרו באפשרות כדי לאשר את הפקודה ולהעביר את הסשן למצב auto. הנחיות של כלי PowerShell לא מציעות את האפשרות. נדרש Claude Code v2.1.247 או חדש יותר.
Claude Code לא מוסיף את האפשרות להנחיות שנכפות על ידי אחד מכללי ask שלכם או על ידי hook, כי מצב auto עדיין מציג לכם את ההנחיות האלה, ולכן המעבר לא יסיר אותן.
בהפעלה: העבירו את מצב ההרשאה כדגל.
claude --permission-mode planכברירת מחדל: הגדירו את permissions.defaultMode בהיקף הרצוי, כפי שמתואר ב-התחלה במצב הרשאה אחר.
אותו דגל --permission-mode עובד עם -p עבור הרצות לא אינטראקטיביות.
#VS Code
במהלך סשן: לחצו על מחוון המצב בתחתית תיבת ההנחיה. הוא משתמש בתוויות האלה עבור המצבים בדף זה:
| תווית בממשק | מצב |
|---|---|
| Manual | default |
| Edit automatically | acceptEdits |
| Plan | plan |
| Auto | auto |
| Bypass permissions | bypassPermissions |
כברירת מחדל: כדי לקבע את מצב ההרשאה שבו שיחות מתחילות, הגדירו את claudeCode.initialPermissionMode בהגדרות המשתמש של VS Code ל-default, manual, acceptEdits, plan, או bypassPermissions. ההגדרה לא מקבלת auto. כדי להתחיל ב-Auto, השאירו אותה לא מוגדרת ובחרו Auto ממחוון המצב פעם אחת, כפי שפריט 2 למטה מתאר. התוסף מתחיל כל שיחה חדשה בראשון מבין אלה שחל:
claudeCode.initialPermissionMode- המצב האחרון שבחרתם ממחוון המצב, אם היה Manual, Edit automatically, או Auto. בחירה ב-Plan או ב-Bypass permissions חלה על השיחה הזו בלבד
permissions.defaultModeמ-הגדרות מנוהלות או מ-~/.claude/settings.json- ברירת המחדל המובנית עבור התוכנית, הספק והגדרות הארגון שלכם
התוסף אף פעם לא קורא את .claude/settings.json או .claude/settings.local.json של פרויקט עבור מצב ההרשאה ההתחלתי. כאשר claudeCode.claudeProcessWrapper מוגדר, פריטים 3 ו-4 לא חלים: השיחות האלה מתחילות ב-Manual אלא אם פריט 1 או פריט 2 קובעים מצב הרשאה.
לפני v2.1.283, פריט 3 חל רק בתוכניות Pro, Max, Ultra ו-Team בסשנים שמושכים דגלי תכונות.
Auto מופיע במחוון המצב כאשר מצב auto זמין.
Bypass permissions דורש את המתג Allow dangerously skip permissions בהגדרות התוסף. בלעדיו, מצב ההרשאה לא מופיע במחוון, וערך bypassPermissions מפריט 1 או מפריט 3 מתחיל את השיחה ב-Manual. Auto מכל פריט מתחיל באותו אופן את השיחה ב-Manual כאשר מצב auto לא זמין.
ראו את מדריך VS Code לפרטים ייחודיים לתוסף.
#JetBrains
תוסף JetBrains מריץ את Claude Code בטרמינל של ה-IDE, ולכן החלפת מצבי הרשאה עובדת כמו ב-CLI: לחצו על Shift+Tab כדי לעבור במחזור, או העבירו --permission-mode בהפעלה.
#Desktop
במהלך סשן: בלשונית Code, השתמשו בבורר המצב בשורה שמתחת לתיבת ההנחיה. לא כל מצב מופיע בבורר:
- Auto: מופיע כאשר מצב auto זמין
- Bypass permissions: דורש את המתג Allow bypass permissions mode בהגדרות Desktop בתוכניות Pro, Max ו-Ultra. בתוכניות Team ו-Enterprise, מדיניות הארגון שולטת בזה
Cowork לא משתמש במצבים האלה. יש לו מצבי הרשאה משלו, שמופעלים בנפרד, והוא לא מציג בורר מצב בכלל עד שמצב שמעבר לברירת המחדל שלו מופעל עבור החשבון שלכם. ראו את תיעוד Cowork.
לפרטים ייחודיים ל-Desktop, ראו Choose a permission mode במדריך Desktop.
כברירת מחדל: הגדירו defaultMode ב-הגדרות. אפליקציית הדסקטופ קוראת את אותם קובצי הגדרות כמו ה-CLI ומחילה את מצב ההרשאה על סשנים מקומיים חדשים.
מצב שאתם בוחרים בבורר המצב בסשן מקומי נזכר לפי תיקייה וגובר על defaultMode בהגדרות .claude/ של הפרויקט. סשן מקומי חדש עדיין יכול להתחיל ב-defaultMode מ-~/.claude/settings.json או מהגדרות מנוהלות, לכן בדקו את הבורר לפני ההודעה הראשונה. אם תבחרו Plan, זה חל על הסשן הזה בלבד.
למיקום של defaultMode בקובץ הגדרות, ראו את הדוגמה תחת התחלה במצב הרשאה אחר.
#אינטרנט ונייד
ב-claude.ai/code, השתמשו בתפריט הנפתח של המצב בשורה שמתחת לתיבת ההנחיה. באפליקציה לנייד, הקישו על כפתור + בתיבת ההנחיה, ואז על Permission. סשני ענן וסשני Remote Control מציעים מצבי הרשאה שונים:
- סשני ענן: Accept edits, Plan ו-Auto. Accept edits מתאים למצב
default: סשני ענן מאשרים מראש עריכות קבצים בלי קשר למצב, ולכן התפריט הנפתח מציג Accept edits במקום Manual. סשני ענן עדיין מכבדיםdefaultMode: "acceptEdits"מההגדרות. מצב Auto מופיע רק כאשר הארגון שלכם מתיר אותו והמודל שנבחר תומך בו. Bypass permissions לא זמין. - סשני Remote Control במחשב המקומי שלכם: Manual, Accept edits, Plan ו-Auto עבור סשן שהתחלתם בעצמכם, ואי אפשר לבחור Bypass permissions מהאפליקציה. כדי להשתמש ב-Auto, הסשן צריך לעמוד בדרישות הזמינות של מצב auto. עבור שרשור פרויקט שרץ על המחשב שלכם, ראו Run a thread on your own computer.
- מלבד Bypass permissions, התפריט הנפתח מציג את מצב ההרשאה שבו הסשן המקומי נמצא, כולל מצב שהוגדר מהטרמינל. הוא מתעדכן כאשר מצב ההרשאה משתנה באפליקציה או בטרמינל.
- סשנים שמתארחים על ידי אפליקציית הדסקטופ או תוסף VS Code מדווחים על שינויי מצב הרשאה ל-claude.ai בזמן שהם קורים, כמו סשנים שמתארחים בטרמינל.
עבור Remote Control, המחשב המקומי שמריץ את הסשן חייב להיות מחובר עם חשבון claude.ai שלכם. מפתחות API לא נתמכים. אפשר גם להגדיר את מצב ההרשאה ההתחלתי בעת הפעלת הסשן המקומי הזה:
claude remote-control --permission-mode acceptEdits#אישור אוטומטי של עריכות קבצים עם מצב acceptEdits
מצב acceptEdits מאפשר ל-Claude ליצור ולערוך קבצים בתיקיית העבודה בלי הנחיה. שורת המצב מציגה ⏵⏵ accept edits on כל עוד המצב הזה פעיל.
בנוסף לעריכות קבצים, מצב acceptEdits מאשר אוטומטית פקודות Bash נפוצות של מערכת הקבצים: mkdir, touch, rm, rmdir, mv, cp ו-sed. מלבד touch, הפקודות האלה מאושרות אוטומטית גם כאשר מוסיפים לפניהן משתני סביבה בטוחים כמו LANG=C או NO_COLOR=1, או עטיפות תהליך כמו timeout, nice או nohup. כמו עריכות קבצים, האישור האוטומטי חל רק על נתיבים בתוך תיקיית העבודה או additionalDirectories.
אלה עדיין מציגים הנחיה:
- נתיבים מחוץ להיקף הזה
- כתיבה ל-נתיבים מוגנים
rmו-rmdirמזוהים של הסרות בנתיב קריטיtouchעם כל דבר מעבר לנתיבי קבצים פשוטים, לדוגמה אפשרות, glob, או קידומת כמוtimeout 5אוLANG=C- כל שאר פקודות Bash מלבד קבוצת הקריאה בלבד המובנית
כל נתיב עובר גם את בדיקת ה-symlink, ולכן כתיבה שנפתרת מחוץ להיקף הזה גם היא לא מאושרת אוטומטית.
כאשר כלי PowerShell מופעל, מצב acceptEdits מאשר אוטומטית גם את Set-Content, Add-Content, Clear-Content ו-Remove-Item בנתיבים שבהיקף, יחד עם הכינויים הנפוצים שלהם. אותם כללי היקף ונתיב מוגן חלים, ו-Remove-Item מקבל בדיקה משלו. ארגומנט מיקומי שמכיל תו מרכאות, כמו הגרש ב-Set-Content .\notes.txt "It's done", עדיין מציג הנחיה גם בנתיבים שבהיקף, כי Claude Code לא יכול לאמת סטטית ארגומנט שהקריאה שלו במרכאות והקריאה בלי מרכאות שונות. העבירו את התוכן דרך פרמטר בעל שם כמו -Value כדי להימנע מההנחיה.
השתמשו ב-acceptEdits כאשר אתם רוצים לסקור שינויים בעורך או דרך git diff לאחר מעשה, במקום לאשר כל עריכה בתוך השורה.
לחצו על Shift+Tab פעם אחת ממצב Manual כדי להיכנס אליו, או התחילו איתו ישירות:
claude --permission-mode acceptEdits#ניתוח לפני עריכה עם מצב plan
מצב plan אומר ל-Claude לחקור ולהציע שינויים בלי לבצע אותם. Claude קורא קבצים, מריץ פקודות מעטפת כדי לחקור, וכותב תוכנית, אבל לא עורך את קוד המקור. מלבד בסשני טרמינל אינטראקטיביים שבהם bypass permissions זמין, עריכות נשארות חסומות עד שתאשרו את התוכנית.
מה שקורה לפקודת מעטפת במהלך תכנון תלוי בסשן, והראשון מהמקרים האלה שמתאים הוא זה שחל:
- סשני טרמינל אינטראקטיביים שבהם bypass permissions זמין: לא המסווג ולא הנחיה חלים על פקודות תכנון. דילוג על כל הבדיקות עם מצב bypassPermissions מכסה את הדברים המעטים שעדיין מציגים הנחיה שם.
- מצב Auto זמין וההגדרה
useAutoModeDuringPlanפועלת, וזה ברירת המחדל: המסווג סוקר פקודות מעטפת שאינן הסרות בנתיב קריטי במקום לבקש מכם אישור. פקודות שאושרו רצות, ופקודות שנדחו נחסמות. - מצב Auto לא זמין, או
useAutoModeDuringPlanכבוי: פקודות מחוץ ל-קבוצת הקריאה בלבד המובנית מבקשות אישור, כולל כאשר מצב auto-allow של ה-sandbox מופעל.
היכנסו למצב plan בלחיצה על Shift+Tab או בהוספת הקידומת /plan להנחיה בודדת. אפשר גם להתחיל במצב plan מה-CLI:
claude --permission-mode planלחצו על Shift+Tab שוב כדי לצאת ממצב plan בלי לאשר תוכנית.
#סקירה ואישור של תוכנית
כאשר התוכנית מוכנה, Claude מציג אותה ושואל איך להמשיך. מההנחיה הזו אפשר לבחור:
- Yes, and use auto mode: לאשר ולהתחיל ב-מצב auto. אם מצב auto לא זמין לסשן שלכם, לדוגמה כי הארגון כיבה אותו, האפשרות הזו נקראת Yes, auto-accept edits. אם התחלתם את הסשן עם bypass permissions מופעל, האפשרות נקראת Yes, and switch to BYPASS PERMISSIONS (no further prompts) for this session.
- Yes, manually approve edits: לאשר ולסקור כל עריכה בנפרד.
- No, keep planning: להישאר במצב plan ולומר ל-Claude מה לשנות.
אישור תוכנית יוצא ממצב plan ומעביר את הסשן למצב ההרשאה שכל אפשרות אישור מתארת, כך ש-Claude מתחיל לערוך. כדי לתכנן שוב, חזרו במחזור למצב plan עם Shift+Tab, או הוסיפו להנחיה הבאה את הקידומת /plan.
לחצו על Ctrl+G כדי לפתוח את התוכנית המוצעת בעורך הטקסט ברירת המחדל ולערוך אותה ישירות לפני ש-Claude ממשיך. כאשר showClearContextOnPlanAccept מופעל, הרשימה מקבלת אפשרות ראשונה שמאשרת את התוכנית ומנקה את הקשר התכנון.
קבלת תוכנית גם נותנת לסשן כותרת שנוצרה על בסיס התוכנית, אלא אם כבר נתתם שם לסשן.
#הגדרת מצב plan כברירת מחדל
כדי להפוך את מצב plan לברירת המחדל עבור סשני טרמינל של פרויקט, הגדירו את defaultMode ל-plan ב-.claude/settings.json, במיקום שהדוגמה תחת התחלה במצב הרשאה אחר מציגה. שיחות שתוסף VS Code מתחיל לא קוראות הגדרות פרויקט עבור מצב ההרשאה ההתחלתי. שם, הגדירו את claudeCode.initialPermissionMode ל-plan בהגדרות המשתמש של VS Code.
#ביטול בקשות הרשאה עם מצב auto
מצב auto מאפשר ל-Claude לבצע בלי בקשות הרשאה שגרתיות. מודל מסווג נפרד בודק פעולות לפני שהן רצות, וחוסם כל דבר שמסלים מעבר לבקשה שלך, מכוון לתשתית לא מוכרת, או נראה כמונע מתוכן עוין ש-Claude קרא. כללי ask מפורשים עדיין כופים בקשה.
ב-Claude Code v2.1.283 ואילך, מצב auto הוא מצב ההרשאה ההתחלתי המובנה לסשנים אינטראקטיביים בטרמינל וב-VS Code בכל תוכנית ובכל ספק. בגרסאות מוקדמות יותר, זה מצב ההרשאה ההתחלתי המובנה רק בתוכניות Pro, Max, Ultra ו-Team.
המסווג גם בודק כל הודעה ש-Claude שולח לסוכן אחר עם SendMessage, בין אם טקסט רגיל ובין אם הודעת צוות סוכנים מובנית, לפני ש-Claude Code מעביר אותה, גם במצב auto וגם במצב plan בזמן שהמסווג בודק פקודות. בדיקת השליחה דורשת Claude Code v2.1.222 ואילך.
כברירת מחדל, המסווג לא בודק הסרות מזוהות של נתיבים קריטיים ב-rm וב-rmdir, כמו rm -rf / או rm -rf ~. נתיבים קריטיים מכסה מה קורה להם בכל מצב הרשאה.
מצב auto גם מדרבן את Claude להמשיך לעבוד בלי לעצור לשאלות הבהרה, אם כי Claude עדיין שואל כשהפרומפט שלך או skill נשען על כך במפורש. להתנהגות אוטונומית חזקה יותר במצב שעדיין מציג לך בקשות, הגדר את סגנון הפלט Proactive במקום זאת.
[!WARNING]
מצב auto מצמצם בקשות הרשאה אבל לא מבטיח בטיחות. השתמש בו למשימות שבהן אתה סומך על הכיוון הכללי, לא כתחליף לבדיקה בפעולות רגישות.
מצב auto זמין רק כשהחשבון שלך עומד בכל הדרישות האלה:
- תוכנית: כל התוכניות.
- ארגון: ב-Team וב-Enterprise, מצב auto זמין כברירת מחדל. מנהלים יכולים לכבות אותו לארגון על ידי הגדרת
permissions.disableAutoModeל-"disable"בהגדרות מנוהלות. - מודל: ב-Anthropic API ובClaude Platform on AWS, Claude Opus 4.6 ואילך, Sonnet 4.6 ואילך, Haiku 5.5, או מודל Fable. ב-Amazon Bedrock, ב-Google Cloud's Agent Platform, ב-Microsoft Foundry ובסשנים מחוברים של Claude apps gateway, רק Claude Sonnet 5 ואילך, Opus 4.7 ואילך, Haiku 5.5, ומודלי Fable. מודלים ישנים יותר, כולל Sonnet 4.5, Opus 4.5, Haiku 4.5 ומודלים של claude-3, לא נתמכים אצל אף ספק.
- ספק: זמין כברירת מחדל ב-Anthropic API, ב-Claude Platform on AWS, ב-Amazon Bedrock, ב-Google Cloud's Agent Platform, ב-Microsoft Foundry ובסשנים מחוברים של Claude apps gateway.
אם Claude Code מדווח שמצב auto לא זמין, בדוק קודם את הדרישות האלה והאם קובץ הגדרות כלשהו מגדיר את disableAutoMode. ייתכן גם ש-Anthropic כיבתה את מצב auto בצד השרת, או שהשרת דחה את מצב auto עבור החשבון שלך. סשן שקיבל אחת משתי התשובות האלה משאיר את מצב auto כבוי עד שהסשן מסתיים, אז התחל סשן חדש מאוחר יותר.
הודעה נפרדת שמציינת מודל ואומרת שמצב auto "cannot determine the safety" של פעולה פירושה שבקשת מסווג נכשלה. הכשל הזה בדרך כלל חולף, אבל ב-Amazon Bedrock הוא יכול לחזור עד שהחשבון שלך יכול להפעיל את המודל שצוין. ראה את הפניה לשגיאות לגורמים ולמה לעשות.
אם תגדיר defaultMode: "auto" בהגדרות וסשן טרמינל מתחיל במצב Manual בלי שגיאה, ההגדרה כנראה ב-.claude/settings.json או ב-.claude/settings.local.json. auto לא נכנס לתוקף מהקבצים האלה. העבר אותו אל ~/.claude/settings.json. לשיחה שהרחבת VS Code התחילה, בדוק במקום זאת את הרשימה של ההרחבה עצמה בהחלפת מצבי הרשאה.
#מצב auto ב-Bedrock, ב-Agent Platform או ב-Foundry
בAmazon Bedrock, בGoogle Cloud's Agent Platform, בMicrosoft Foundry ובסשנים מחוברים של Claude apps gateway, מצב auto זמין כברירת מחדל. אם לא תגדיר שם מצב הרשאה, סשנים אינטראקטיביים מתחילים במצב auto, והרצות claude -p או Agent SDK מתחילות במצב Manual, שערך התצורה שלו הוא default:
- סשנים אינטראקטיביים בטרמינל וב-VS Code: כדי להתחיל אותם במצב הרשאה שאינו auto, הגדר את
permissions.defaultModeכפי שהתחלה במצב הרשאה אחר מתאר, או בחר אחד ממחוון המצב של הרחבת VS Code. באיזה מצב סשן מתחיל מפרט את גרסאות Claude Code שמתחילות אותם במצב auto. - הרצות
claude -pו-Agent SDK: כדי להתחיל הרצה במצב auto, העבר--permission-mode autoאלclaude -p, או העברpermissionMode: "auto"ב-TypeScript אוpermission_mode="auto"ב-Python. אם לא תעביר מצב הרשאה, ראה קריאות כלים שנדחות בהרצותclaude -pו-Agent SDK, שמכסה גם גרסאות Claude Code מוקדמות יותר.
רק Claude Sonnet 5 ואילך, Opus 4.7 ואילך, Haiku 5.5 ומודלי Fable נתמכים אצל הספקים האלה. בכל מודל אחר, הסשן מתחיל במצב Manual במקום זאת. מצב auto עם Haiku 5.5 אצל הספקים האלה דורש Claude Code v2.1.293 ואילך.
כדי למנוע ממפתחים להשתמש במצב auto, הגדר את disableAutoMode ל-"disable" בהגדרות מנוהלות. זה מסיר את auto ממחזור Shift+Tab, וסשן שהופעל עם --permission-mode auto מתחיל במצב Manual במקום זאת. סשן שכבר רץ במצב auto יוצא ממנו כשההגדרה מגיעה לסשן הזה ממקור שנפרס על ידי מנהל, ומציג auto mode disabled by settings. לפני v2.1.251, סשן שרץ שמר את מצב auto עד שהוא הסתיים.
#בדיקת מסווג בצד השרת
במצב auto, Claude Code יכול לבקש מהשרת לבדוק את הפעולות שסדר ההחלטה שולח לבדיקה, כחלק מבקשות המודל של הסשן, במקום לשלוח בקשות מסווג משלו. הסשנים האלה מבקשים:
- חיבור ישיר ל-Anthropic API: בסשני טרמינל אינטראקטיביים ובסשנים של
-p, Agent SDK, הרחבת VS Code ואפליקציית שולחן העבודה, בכל תוכנית או סוג חשבון, ככל ש-Anthropic מפיצה את זה. בדוק את סוג הסשן מול גרסאות המינימום האלה של Claude Code:- בסשני טרמינל אינטראקטיביים, בקשה מהשרת דורשת Claude Code v2.1.271 ואילך בתוכניות Pro, Max, Ultra ו-Team. בתוכניות Enterprise ובחשבונות Claude API, הסשנים האלה דורשים v2.1.278 ואילך.
- בסשנים של
-pושל הרחבת VS Code, בקשה מהשרת דורשת Claude Code v2.1.278 ואילך - בסשנים של Agent SDK ושל אפליקציית שולחן העבודה, בקשה מהשרת דורשת Claude Code v2.1.281 ואילך
- מ-v2.1.282, סשן שלא שולף feature flags, למשל כי כיבית טלמטריה, מבקש מהשרת כברירת מחדל בכל סוג של סשן
- ספק ענן, או LLM gateway או proxy: בClaude Platform on AWS, ב-Amazon Bedrock, ב-Google Cloud's Agent Platform וב-Microsoft Foundry, ובכל פעם שמפנים את
ANTHROPIC_BASE_URLאל LLM gateway או proxy, בכל תוכנית. בקשה כברירת מחדל דורשת Claude Code v2.1.278 ואילך. - סשן מחובר של Claude apps gateway: דורש Claude Code v2.1.280 ואילך
- סשן ענן בסביבה ש-Anthropic מארחת: בכל תוכנית, כשמתחילים אותו מהרשת, מאפליקציית המובייל, או מאפליקציית שולחן העבודה כש-Cloud נבחר. סשנים שהתחילה משימה מתוזמנת בענן מבקשים מהשרת ככל ש-Anthropic מפיצה את זה.
במקום שהשרת בודק את הפעולות, ההכרעות שלו קובעות אותן. שתי תוצאות אחרות אפשריות:
השרת לא בודק את הסשן: תגובה מסתיימת בלי תוצאות בדיקה, או שהשרת עונה שהוא לא בודק את הסשן הזה. הגורמים הנפוצים ביותר הם LLM gateway או proxy שמשמיט את הבקשה לבדיקה או את התוצאות, ופלטפורמה, אזור או credential שעדיין אין להם בדיקות בצד השרת. Claude Code חוזר לבקשות המסווג שלו. ברגע שהחזרה הזו נשארת לשאר הסשן, הוא מציג הודעה על חיובים של בקשות מסווג בחשבונות שבהם הבקשות האלה מחויבות.
השרת לא נותן הכרעה לפעולה: Claude Code דוחה את הפעולה במקום להריץ אותה בלי בדיקה. בכל חיבור, זה קורה כשהתגובה מסתיימת לפני שתוצאות הבדיקה מגיעות או שהתוצאות מגיעות בצורה ש-Claude Code לא יכול לקרוא. LLM gateway או proxy שמקצר תגובות או משכתב את התוצאות יכול לגרום לכל אחד מהשניים. בחיבור ישיר ל-Anthropic API, זה קורה גם כשהבדיקה של השרת נכשלת לפעולה, למשל בגלל timeout. השרת החזיר בלי הכרעת בטיחות מכסה את הודעת הדחייה, מה קורה כשדחיות חוזרות, ומה לעשות.
אם hook או mod משנה את הקלט של פעולה אחרי בדיקת השרת, Claude Code יכול לדחות את הפעולה בלי הכרעה. בסשני טרמינל אינטראקטיביים ובסשני VS Code בחיבור ישיר ל-Anthropic API, טקסט הדחייה כולל
a hook changed this call's input after auto mode reviewed it. רשומת השגיאה שלו מכסה מה לעשות.
כדי לדלג על הבקשה מהשרת ותמיד להשתמש בבקשות המסווג של Claude Code עצמו, הגדר CLAUDE_CODE_AUTO_MODE_SERVER=0. בחיבור ישיר ל-Anthropic API, המשתנה דורש Claude Code v2.1.281 ואילך. הגדרה שלו ל-1 שם מפעילה בדיקת שרת בסשן שעדיין אין לו אותה, אלא אם הגדרת גם CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1. אם תגדיר CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 ותשאיר את CLAUDE_CODE_AUTO_MODE_SERVER לא מוגדר, Claude Code גם מפסיק לבקש מהשרת, למעט כפי שהשבתת יכולות טרום הפצה מתאר.
#מודל המסווג כברירת מחדל
כברירת מחדל, בקשות המסווג הולכות אל Claude Sonnet 5. אם /status מציג את Auto mode server כ-Enabled, הן נשלחות רק לקריאות שמחוץ לבדיקה של השרת.
מצא את השורה הראשונה בטבלה הזו שתואמת לסשן שלך. תקבל את המודל של השורה הזו במקום Sonnet 5.
| הסשן שלך | מודל המסווג |
|---|---|
| יש מודל מסווג ש-Anthropic הגדירה | המודל שהוגדר. בדוק את יומן הדיבוג כדי לראות איזה |
| רץ על Claude Sonnet 4.6 | Sonnet 4.6 |
ANTHROPIC_DEFAULT_SONNET_MODEL מוגדר | הערך שלו, או Sonnet 5 אם הערך שלו הוא Claude Sonnet 5.5 או Claude Opus 5.5 |
אם Sonnet 5 או המודל ב-ANTHROPIC_DEFAULT_SONNET_MODEL לא זמין מהספק שלך או מוחרג על ידי מדיניות המודלים של הארגון שלך, Claude Code משתמש במודל גיבוי. זה המודל של הסשן שלך, או מודל Opus בסשן Fable.
#בחירת מודל המסווג
עם Claude Code v2.1.302 ואילך, הגדר את CLAUDE_CODE_AUTO_MODE_MODEL למזהה מודל מלא כדי להריץ את המסווג על מודל שאינו ברירת המחדל. מזהי המודל המלאים של ספק הענן שלך עובדים גם הם. הדוגמה הזו של ~/.claude/settings.json מגדירה את Claude Sonnet 4.6:
{
"env": {
"CLAUDE_CODE_AUTO_MODE_MODEL": "claude-sonnet-4-6"
}
}#כשהמודל שלך לא בודק
| מצב | מה קורה | מה לעשות |
|---|---|---|
| יומן הדיבוג מדווח על מודל מסווג ש-Anthropic הגדירה | המודל הזה בודק | לא נדרש דבר |
| הגדרת Claude Opus 5, Sonnet 5.5, Opus 5.5 או אחד שמדיניות המודלים של הארגון שלך מחריגה | מודל המסווג כברירת מחדל בודק | הגדר מודל אחר |
| הספק שלך לא יכול לשרת את המודל | בדיקות המסווג נכשלות, ולכן Claude Code דוחה כל פעולה שהוא בודק | הגדר מודל שהוא משרת, או הסר את המשתנה |
בסשן, /status מציג את Auto mode server כ-Enabled | השרת בודק בלי המודל שלך | לא נדרש דבר |
אם כמה מצבים חלים, לך לפי הראשון שברשימה.
#בדיקה באיזה מודל המסווג השתמש
מה-shell שלך, התחל סשן במצב auto עם --debug-file:
claude --permission-mode auto --debug-file classifier-debug.logתן ל-Claude להריץ פקודת shell שאינה לקריאה בלבד, ואז חפש ביומן את classifier_request_started:
- המודל שלך אחרי
model=: המשתנה נכנס לתוקף - מודל אחר אחרי
model=: חפש ביומן אתignoring CLAUDE_CODE_AUTO_MODE_MODEL, שנותן את הסיבה וכל צעד שיש לבצע - אין שורה כזאת: קרא את
Auto mode serverב-/statusבשורת Claude Code:Enabled: השרת מוגדר לבדוק את הקריאות של הסשן הזה.Disabled: ודא שמצב ההרשאה הוא auto, ואז תן ל-Claude להריץ פקודה נוספת שאינה לקריאה בלבד.
#מה המסווג חוסם כברירת מחדל
המסווג סומך על תיקיית העבודה שלך ועל ה-remotes שהוגדרו עבורה כשהסשן התחיל. remote שנוסף או שהופנה מחדש במהלך הסשן עם git remote add או git remote set-url אינו מהימן, וכל השאר מטופל כחיצוני עד שתגדיר תשתית מהימנה.
חסום כברירת מחדל:
הורדה והרצה של קוד, כמו
curl | bashשליחת נתונים רגישים לנקודות קצה חיצוניות
פריסות לייצור ומיגרציות
מחיקה המונית באחסון ענן
הענקת הרשאות IAM או הרשאות מאגר
שינוי תשתית משותפת
השמדה בלתי הפיכה של קבצים שהיו קיימים לפני הסשן
Force push
commit או push של שינוי שישגר סודות או נתונים רגישים מחוץ למאגר כשהוא רץ, או שירחיב את מה שפריסה חושפת. זה מכסה workflow של CI או הגדרת פריסה שמעבירים סוד ליעד שעדיין לא מקבל אותו, סקריפט או שלב setup שקורא מאגר סודות ושולח את הנתונים החוצה, ושינוי הגדרות שמרחיב את מה שפריסה מפרסמת, כמו הגדרה של registry, visibility, artifact או sourcemap. הבדיקה חלה על כל ענף, חלה גם כשהמאגר ציבורי, ומופעלת כשהשינוי עובר commit או push, בין שה-commit או ה-push מפעילים את הצינור ובין שלא. כדי לנקות את החסימה צריך לנקוב באפקט ההרצה, ולא רק ב-commit או ב-push
git reset --hard,git checkout -- .,git restore .,git clean -fd,git stash dropאוgit stash clear, שהמסווג מניח שיזרקו שינויים שלא עברו commitgit commit --amendכשה-commit ב-HEAD לא נוצר בסשן הזהמגרסה v2.1.198,
git commit --amendכשה-commit ב-HEAD כבר נדחף. ניסוח מחדש של ההודעה בלבד אינו חסום:--amend -mבלי שום דבר חדש ב-staging, על commit שקלוד יצר במהלך הסשן הזהterraform destroy,pulumi destroy,cdk destroyאוterragrunt destroy, והחלה של תוכנית שמשמידה משאביםכתיבה למנהל סודות, או שינוי רשומות DNS או תעודות TLS
מיזוג pull request שאף אדם לא אישר, אישור של pull request של קלוד עצמו, או השבתת בדיקות CI
פרסום תגובה שהיא עצמה פקודה לאוטומציה, כמו
atlantis applyאו/deployאו/mergeשל בוטהפעלה, שינוי הדרגתי או מחיקה של feature flag בייצור
החלת שינויי תשתית על היקף IaC מוגן, או ריקון והסרה של צמתי אשכול
כתיבות לאשכול מחשוב משותף שחורגות מהמשאב שציינת, כמו label selector או
--allשתופסים עבודות של משתמשים אחריםיצירת משאבי Kubernetes שרצים על כל צומת או מיירטים תעבורת אשכול, כמו DaemonSets ו-admission webhooks
מעטפות אינטראקטיביות או port-forwards אל יעד מרוחק רגיש
פתיחת מנהרה או reverse shell שהופכים שירות מקומי לנגיש מהאינטרנט הציבורי
הדפסת אישור או אסימון חי אל התמליל או אל קובץ
גישה למיקום שרשום כמיקום נתונים רגיש בסביבה שלך, העתקת נתונים ממנו, או שליחת נתונים ממנו לקהל שהרשומה מחריגה
ניתוב התקנת חבילה סביב מאגר החבילות הפנימי שלך אל מאגר ציבורי. זה חל כשמאגר פנימי או mirror רשום בסביבה שלך, או כשאמרת לקלוד בשיחה שאחד כזה קיים
הרצת פקודה עם דגל שמנטרל מנגנון הגנה, כמו
--insecureהפעלת לולאת סוכן אוטונומית שרצה בלי אישור אנושי או sandbox, כמו אחת שהופעלה עם
--dangerously-skip-permissionsאו--no-sandbox. זה כולל הרצה של סוכן צד שלישי או eval harness כשבידוד ואישור לכל פעולה מושבתים, כמו runner שהופעל עם--yes-alwaysפעולות דפדפן של Claude in Chrome שעלולות לשלוח תוכן עמוד, עוגיות או אישורים אל מחוץ למקור
מחיקת קבצים ב-
/tmp, ב-$TMPDIRאו בספריית scratch או מטמון משותפת אחרת לפי wildcard, glob או מסנן גיל, במקום לפי נתיב ספציפי ששמו נקובהכללת פרטים רגישים בתוכן שנשלח, הועלה, פורסם או נכתב לאנשים אחרים או למערכות משותפות, כשההודעה שלך לא אישרה את הפרטים האלה לאותו נמען. גופי PR ו-issue, הודעות commit ותגובות נחשבים לתוכן יוצא מהסוג הזה כשהמאגר מחוץ לגבול האמון או ציבורי, כולל המאגרים הציבוריים של הארגון שלך. נתיבי קבצים פנימיים, שמות קוד, נתוני תגובת API חיים כמו כתובות אימייל או מזהי חשבון, ומזהי תשתית נחשבים לפרטים רגישים. נתונים אישיים חיים מתגובת API בגוף PR או issue, כמו כתובת אימייל, מזהה חשבון או ארגון, או מדד שימוש, מחייבים אותך לנקוב בפרטים האלה ובנמען, בלי קשר לנראות המאגר או לגבול האמון
שליחת הקשות מקשים אל חלונית tmux של Claude Code עצמו כדי להניע את הממשק שלו, שהמסווג מתייחס אליה כאל קלוד שמשנה את ההרשאות או את הפיקוח שלו עצמו
הפיכת בדיקה או assertion שמגינה על התנהגות אבטחה להערה, מחיקתה, או force-pass שלה, כמו auth, בקרת גישה, אימות קלט או sandboxing
מחיקה או פירוק של משאב stateful שקלוד לא יצר בסשן, כשאין כלל מחיקה ספציפי יותר ואתה לא נקבת במשאב הזה
הפניה מחדש של כתובת בסיס של API, נקודת קצה של proxy, מקבל webhook או registry mirror אל מארח צד שלישי שלא מתאים למשימה, כולל בקבצי דוגמה כמו
.env.exampleשינוי היעד של push עם
git remote set-urlאוgit remote add, אלא אם נקבת ב-remote החדשדחיפת סודות או נתונים אישיים או שהופקדו אל מאגר שידוע כציבורי, או דחיפת חומר חסוי לשם שאינו חלק מהעבודה של המאגר עצמו. נושא העניין של מאגר dotfiles הוא החריג היחיד לנתונים אישיים או שהופקדו, ותוכן ממאגר פרטי שמגיע לכל משטח ציבורי חסום באותו אופן. כשהנראות של מאגר לא נקבעה, המסווג לא חוסם על זה לבדו. הוא שופט את התוכן מול הכללים האחרים במקום זאת
פתיחת pull request מול מאגר או ארגון אחר, forking עם
gh repo fork, או דחיפה למאגר צד שלישי, אלא אם נקבת ביעד החיצוני הזהתוכן מחנות מקומית רגישה, או מקובץ שהשם, הנתיב או הסוג שלו מסמנים אותו כרגיש, שנכנס ל-commit, ל-push, לטקסט PR או issue, ל-gist או paste, או לפרסום חבילה, אלא אם נקבת גם במקור וגם ביעד. תמלילי סשן ויומני שיחה, תיקיות נקודה של אישורים והגדרות כמו מפתחות SSH, אישורי ענן, פרופילי דפדפן והיסטוריית מעטפת, וייצואי נתוני משתמש, כולם נספרים, והעובדה שהמאגר פרטי לא מנקה את זה
כתיבה לתמלילי סשן של Claude Code, קובצי ההיסטוריה
.jsonlתחת~/.claude/projects/או תיקיית ההגדרות שהגדרת, ישירות או דרך פקודת מעטפת. הכלל מכסה גם את שורות המטא-דאטה ש-Claude Code מוסיף לכל רשומת תמליל לבדיקות שלו עצמו. קריאה של תמליל אינה חסומהמחיקה כפויה רקורסיבית כמו
rm -rf "$VAR"אוRemove-Item -Recurse -Force $dirשהיעד שלה הוא משתנה מעטפת שלא הוקצה בשום מקום בשיחה שהמסווג רואה, או glob שמושרש במשתנה כזה. הערך הגיע רק מפלט פקודה קודם, שהמסווג לעולם לא מקבל, ולכן המסווג לא יכול לאמת את יעד המחיקה מול כללי המחיקה האחרים. החסימה מתנקה כשאתה מנקב בנתיב המדויק שנמחק, או כשקלוד מריץ שוב את המחיקה כשהנתיב המילולי שנפתר כתוב בתוך הפקודה. מחיקות שהמסווג יכול לפענח את היעד שלהן אינן מושפעות.glob ישירות מתחת למשתנה, כמו ב-
rm -rf "$VAR"/*, הוא נתיב קריטי במקום זאת. יעדיRemove-Itemשהם*חשוף או מסתיימים ב-/*או ב-\*לעולם לא מגיעים למסווג: Claude Code דוחה אותם מיד.
כמה מהקטגוריות האלה תלויות ברשומות סביבה, כמו יעדים מרוחקים רגישים והיקפי IaC מוגנים, שאפשר לצמצם לשמות קונקרטיים.
Claude Code מגרסה v2.1.257 ואילך חוסם כברירת מחדל גם את אלה:
- בקשת אישורים מנקודת הקצה של מטא-דאטה של מופע ענן, כמו
169.254.169.254, או אימות מפורש של קריאת ענן, אשכול או registry עם חשבון השירות או זהות הצומת של המכונה עצמה - הגעה למארח ציבורי במסלול שאינו בקשה ישירה, כמו מנהרה, reverse shell, או הגדרת resolver או proxy שנכתבה מחדש כך שתצביע החוצה
- קריאת אישורים ששייכים למארח ולא למשימה שלך, כמו תעודות צומת או אימות registry של מכולות של הצומת
- התחברות אל מכולות, pods או מכונות וירטואליות אחים שקלוד לא הפעיל, או סריקה שלהם, או אל הצומת שמתחת למכולה
אם Claude Code רץ במקום שנועד לאפשר אחד מאלה, תאר את ההגדרה הזו ברשומת הכלה של מארח ב-autoMode.environment.
Claude Code מגרסה v2.1.261 ואילך חוסם כברירת מחדל גם את אלה:
- פרסום או כתיבה של קישור אל paste ציבורי, דיאגרמה או שירות שיתוף נתונים בהודעה, בטקסט PR או issue, במסמך, או בכל מקום אחר שבו הקישור ייפתח או יימשך, כשה-URL עצמו נושא את התוכן שמשותף, אלא אם נקבת בשירות הזה
מותר כברירת מחדל:
פעולות קבצים מקומיות בתיקיית העבודה שלך
התקנת תלויות שמוצהרות בקבצי הנעילה או במניפסטים שלך
קריאת
.envושליחת אישורים אל ה-API התואם שלהםבקשות HTTP לקריאה בלבד
דחיפה לכל ענף של המאגר שבו אתה עובד, כולל ענף ברירת המחדל. ענף שאינו ברירת המחדל וששמו מסמן אותו כיעד פריסה או פרסום, כמו
productionאוgh-pages, אינו מכוסה: המסווג שופט דחיפה לשם לפי התנאים שלו.התוכן של push עדיין נבדק מול הכללים האחרים של המסווג, וכללי
permissions.denyעדיין יכולים לחסום פקודות push כפי שהן כתובות בכל מצב. הגנת הענפים של ה-remote עצמו עדיין חלה.מחיקה של העבודות המדויקות שקלוד יצר קודם באותו סשן
קריאה, סקירה או כתיבה של קוד, הגדרות ומודלי איום שקשורים לאבטחה כחלק מהמשימה שלך
הודעות בין סוכנים שעובדים יחד באותו סשן מרובה סוכנים
שליחת נתונים לדומיינים, לדליים ולשירותים המהימנים שאתה מפרט ב-
environment. זה מכסה זרימת נתונים בלבד, לא פעולות הרסניות או פעולות אישורים על אותה תשתיתניווט של Claude in Chrome אל דומיין פנימי מהימן, localhost, או URL שנקבת בו
לפקודות ב-sandbox אין גישה לרשת כברירת מחדל. קלוד מנקב במארחים שפקודה צריכה על הפקודה עצמה, המסווג סוקר אותם יחד עם הפקודה, ורשימה מאושרת פותחת את המארחים האלה לפקודה האחת הזו בלבד. דומיינים מותרים לכל פקודה מכסה מה רשימה יכולה ומה היא לא יכולה לפתוח, ומה קורה כשפקודה מגיעה למארח שאינו ברשימה.
הרץ claude auto-mode defaults כדי להדפיס את רשימות הכללים המלאות כ-JSON. אם פעולות שגרתיות נחסמות, מנהל יכול להוסיף מאגרים, דליים ושירותים מהימנים דרך ההגדרה autoMode.environment: ראה הגדרת auto mode.
דחיפה לכל ענף של המאגר שבו אתה עובד, ויצירת pull request שתואם לבקשה שלך, רצות בלי בקשה, אלא אם ה-push או ה-pull request נופלים תחת רשימת החסימה, כמו סודות או נתונים רגישים שיוצאים מהמאגר, או pull request שמכוון למאגר או לארגון אחר. כדי לדרוש נקודת ביקורת אנושית לפני הפקודות האלה תוך כדי הישארות ב-auto mode, הוסף כללי permissions.ask, שמתאימים לפקודה כפי שהיא כתובה: ראה גבולות נפוצים.
#הקריאה הראשונה מחוץ לתיקיות העבודה
בזמן ש-permissions.blockReadsOutsideWorkingDirectories כבוי, קריאות קבצים שאינן קריאות מנתיבי רשת רצות בלי בקשה ב-auto mode, כולל קריאות מחוץ לתיקיות העבודה. בפעם הראשונה שקלוד משתמש בכלי Read, Grep או Glob על נתיב מחוץ להן, Claude Code שואל אם לאפשר את הקריאה הזו.
הבקשה לא מופיעה בהרצות -p לא אינטראקטיביות או בסשנים ברקע. קריאות שם רצות כמו קודם.
לא משנה מה תענה, קלוד ממשיך לעבוד:
- כן, והמשך לאפשר כל קריאה מחוץ לתיקיות העבודה: הקריאה רצה, קריאות מאוחרות יותר מחוץ לתיקיות העבודה רצות כמו קודם, ו-Claude Code רושם את התשובה שלך כדי שהבקשה לא תופיע שוב
- לא, וחסום קריאות מחוץ לתיקיות העבודה מעכשיו: הקריאה נדחית, ו-Claude Code מגדיר את
permissions.blockReadsOutsideWorkingDirectoriesל-trueבהגדרות המשתמש שלך, מה שגורם לכלי הקבצים לדחות קריאות כאלה בסשן הזה ובכל סשן מאוחר יותר ובכל מצב הרשאות. כדי להסיר את החסימה, הסר את ההגדרה מכל קובץ הגדרות שמגדיר אותה, ואז הפעל מחדש כל סשן שרץ. לתיקייה אחת בסשן הזה, השתמש ב-/add-dir. - לא, ושאל שוב בפעם הבאה: הקריאה נדחית, והקריאה הבאה מחוץ לתיקיות העבודה מבקשת שוב
- כן, אבל שאל שוב בפעם הבאה: הקריאה רצה, שום דבר לא נשמר, והקריאה הבאה מחוץ לתיקיות העבודה מבקשת שוב
#גבולות שאתה מציין בשיחה
המסווג מתייחס לגבולות שאתה מציין בשיחה כאות חסימה. אם אתה אומר לקלוד "don't push" או "wait until I review before deploying", המסווג חוסם פעולות תואמות גם כשכללי ברירת המחדל היו מתירים אותן. גבול נשאר בתוקף עד שאתה מסיר אותו בהודעה מאוחרת יותר. השיפוט של קלוד עצמו שתנאי התקיים לא מסיר אותו.
גבולות לא נשמרים ככללים. המסווג קורא אותם מחדש מהתמליל בכל בדיקה, ולכן גבול עלול ללכת לאיבוד אם דחיסת הקשר מסירה את ההודעה שציינה אותו. להבטחה קשיחה, הוסף כלל deny במקום זאת.
#אישורים שאתה מציין בשיחה
אם אתה אומר לקלוד שפעולה חסומה מותרת, המסווג קורא את זה כאישור שלך ויכול לנקות את החסימה. הניסוח שלך קובע אם הפעולה רצה, ועד כמה האישור מגיע:
- נקוב בפעולה ובפרטים שלה: ההודעה שלך צריכה לנקוב בפעולה ובדבר הספציפי שהופך אותה למסוכנת, כמו הענף של force push. נקוב בפועל לבדו לא מנקה כלום, ולכן "you can force-push" משאיר את החסימה במקומה.
- צפה שזה יכסה פעולה אחת: אישור מכסה את הפעולה ההרסנית שנקבת בה, ולכן פעולה מאוחרת יותר נחסמת שוב אלא אם הענקת את האישור כעומד. כדי להפסיק לאשר דפוס שגרתי פעולה אחת בכל פעם, הוסף אותו ל-
autoMode.allow. - חלק מהחסימות נשארות במקומן: סדר הקדימות של המסווג קובע לאילו חסימות האישור שלך יכול להגיע. כדי להריץ שלב שהוא לא ינקה, צא מ-auto mode וענה לבקשת ההרשאה.
#מתי מצב auto נופל חזרה
כשמצב auto לא יכול לאשר את הפעולות בסשן שלך, מה שקורה תלוי במקרה:
- פעולה שנחסמה: Claude Code מציג התראה ורושם את הפעולה ב-
/permissionsתחת הלשונית נחסמו לאחרונה, שם אפשר לאשר את הפעולה כדי ש-Claude יוכל לנסות שוב. - חסימות חוזרות: אם המסווג חוסם פעולה 3 פעמים ברצף או 20 פעמים בסך הכל, מצב auto מושהה ו-Claude Code חוזר להציג בקשות. אישור הפעולה שמוצגת בבקשה מחדש את מצב auto. ראה ספי חסימות חוזרות לאופן שבו החסימות נספרות.
- אין הכרעה מהמסווג: כשבדיקת בטיחות נפרדת ממצב auto מסרבת לבקשה של המסווג עצמו, או כשתגובת המסווג לא ניתנת לפענוח, Claude Code חוסם את הפעולה בלי ההתראה ובלי הרשומה ב-נחסמו לאחרונה. ראה מצב auto לא יכול לקבוע את הבטיחות של פעולה להודעה שכל מקרה מציג ולמה לעשות.
- אין הכרעה מהשרת: תחת סקירת מסווג בצד השרת, Claude Code דוחה פעולה שהשרת לא נותן עבורה הכרעה, ויכול לעצור את התור אחרי עשר תגובות ברצף בלי הכרעה. ראה השרת לא החזיר הכרעת בטיחות.
- החלפת מצב במהלך בדיקה: אם מחליפים מצבי הרשאה בזמן שבדיקת מסווג ממתינה, Claude Code משליך הכרעה שהמצב החדש לא היה מבקש. מוצגת לך בקשת אישור במקום, או שהפעולה נדחית אוטומטית במצב
dontAsk.
#ספי חסימות חוזרות
הספים של 3 חסימות ברצף ושל 20 חסימות בסך הכל לא ניתנים להגדרה. מונה הסך הכולל נשמר לאורך הסשן ומתאפס רק כשהמגבלה שלו עצמו מפעילה נפילה חזרה. Claude Code לא מונה דחייה לאף אחד משני הספים כשבדיקת בטיחות נפרדת ממצב auto מסרבת לבקשה של המסווג עצמו.
להרצה לא אינטראקטיבית של -p בלי --permission-prompt-tool אין בקשה שאפשר ליפול אליה חזרה. כשחסימות חוזרות מגיעות לסף, הפעולה לא רצה ו-Claude ממשיך לעבוד. Claude Code לא עוצר את ההרצה.
חסימות חוזרות בדרך כלל אומרות שלמסווג חסר הקשר על התשתית שלך. השתמש ב-/feedback כדי לדווח על חיוביים כוזבים, או שמנהל יגדיר תשתית מהימנה.
#איך מצב auto מעריך פעולות
הסעיפים הבאים מכסים את הסדר שבו Claude Code מעריך פעולה, איך המסווג סוקר עבודה של סוכן משנה, ומה קריאות למסווג מוסיפות בעלות ובזמן השהיה.
#איך המסווג מעריך פעולות
כל פעולה עוברת סדר החלטה קבוע. הצעד הראשון שתואם קובע:
- פעולות שתואמות לכללי allow, ask או deny שלך נפתרות מיד, עם החריגים האלה:
- כתיבות לנתיבים מוגנים מנותבות למסווג גם כשכלל allow תואם. כשהנתיב המוגן הוא הקובץ שקובץ הגדרות מסוג symlink מצביע אליו, הכתיבה יכולה לבקש ממך אישור במקום, כפי שרשימת הנתיבים המוגנים מתארת
- אף כלל allow לא מאשר הסרות מוכרות של
rmו-rmdirמנתיבים קריטיים - כלי MCP שמסומנים
requiresUserInteractionמבקשים ממך אישור ישירות גם כשכלל allow תואם, וכך גם כלי מחבר שהארגון שלך הגדיר ל-askבסשנים שבהם ההגדרה הזו מגיעה ל-Claude Code - פקודת מעטפת שנושאת דומיינים מותרים לפי פקודה מנותבת גם היא למסווג גם כשכלל allow תואם, כי כלל מאשר את הפקודה, לא את המארחים שלה
- כללי ask שתואמים לתוכן של פקודה, כמו
Bash(git push *), נופלים חזרה לבקשת הרשאה - כתיבה שבדיקת symlink פותרת לנתיב מוגן מבקשת ממך אישור כשהנתיב ש-Claude ביקש אינו מוגן בעצמו
- קריאה מנתיב רשת מבקשת ממך אישור גם כשכלל allow תואם
- פעולות לקריאה בלבד ועריכות קבצים בספריית העבודה שלך מאושרות אוטומטית, חוץ מכתיבות לנתיבים מוגנים ומהקריאה הראשונה מחוץ לספריות העבודה, שמבקשות ממך אישור
- בסשן עם סקירת מסווג בצד השרת, פקודות מעטפת לקריאה בלבד ופקודות מעטפת בארגז חול ממתינות לסקירה הזו ונחסמות אם היא מסמנת אותן
- כתיבה בתוך ספריית העבודה שלך שבדיקת symlink פותרת למיקום מחוץ לה מבקשת ממך אישור
- כש-Claude קורא ארטיפקט שמישהו אחר יצר, חלים מקרי האישור שרשומים בסעיף ההוא
- קריאה מנתיב רשת מבקשת ממך אישור
- כל השאר הולך למסווג, מלבד הסרות נתיב קריטי לפי הטיפול שבברירת המחדל שלהן. כלי המחבר וכלי MCP מסוג
requiresUserInteractionשמבקשים ממך אישור ישירות בשלב 1 גם לא מגיעים למסווג, ולכן לא אישור שהארגון דורש ולא שלב הסכמה מאושרים אוטומטית - אם המסווג חוסם, Claude מקבל את הסיבה. ברוב הסשנים הסיבה מציינת את הכלל שהמסווג התאים, כמו
[Data Exfiltration], במקום לתת הסבר כתוב. ראה סקירת דחיות
מוד שמתקינים ומטפל ב-tool.check יכול גם לאשר פעולה. למקרים שבהם האישור שלו לא עובר את הכללים וה-hooks שלך, ראה הרחבת הרשאות עם hooks.
לאופן שבו פעולות דפדפן של Claude in Chrome מאושרות בהרחבת VS Code, ראה בקשות הרשאה בסשנים של VS Code.
בעת כניסה למצב auto, כללי allow רחבים שמעניקים הרצת קוד שרירותית מושמטים:
Bash(*)אוPowerShell(*)גורפים- מפרשים עם wildcard כמו
Bash(python*) - פקודות run של מנהלי חבילות
- כללי allow של
Agent - כללי allow של
Monitor, כי Claude Code מריץ פקודות Monitor דרך המעטפת
כללים צרים כמו Bash(npm test) נשארים בתוקף. Claude Code משחזר את הכללים שהושמטו כשיוצאים ממצב auto. לפני v2.1.236, Claude Code השאיר כללי allow של Monitor בתוקף במצב auto, כך שכלל שהתאים לכלי כולו אישר פקודות Monitor בלי סקירת מסווג.
Claude Code גם מריץ git status בעצמו לפני פקודה שהייתה משליכה עבודה שלא עברה commit, כמו git reset --hard או rm -rf, ומראה למסווג אם קיימת עבודה במצב staged, modified או untracked. Claude Code מדווח על קבצים untracked בבדיקה הזו גם כשתצורת git של המאגר מגדירה status.showUntrackedFiles=no.
בבקשות למסווג ש-Claude Code עצמו שולח, המסווג רואה הודעות משתמש, קריאות לכלים מלבד חיפושי קריאה בלבד כמו קריאות קבצים וחיפושים, ואת התוכן של CLAUDE.md שלך. תוצאות כלים מוסרות מהבקשות האלה, כך שתוכן עוין בקובץ או בדף אינטרנט לא יכול לתמרן את המסווג ישירות.
אפשר להוסיף הערה לתוצאה של קריאה באמצעות השדה classifierContext של hook מסוג PostToolUse, והמסווג קורא אותו כהקשר שסיפקה האפליקציה. השדה דורש Claude Code v2.1.236 או חדש יותר.
probe נפרד בצד השרת סורק תוצאות כלים נכנסות ומסמן תוכן חשוד לפני ש-Claude קורא אותו. למידע נוסף על האופן שבו השכבות האלה עובדות יחד, ראה את ההכרזה על מצב auto ואת הסקירה ההנדסית המעמיקה.
#איך מצב auto מטפל בסוכני משנה
המסווג בודק עבודה של סוכן משנה בשלוש נקודות:
- לפני שסוכן משנה מתחיל, תיאור המשימה שהואצלה מוערך, כך שמשימה שנראית מסוכנת נחסמת בזמן היצירה.
- בזמן שסוכן המשנה רץ, כל אחת מהפעולות שלו עוברת את אותו סדר החלטה כמו בסשן האב, עם אותם כללי block ו-allow. המערכת מתעלמת מכל
permissionModeב-frontmatter של סוכן המשנה. - כשסוכן המשנה מסיים, המסווג סוקר את העבודה שלו ואת הדוח הסופי לפני שסשן האב קורא את הדוח. כשהמסווג מסמן את העבודה של סוכן המשנה או את הדוח שלו, או כשבדיקת בטיחות נפרדת של ה-API מסרבת לסקירה, הדוח עדיין נמסר, עם אזהרת אבטחה שנוספת בראשו. כשהמסווג לא זמין לסקירה, הדוח מגיע עם הערה לאמת את עבודת סוכן המשנה לפני שפועלים לפיה.
#עלות וזמן השהיה
בקשות המסווג של Claude Code יכולות לרוץ על מודל אחר מהבחירה שלך ב-/model. ראה על איזה מודל הן רצות.
בתוכניות Enterprise ובחשבונות שמשתמשים ב-Claude API, ב-Claude Platform on AWS, ב-Amazon Bedrock, ב-Agent Platform של Google Cloud, או ב-Microsoft Foundry, קריאות למסווג נספרות במסגרת השימוש שלך בטוקנים. כל בדיקה שולחת חלק מהתמליל וגם את הפעולה הממתינה, ומוסיפה הלוך ושוב לפני הביצוע. קריאות ועריכות בספריית העבודה מחוץ לנתיבים מוגנים מדלגות על המסווג, כך שהתקורה מגיעה בעיקר מפקודות מעטפת ומפעולות רשת. במקרים שבהם השרת סוקר את הפעולות כחלק מבקשות המודל של הסשן, אין קריאות מסווג נפרדות לספירה. ראה סקירת מסווג בצד השרת.
גישת רשת בארגז חול לא מוסיפה בקשות מסווג לכל חיבור. המסווג שופט את המארחים שפקודה מציינת יחד עם הפקודה בסקירה אחת, ו-Claude Code בודק כל חיבור מול הרשימה המאושרת בלי לקרוא למסווג שוב.
#לאפשר רק כלים שאושרו מראש עם מצב dontAsk
אם מגדירים מצב dontAsk, Claude Code דוחה אוטומטית כל קריאת כלי שבמצב אחר הייתה מבקשת ממך אישור, אם כי מוד שהתקנת עדיין יכול לאשר חלק מהקריאות האלה. כדי לבדוק אילו קריאות מוד יכול לאשר, ראה הרחבת הרשאות עם hooks.
Claude עדיין מריץ פעולות שלא דורשות אישור במצב Manual, כמו קריאות קבצים בתוך ספריות העבודה שלך ופקודות Bash לקריאה בלבד. פעולות שתואמות לכללי permissions.allow שלך וקריאות שאושרו על ידי hook מסוג PreToolUse גם רצות. השתמש במצב הזה לצינורות CI או לסביבות מוגבלות שבהן מגדירים מראש מה Claude רשאי לעשות. הסשן לא ממתין לקלט אף פעם. שורת המצב מציגה ⏵⏵ don't ask on במצב הזה.
Claude Code דוחה קריאות שתואמות לכללי ask המפורשים שלך במקום להציג בקשה. הוא גם דוחה את הכלי המובנה AskUserQuestion גם אם כללי ה-allow שלך תואמים לו, ועושה אותו דבר לכלי מחבר שהארגון שלך הגדיר ל-ask בסשנים שבהם ההגדרה הזו מגיעה ל-Claude Code. הוא דוחה כלי MCP שמסומנים _meta["anthropic/requiresUserInteraction"] באותו אופן, כי כרטיס האישור שלהם צריך תשובה שהמצב הזה לא אוסף אף פעם.
כלל allow או hook מסוג PreToolUse לא יכולים לאשר את אלה:
- הסרות מוכרות של
rmו-rmdirמנתיבים קריטיים, כמוrm -rf /ו-rm -rf ~ - קריאות מנתיב רשת
סשנים בענן מתעלמים מ-defaultMode: "dontAsk". ראה bypassPermissions לפרטים.
הגדר אותו בהפעלה עם הדגל:
claude --permission-mode dontAsk#דילוג על כל הבדיקות עם מצב bypassPermissions
מצב bypassPermissions מבטל בקשות הרשאה ובדיקות בטיחות, כך שקריאות לכלים מתבצעות מיד, כולל כתיבה אל נתיבים מוגנים.
גם במצב bypassPermissions, כל אחת מהפעולות שאף מצב לא מאשר אוטומטית מקבלת בקשה או סירוב, אם כי אפשר לכבות את הבקשה לפקודות rm מסוכנות. קריאת ארטיפקט ציבורי של ארגון אחר דורשת את אישורך, והמצב הזה לא מבקש אותו, ולכן Claude לא יכול לקרוא ארטיפקט כזה. סירובי Remove-Item ב-PowerShell חלים גם במצב הזה.
שני אמצעי הגנה של העברת הודעות בין סשנים עדיין חלים במצב הזה, וגם בסשנים אינטראקטיביים של טרמינל במצב תכנון שבהם דילוג על הרשאות זמין:
- בקשת האישור
isolatePeerMachinesלהודעות אל הסשנים שלך מעבר למכונה הזאת עדיין מופיעה. - כשאין ערך
crossSessionInboundשחל, Claude Code מחזיק הודעה נכנסת מסשן אחר שלך לאישורך, ומוסר בלי לבקש רק כשהסשן השולח מזהה את עצמו ככזה שגם מדלג על בקשות הרשאה. אם יוצאים ממצב ההרשאה בזמן שהודעות מוחזקות, Claude Code מחיל מחדש את כללי ההודעות הנכנסות ומוסר כל הודעה מוחזקת שהם מקבלים עכשיו.
בסשנים אינטראקטיביים של טרמינל שבהם דילוג על הרשאות זמין, Claude Code גם לא אוכף את החסימות של מצב תכנון. Claude עדיין מקבל הוראה לתכנן בלי לערוך, אבל עריכת קובץ או פקודת מעטפת שהוא מנסה במהלך התכנון רצות בלי בקשה. כללי ask מפורשים והסרות נתיב קריטי מזוהות של rm ו-rmdir עדיין מבקשות.
מצב תכנון שומר על החסימות שלו בכל מקום שבו Claude Code רץ בלי טרמינל אינטראקטיבי, כולל הרצות לא אינטראקטיביות עם -p, סשנים של Agent SDK, ושיחות בחלונית הצ'אט של ההרחבה ל-VS Code. שם, --allow-dangerously-skip-permissions הופך את bypassPermissions לבחיר מאוחר יותר.
[!WARNING]
השתמשו במצב הזה רק בסביבות מבודדות כמו קונטיינרים, מכונות וירטואליות, או קונטיינרי פיתוח בלי גישה לאינטרנט, שבהם Claude Code לא יכול לפגוע במערכת המארחת.
אי אפשר להיכנס ל-bypassPermissions מסשן שהתחיל בלי שהוא מופעל. מפעילים אותו בהפעלה עם permissions.defaultMode: "bypassPermissions" או עם דגל מפעיל:
claude --permission-mode bypassPermissionsהדגל --dangerously-skip-permissions שקול.
Claude Code מסרב ל-bypassPermissions בסשן שמתחילים עם --restricted. --restricted דורש את Claude Code v2.1.248 או מאוחר יותר.
בפעם הראשונה שמתחילים סשן אינטראקטיבי עם המצב הזה מופעל, Claude Code מציג תיבת אזהרה שמבקשת לקבל אחריות על פעולות שנעשות בלי בדיקות הרשאה:
- אם מקבלים: Claude Code מגדיר את
skipDangerousModePermissionPromptל-trueב-~/.claude/settings.json, כך שסשנים מאוחרים יותר מדלגים על התיבה. כדי לראות את התיבה שוב, מסירים את המפתח מהקובץ הזה או מגדירים אותו ל-false. ההפניה שלskipDangerousModePermissionPromptמפרטת את קובצי ההגדרות האחרים שבהם אתם או הארגון שלכם יכולים להגדיר אותו. - אם מסרבים: Claude Code יוצא.
במצב לא אינטראקטיבי לא מוצגת תיבה.
סשן רקע מכבד את הקבלה שלכם כשהיא רשומה בהגדרות משתמש או בהגדרות מנוהלות:
בלי קבלה רשומה,
claude --bg --permission-mode bypassPermissionsנדחה. קודם מקבלים את התיבה בסשן אינטראקטיבי.כש-
skipDangerousModePermissionPromptמוגדר רק ב-.claude/settings.local.json, סשן הרקע מתחיל עם בקשת הדילוג שהתעלמו ממנה:- כשמתעלמים מ-
--allow-dangerously-skip-permissions,bypassPermissionsנשאר מחוץ למחזורShift+Tabשלו. - כשמתעלמים מ-
--permission-mode bypassPermissionsאו מ---dangerously-skip-permissions, הסשן מתחיל במצב Manual במקום זאת.
מוסיפים
"skipDangerousModePermissionPrompt": trueאל~/.claude/settings.json, ואז מתחילים סשן רקע חדש.- כשמתעלמים מ-
ב-Linux וב-macOS, Claude Code מסרב להתחיל במצב bypassPermissions כשהוא רץ כ-root או תחת sudo:
--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasonsהבדיקה מדולגת אוטומטית בתוך ארגז חול מזוהה. כדי לרוץ באופן אוטונומי בקונטיינר, משתמשים בתצורת קונטיינר הפיתוח, שמריצה את Claude Code כמשתמש שאינו root.
סשני ענן לא מכבדים את defaultMode: "bypassPermissions" או את "dontAsk" מקובצי ההגדרות שלכם, ולכן הגדרות שנשמרו במאגר לא יכולות להתחיל סשן ענן במצב דילוג על הרשאות. ההגדרה מתעלמת בשקט והסשן מתחיל במצב ההרשאה שמוצג בתפריט המצב. ראו החלפת מצבי הרשאה לגבי אילו מצבים סשני ענן מציעים.
[!WARNING]
bypassPermissionsלא מציע הגנה מפני הזרקת הנחיה או פעולות לא מכוונות. לבדיקות בטיחות ברקע עם הרבה פחות בקשות הרשאה, השתמשו במצב auto במקום זאת. מנהלים יכולים לחסום את המצב הזה על ידי הגדרתpermissions.disableBypassPermissionsModeל-"disable"בהגדרות מנוהלות.
#דילוג על הרשאות שהתעלמו ממנו בסשן רקע
ההודעה הזאת אומרת שסשן הרקע לא מצא את הקבלה שלכם את אזהרת דילוג ההרשאות בהגדרות משתמש או בהגדרות מנוהלות, ולכן התעלם מבקשת הדילוג שנעשתה בהפעלה:
Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": trueמוסיפים "skipDangerousModePermissionPrompt": true אל ~/.claude/settings.json, ואז מתחילים סשן רקע חדש.
#claude agents מציג את אזהרת דילוג ההרשאות שסשנים אינטראקטיביים מדלגים עליה
אם claude agents מציג את אזהרת דילוג ההרשאות למרות שהסשנים האינטראקטיביים שלכם מדלגים עליה, בדקו אם skipDangerousModePermissionPrompt מוגדר ב-.claude/settings.local.json או בקובץ --settings. סשנים אינטראקטיביים סופרים את המפתח שם כקבלה שלכם את האזהרה, ו-claude agents לא. בין אם מוצאים אותו שם ובין אם לא, מקבלים את האזהרה כדי להוסיף את המפתח אל ~/.claude/settings.json, שם claude agents מחפש אותו.
#נתיבים מוגנים
כתיבות אל קבוצה קטנה של נתיבים אף פעם לא מאושרות אוטומטית, חוץ ממצב bypassPermissions ומסשנים אינטראקטיביים של טרמינל במצב תכנון שבהם דילוג על הרשאות זמין. זה מונע פגיעה מקרית במצב המאגר ובתצורה של Claude עצמו.
| מצב | כתיבות לנתיב מוגן |
|---|---|
default, acceptEdits | עם בקשה |
plan | מותר בסשנים אינטראקטיביים של טרמינל שבהם דילוג על הרשאות זמין. אחרת, מנותב למסווג כשמצב auto זמין במהלך התכנון, ועם בקשה כשהוא לא זמין |
auto | מנותב למסווג |
dontAsk | נדחה |
bypassPermissions | מותר |
בסשן שהתחיל עם --restricted, שדורש את Claude Code v2.1.248 או מאוחר יותר, המסווג לא יכול לאשר כתיבות לנתיב מוגן.
כל עוד permissions.blockWritesOutsideWorkingDirectories מופעל, Claude Code מסרב לכתיבות Write, Edit ו-NotebookEdit אל קובצי הגדרות בכל מצב הרשאה.
במצבים שמנתבים כתיבות לנתיב מוגן אל המסווג, כתיבה שבדיקת הקישור הסימבולי פותרת לנתיב מוגן מבקשת מכם במקום זאת כשהנתיב ש-Claude ביקש אינו מוגן בעצמו.
כללי permissions.allow בקובצי הגדרות לא מאשרים מראש כתיבות לנתיב מוגן. בדיקת הבטיחות רצה לפני ש-Claude Code מעריך כללי allow מההגדרות, ולכן רשומה כמו Edit(.claude/**) ב-~/.claude/settings.json או ב-.claude/settings.json לא משנה את התוצאה לפי מצב בטבלה למעלה. במצבי הרשאה שמבקשים, הבקשה לכתיבה אל תיקיית .claude/ של הפרויקט או אל ~/.claude/ יכולה להציע אחת מהאפשרויות האלה ברמת הסשן:
- לתיקיית
.claude/של הפרויקט: Yes, and allow Claude to edit files in this project's .claude folder for this session - ל-
~/.claude/: Yes, and allow Claude to edit files in its ~/.claude folder for this session
ספריות מוגנות:
.git.config/git.vscode.idea.husky.cargo.devcontainer.yarn.mvn.claude, עם כמה חריגים, כמו:- עצי העבודה של git של Claude עצמו תחת
.claude/worktrees/ - קובצי התכנון של הסשן הנוכחי עצמו ב-
~/.claude/plans/, או ב-plansDirectoryשהגדרתם - ספריית הטיוטה של סשן רקע עצמו ב-
~/.claude/jobs/<id>/tmp/ - קובצי Markdown בספריית הזיכרון האוטומטי של הפרויקט, כמו
~/.claude/projects/<project>/memory/, בסשן שהתחיל בלי--restricted - קובצי Markdown בספריית זיכרון של סוכן משנה, כמו
.claude/agent-memory/, בסשן שהתחיל בלי--restricted
- עצי העבודה של git של Claude עצמו תחת
- ספרייה שטענתם עם
--plugin-dir, כי Claude Code טוען מחדש ומריץ את הקוד של מוד ממנה כשקובץ משתנה ~/.claude/dev-mods/, אוdev-mods/בספרייה ש-CLAUDE_CONFIG_DIRמצביע אליה, שבה Claude שומר את המודים שהוא כותב עבורכם
קבצים מוגנים:
.gitconfig,.gitmodules.bashrc,.bash_profile,.bash_login,.bash_aliases,.bash_logout,.zshrc,.zprofile,.zshenv,.zlogin,.zlogout,.profile,.envrc.npmrc,.yarnrc,.yarnrc.yml,.pnp.cjs,.pnp.loader.mjs,.pnpmfile.cjs,bunfig.toml,.bunfig.toml.bazelrc,.bazelversion,.bazeliskrc.pre-commit-config.yaml,lefthook.yml,lefthook.yaml,.lefthook.yml,.lefthook.yamlgradle-wrapper.properties,maven-wrapper.properties.devcontainer.json.ripgreprc,pyrightconfig.json.mcp.json,.claude.jsonremote-settings.json, העותק השמור של ההגדרות המנוהלות מהשרת של הארגון שלכם, וקובצי החתימה, הסנכרון וההסכמה ש-Claude Code שומר איתם, ב-~/.claudeאו בספרייה ש-CLAUDE_CONFIG_DIRמצביע אליה- קובץ שהעברתם אל
--settings,--mcp-config, או--agentsכשהתחלתם את הסשן - הקובץ שקובץ ההגדרות של המשתמש, הפרויקט או המקומי שלכם מצביע אליו כשקובץ ההגדרות עצמו הוא קישור סימבולי, למשל אל מאגר dotfiles. במצבים שמנתבים כתיבות לנתיב מוגן אל המסווג, כתיבה אל הקובץ הזה מבקשת מכם במקום זאת, גם כשכלל allow תואם. אם הנתיב של הקובץ עצמו הוא גם נתיב של קובץ הגדרות, כמו
.claude/settings.jsonבתיקייה אחרת, הכתיבה הולכת אל המסווג כמו כתיבות אחרות לנתיב מוגן
#נתיבים קריטיים
נתיבים קריטיים הם הספריות ש-Claude Code מגן עליהן מפני פקודות rm ו-rmdir, כמו שורש מערכת הקבצים, ספריית הבית שלכם, וספריית העבודה שלכם. Claude Code בודק את הפקודות האלה לפני שהן רצות, ואף כלל allow לא מאשר פקודה שהיעד שלה מזוהה כנתיב קריטי. הבדיקה יכולה לפספס חלק מהפקודות, ולכן היא לא מחליפה בקרת מערכת הפעלה כמו ארגז חול.
הסרת נתיב קריטי היא פקודת rm או rmdir שהיעד שלה מזוהה על ידי Claude Code כנתיב קריטי. גם אף הוק PreToolUse שמחזיר "allow" לא מאשר הסרה כזאת. כלל allow או הוק PreToolUse לא יכולים לאשר הסרה כזאת אפילו במצבי ההרשאה שמדלגים על בקשות אחרות.
[!WARNING]
פקודה שהבדיקה מפספסת לא מקבלת טיפול מיוחד, ולכן כל דבר שמאשר פקודות Bash בסשן שלכם יכול לאשר אותה בלי בקשה. זה כולל כלל allow, מצב
bypassPermissions, ומצב האישור האוטומטי של ארגז החול. הבדיקה חלה עלrmו-rmdir, ולכן גם פקודות מאושרות אחרות יכולות למחוק נתיבים קריטיים.
הבקרות האלה חלות בין אם הבדיקה מזהה פקודה ובין אם לא:
- כללי deny: כלל deny שתואם את הפקודה חוסם אותה, אם כי מוד שהתקנתם עדיין יכול לאשר חלק מהקריאות האלה
- ארגז חול: ארגז חול גורם למערכת ההפעלה להגביל לאילו נתיבים פקודות Bash יכולות לכתוב. פקודות בארגז חול עדיין יכולות למחוק את ספריית העבודה שלכם
- מצב ארגז חול מחמיר: כברירת מחדל פקודה בארגז חול יכולה להיות מנוסה שוב מחוץ לארגז החול, וכלל allow או מצב
bypassPermissionsיכולים לאשר את הניסיון החוזר בלי בקשה. מצב ארגז חול מחמיר מכבה את הניסיון החוזר
מה שקורה להסרה ש-Claude Code מזהה תלוי במצב ההרשאה שלכם. ל-Remove-Item ולפקודות המובנות של הסרה ב-cmd יש בדיקות משלהן, שמכוסות ב-Remove-Item ב-PowerShell.
#אילו נתיבים הם קריטיים
Claude Code מתייחס ליעד של rm או rmdir כנתיב קריטי כשהוא אחד מהבאים:
- שורש מערכת הקבצים
- ספריות ברמה העליונה, כלומר כל ילד ישיר של השורש, כמו
/usr,/etc, או/data - ספריית הבית שלכם. ב-Windows, גם השם הקצר בפורמט 8.3 נספר, כמו
C:\Users\LONGNA~1 - שורשי כוננים ב-Windows והספריות ברמה העליונה שלהם, כמו
C:\ו-C:\Windows. איותים כמו\\?\C:\ו-\\localhost\C$נספרים כ-C:\ - ספריית העבודה שלכם וההורים שלה
- ספריות העבודה הנוספות שלכם וההורים שלהן, אבל רק כשההסרה היא glob תחת אחת מהן, כמו
rm -rf <dir>/*.rm -rf <dir>על הספרייה עצמה לא מפעיל את הבדיקה הזאת
לנתיבי כוננים מחוברים כמו /mnt/c או /Volumes/USB, ראו בקשת הכונן המחובר.
הבדיקות על השם הקצר בפורמט 8.3 של ספריית הבית ועל האיותים \\?\C:\ ו-\\localhost\C$ דורשות את Claude Code v2.1.292 או מאוחר יותר.
#יעדים נוספים שנחשבים לנתיבים קריטיים
Claude Code מתייחס גם ליעדי rm ו-rmdir הבאים כנתיבים קריטיים. העמודה האחרונה אומרת למה כל אחד נחשב.
| יעד | דוגמה | למה זה נחשב |
|---|---|---|
| glob או לוכסן נגרר ישירות מתחת למשתנה מעטפת | rm -rf "$DIR"/* | הפקודה הופכת להסרה משורש מערכת הקבצים כשהמשתנה ריק |
אותה צורה מתחת לפרמטר מיקומי כגון $1 או $@, כששום דבר בפקודה לא נותן לו ערך | rm -rf "$1"/* | הפקודה מתרחבת להסרה מהשורש |
משתנה מעטפת ואחריו שם אחד של ספרייה נפוצה ברמה העליונה, כגון mnt, tmp, usr או Users | rm -rf "$TMPDIR/mnt" | כשהמשתנה מתרחב לריק, הפקודה מסירה את /mnt |
משתנה שאותה פקודה מציבה מהחלפה שמדפיסה ספרייה, כגון $(pwd) או $(git rev-parse --show-toplevel) | D=$(pwd); rm -rf "$D" | הערך יכול לציין את ספריית העבודה שלך או את שורש המאגר |
יעד שהוא רק הפלט של החלפת פקודה, כשה-rm רקורסיבי | rm -rf "$(pwd)" | Claude Code לא יכול לבדוק את היעד לפני שהפקודה רצה |
| החלפת פקודה נגררת אחרי נתיב קריטי | rm -rf ~/$(cmd) | Claude Code בודק את הנתיב שיישאר אם ההחלפה תתרחב לריקה, כאן ספריית הבית שלך |
| יעד שהוא רק לוכסנים הפוכים | rm -rf "\\" | Git Bash ב-Windows קורא לוכסן הפוך בודד כשורש הכונן הנוכחי, ולכן הבדיקה חלה בכל פלטפורמה |
| נתיב Windows שמציין אמצעי אחסון לפי GUID במקום אות כונן | rm -rf '\\?\Volume{GUID}\work\build' | הנתיב לא אומר על איזה כונן הוא נמצא, ולכן הוא יכול להיות נתיב קריטי. נדרש Claude Code מגרסה v2.1.292 ואילך |
חלק מהיעדים שמסתיימים ב-/* או ב-/*/ | rm -rf logs/*/*, rm -rf logs/*/, cd logs && rm -rf a/* | Claude Code לא יכול לדעת לפני שהפקודה רצה לאילו ספריות הם מגיעים |
כדי לכבות את הבדיקה על יעד שהוא רק פלט של החלפת פקודה, הגדר את CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1 בסביבה שמפעילה את Claude Code.
#הסרות בתוך פקודות מקוננות וסקריפטים מוטבעים
Claude Code בודק גם בתוך המבנים האלה:
- פקודות מקוננות: תת מעטפת עם
(...), קבוצת סוגריים מסולסלים עם{ ...; }, החלפת פקודה עם$(...)או backticks, או החלפת תהליך עם<(...).Claude Codeמוצא הסרה של נתיב קריטי בין אם היא יושבת בתוך הצורה המקוננת, כמו ב-(rm -rf ~)אוecho "$(rm -rf ~)", ובין אם במקום אחר באותה פקודה. - סקריפטים מוטבעים: סקריפט שמועבר ל-
sh,bash,zshאו מעטפת POSIX דומה עם-c, כמו ב-bash -c 'rm -rf ~'.- כשהסקריפט במרכאות כפולות, המעטפת הקוראת מרחיבה את המשתנים שלו לפני שהמעטפת הפנימית מקבלת את הסקריפט. ב-
find . -name '*.tmp' -exec sh -c "rm -rf \"$1\"/*" _ {} \;, הפקודה מתרחבת להסרה משורש מערכת הקבצים פעם אחת לכל התאמה, ו-Claude Codeמתייחס אליה כהסרה של נתיב קריטי. - סקריפט במרכאות בודדות שקושר את
$1לערך אמיתי, כמו ש-sh -c 'rm -rf "$1"/*' _ {}עושה, לא מסומן.
- כשהסקריפט במרכאות כפולות, המעטפת הקוראת מרחיבה את המשתנים שלו לפני שהמעטפת הפנימית מקבלת את הסקריפט. ב-
כדי לכבות את הבדיקה על נתיב קריטי שמוקלד ישירות בסקריפט -c, כגון ~, הגדר את CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT=1 בסביבה שמפעילה את Claude Code.
#שכתוב פקודה שסומנה
איך לשכתב פקודה כך שתעבור את הבדיקה תלוי באיזה מהיעדים האחרים היא משתמשת:
- glob או לוכסן נגרר מתחת למשתנה כגון
$DIR: הגן על כל הרחבה כך שהמעטפת תעצור עם שגיאה כשהמשתנה לא מוגדר או ריק, כמו ב-rm -rf "${DIR:?}"/*, או השתמש בנתיב מילולי. הסרה שכל ההרחבות שלה מוגנות כך עוברת את הבדיקה הזו, ולכן במצבbypassPermissionsהיא רצה בלי בקשה אלא אם בדיקת נתיב קריטי אחרת מסמנת אותה. - glob או לוכסן נגרר מתחת למשתנה שבדרך כלל מוגדר, כגון
$HOME: השתמש בנתיב מילולי. - משתנה שמוצב מהחלפה שמדפיסה ספרייה: השתמש בנתיב מילולי. הגנה
"${D:?}"לא מבטלת את הבדיקה הזו, כי המשתנה אינו ריק. - יעד שהוא רק פלט של החלפת פקודה: הרץ קודם את ההחלפה בנפרד, ואז הסר את הנתיבים המילוליים שהיא מדפיסה. הבקשה אומרת לקלוד לעשות אותו דבר.
עבור glob או לוכסן נגרר מתחת למשתנה, הבקשה מציינת את ה-rm שסומן ואומרת איך לשכתב אותו כך שהבדיקה תעבור.
#הבקשה Dangerous rm operation not ruled out
הנימוק המלא הוא:
Dangerous rm operation not ruled out , the shell may read this command differently than it was parsedהנימוק הזה אומר שהמעטפת עשויה לקרוא את הפקודה אחרת מ-Claude Code, ולכן הסרה יכולה לשבת בחלק שלא נבדק, גם כשאין rm. במצב auto או bypassPermissions, דחייה עם המשפט הזה מגיעה מאותה בדיקה:
This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.אתה מקבל את הבקשה או הדחייה שהסרת נתיב קריטי מקבלת במצב ההרשאות שלך, כולל bypassPermissions, אם כי אפשר לכבות את הבקשה הזו במצב bypassPermissions. אי אפשר לאשר את הפקודה עם כלל allow מסוג Bash או Bash(*), עם מצב auto-allow של ארגז החול, או עם hook מסוג PreToolUse שמחזיר "allow". קרא את הפקודה, ואז אשר את הבקשה, או אחרי דחייה הרץ אותה במעטפת שלך.
#בקשת הכונן המורכב
בקשת הכונן המורכב מופיעה ב-macOS, ב-Linux וב-WSL כש-rm רקורסיבי מכוון לנתיב כונן מורכב שברשימה, כגון /mnt/c או /Volumes/USB/build. הנימוק שלה הוא Dangerous rm operation on mounted drive path: <path>. יעד /* מקבל את הבקשה בלי הדגל הרקורסיבי, כי Claude Code קורא את rm /Volumes/USB/build/* כהסרה של /Volumes/USB/build.
גם עם כלל allow ל-rm, Claude Code מטפל בפקודה כהסרת נתיב קריטי: בקשה או דחייה לפי מצב ההרשאות שלך. אשר את הבקשה כדי לאפשר ל-rm לרוץ, או כבה את הבקשה.
#נתיבים שמקבלים את בקשת הכונן המורכב
התאם את היעד של ה-rm הרקורסיבי או של הסרת /* לצורות הנתיב האלה, כשכל מציין מקום כגון <drive> או <name> מייצג בדיוק מקטע נתיב אחד:
| תחת | צורות נתיב שמקבלות את הבקשה | דוגמאות |
|---|---|---|
/Volumes | /Volumes/<drive>, /Volumes/<drive>/<name> | /Volumes/USB, /Volumes/USB/build |
/System/Volumes | /System/Volumes, /System/Volumes/<volume>, /System/Volumes/<volume>/<name> | /System/Volumes/Data |
/media | /media/<user>, /media/<user>/<drive>, /media/<user>/<drive>/<name> | /media/alex |
/run/media | /run/media, /run/media/<user>, /run/media/<user>/<drive>, /run/media/<user>/<drive>/<name> | /run/media/alex/USB/build |
/mnt | /mnt/<name>, וגם /mnt/<letter>/<name> תחת עיגון של אות אחת כגון /mnt/c של WSL | /mnt/data, /mnt/c/Users |
עבור rm רקורסיבי או לא רקורסיבי על /Volumes, /media או /mnt עצמם, אתה רואה במקום זאת את נימוק הנתיב הקריטי Dangerous rm operation on critical path: <path>.
יעד יחסי נספר מספריית העבודה שלך, ולכן rm -rf build בזמן שאתה עובד ב-/Volumes/USB מכוון ל-/Volumes/USB/build ומקבל את הבקשה.
#כיבוי בקשת הכונן המורכב
כדי להפסיק לקבל את בקשת הכונן המורכב בזמן שבקשות מסיבות אחרות נשארות, הפעל את Claude Code עם CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT=1 בסביבה שלו. לדוגמה, הגדר את המשתנה במעטפת שלך והפעל ממנה את claude:
export CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT=1
claudeבסשן שהופעל כך, בקשת הכונן המורכב נפסקת עבור כונן שלם כגון /Volumes/USB ועבור הנתיבים האחרים שברשימה. אם אתה מתיר Bash(rm *), משתמש במצב Manual, ועובד ב-/Volumes/USB, אז rm -rf build רץ בלי בקשה.
בקשה שעדיין מציגה Dangerous rm operation on mounted drive path אומרת שהמשתנה לא מגיע לסשן:
- משתנה בקובץ הגדרות:
Claude Codeמתעלם מהמשתנה בבלוקenvשל קובץ הגדרות, מכל סוג של קובץ הגדרות, ולכן הגדר את המשתנה במקום שממנו אתה מפעיל אתclaude - סשן שהופעל בלי המשתנה: הפעל שוב את
claudeמסביבה שבה המשתנה מוגדר, כי סשן שרץ לא קולט אותו
#הסרות שעדיין מבקשות אישור כשבקשת הכונן המורכב כבויה
במצב Manual עם כלל allow ל-rm, rm על נתיב כונן מורכב עדיין יכול לבקש אישור, בלי הנימוק Dangerous rm operation on mounted drive path:
- יעד מחוץ לספריות העבודה שלך:
rm -rf /Volumes/USB/otherבזמן שאתה עובד ב-/Volumes/USB/projectמקבל בקשה. כדי לעצור את הבקשה הזו, הוסף ספרייה שמכילה את היעד לסשן - יעד עם
*:rm -rf build/*מקבל בקשה. אשר את הבקשה כדי להריץ את הפקודה, או בקש מקלוד לציין כל יעד בלי* - יעד שהוא נתיב קריטי:
/mntעצמו וספריית העבודה עצמה נשארים נתיבים קריטיים, ולכןrm -rfעל כל אחד מהם מקבל בקשה. אשר את הבקשה כדי לאפשר ל-rmלרוץ
#הסרות נתיב קריטי בכל מצב הרשאות
מה ש-Claude Code עושה עם הסרת נתיב קריטי תלוי במצב ההרשאות שלך:
| מצב | תוצאה |
|---|---|
default, acceptEdits | מבקש ממך לאשר אותה |
plan | מבקש ממך לאשר אותה. כשהמסווג בודק פקודות במהלך התכנון ואין הרשאות עקיפה זמינות, מטפל בה כמו במצב auto |
auto | מבקש ממך לאשר אותה בטרמינל, עם מגבלת זמן. במקומות אחרים, דוחה אותה |
dontAsk | דוחה אותה |
bypassPermissions | בטרמינל, מבקש ממך לאשר אותה לפני שמגבלת הזמן נגמרת. במקומות אחרים, ראה מה קורה בכל מקום |
אם כלל ask מפורש תואם לפקודה, Claude Code שואל אותך במקום זאת, גם במצב auto ובלי מגבלת זמן. במצבים ששואלים, hook מסוג PermissionRequest יכול לענות לבקשה.
כדי להריץ את ההסרות האלה בלי בקשה במצב bypassPermissions, ראה כיבוי בקשת הסרת הנתיב הקריטי.
#מגבלות זמן ודחיות במצבים auto ו-bypassPermissions
במצבים auto ו-bypassPermissions, בקשת הטרמינל להסרת נתיב קריטי מציגה ספירה לאחור של שתי דקות:
- אם הספירה לאחור נגמרת לפני שאתה עונה,
Claude Codeדוחה את הפקודה ואומר לקלוד מה לעשות במקום, כדי שסשן בלי השגחה ימשיך לעבוד. - לחץ על מקש כלשהו בזמן שהבקשה פתוחה כדי לעצור את הספירה לאחור ולהשאיר את הבקשה ממתינה לתשובה שלך.
- אחרי ששלוש בקשות כאלה נגמרות בלי מענה בסשן,
Claude Codeמפסיק להציג אותן ודוחה מיד הסרות נתיב קריטי נוספות. שליחת הודעה חדשה מתחילה את הספירה מחדש.
מגבלת הזמן חלה ב-Claude Code מגרסה v2.1.281 ואילך, וכך גם דחיית מצב auto מחוץ לטרמינל.
מחוץ לטרמינל, אתה לא מקבל את הבקשה הזו:
| איפה | auto | bypassPermissions |
|---|---|---|
| לוח הצ'אט של תוסף VS Code | דוחה אותה | דוחה אותה אלא אם hook מסוג PermissionRequest מתיר אותה |
| אפליקציית שולחן העבודה | דוחה אותה | דוחה אותה אלא אם hook מסוג PermissionRequest מתיר אותה |
הרצה עם -p או סשן Agent SDK | דוחה אותה | --permission-prompt-tool שלך או callback מסוג canUseTool מחליטים. בלי אף אחד מהם, או תחת --permission-prompts none, דוחה אותה אלא אם hook מסוג PermissionRequest מתיר אותה. כדי להריץ את ההסרות האלה בלי בקשה במקום זאת, ראה כיבוי בקשת הסרת הנתיב הקריטי |
בכל מקום שההסרה נדחית, אתה יכול לקרוא את כל הפקודה ולהריץ אותה במעטפת שלך.
כדי לשנות את מה שאתה מקבל בכל מצב, הגדר את CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT ל-1:
bypassPermissions: לבקשת הטרמינל אין מגבלת זמן, ולוח הצ'אט של VS Code שואל אותךauto: המסווג מחליט, בטרמינל, בלוח הצ'אט של VS Code, בהרצות-pובסשנים של Agent SDK
הגדר אותו בסביבה שמפעילה את Claude Code, כגון המעטפת שלך או אפשרות env של ה-SDK, לא בקובץ הגדרות של Claude Code. עבור לוח הצ'אט, הוסף אותו ל-claudeCode.environmentVariables ב-settings.json של המשתמש ב-VS Code עצמו, ואז התחל שיחה חדשה:
{
"claudeCode.environmentVariables": [
{ "name": "CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT", "value": "1" }
]
}#כיבוי בקשת האישור להסרת נתיבים קריטיים במצב bypassPermissions
כדי להריץ פקודות Bash מסוג rm ו-rmdir שמכוונות לנתיבים קריטיים בלי בקשה במצב bypassPermissions, הפעילו את Claude Code עם CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1 בסביבה שלו. זה דורש את Claude Code בגרסה 2.1.311 או חדשה יותר. Claude Code קורא את המשתנה מסביבת ההפעלה בלבד ומתעלם ממנו בבלוק env של קובץ הגדרות. לדוגמה, הגדירו אותו במעטפת שלכם והפעילו משם את claude:
macOS, Linux, WSL
export CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1
claude --permission-mode bypassPermissionsWindows PowerShell
$env:CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS = "1"
claude --permission-mode bypassPermissionsWindows CMD
set CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1
claude --permission-mode bypassPermissionsאזהרה
כשהמשתנה הזה מוגדר, אתם מאבדים בקשת בטיחות למחיקות הרסניות: פקודה כמו
rm -rf ~יכולה לרוץ בלי לשאול אתכם. הגדירו אותו רק בסביבה מבודדת שאת התוכן שלה אתם יכולים להרשות לעצמכם לאבד.
הסרות רצות בלי בקשה רק במצב bypassPermissions עצמו, לא במצב plan, ורק למה שבדיקת הנתיב הקריטי מסמנת בכלי Bash ובכלי Monitor. זה כולל פקודות ש-Claude Code לא יכול לנתח במלואן, וגם הן רצות בלי בקשה.
#הודעות בהפעלה לגבי בקשת האישור להסרת נתיב קריטי
כדי לבדוק אם CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS פועל, קראו את השורה ש-Claude Code מדפיס בהפעלה. בהרצה עם -p, היא ב-stderr. באפליקציית Agent SDK, העבירו את אפשרות stderr כדי לקרוא אותה. השורה אומרת אחד מאלה:
is set, so dangerous rm commands can run without a prompt: הסרות יכולות לרוץ בלי בקשה אחרי שהגדרות מנוהלות ו-hooks של תוספים נטענו. אם הסרות ממשיכות לקבל בקשה או דחייה, ראו למה בקשת האישור להסרת נתיב קריטי נשארת פעילהhas no effect in this session: הסרות שומרות על הבקשה או הדחייה הרגילה שלהן לכל הסשן. כדי לשנות את זה, מצאו את המקרה שלכם תחת למה בקשת האישור להסרת נתיב קריטי נשארת פעילהhas no effect while the Windows registry cannot be read for managed settings: הסרות שומרות על הבקשה או הדחייה הרגילה שלהן, והמשתנה נכנס לתוקף בלי הפעלה מחדש אם קריאה מאוחרת יותר של הרישום מצליחה. אם הסרות ממשיכות לקבל בקשה או דחייה, ראו למה בקשת האישור להסרת נתיב קריטי נשארת פעילה
שורה חסרה לא אומרת שהבקשה פעילה: אפליקציית Agent SDK בלי אפשרות stderr לא רואה שורה, והסרות עדיין יכולות לרוץ בלי בקשה. אחרת, בדקו שהגדרתם את המשתנה בסביבת ההפעלה, שהסשן יכול להיכנס למצב bypassPermissions, וש-claude לא נמצא בתוך סשן אחר. חלק מהסשנים מתחילים בלי המשתנה.
אם אתם רואים אחת מהשורות האלה ולא הגדרתם את המשתנה, מצאו איפה הוא מוגדר, למשל בפרופיל המעטפת שלכם, והסירו אותו.
#למה בקשת האישור להסרת נתיב קריטי נשארת פעילה
אם ל-CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS אין השפעה וההסרות שומרות על הבקשה או הדחייה הרגילה שלהן, בדקו גורמים כמו אלה:
- משהו אחר מטפל בבקשות הרשאה:
--permission-prompt-toolאו callback של Agent SDK בשםcanUseToolבלי--permission-prompts none, hook מסוגPermissionRequestעם matcher כלשהו, או mod שמטפל באירוע הזה. הסירו את ה-hook, ה-mod, הכלי או ה-callback והפעילו מחדש אתclaude - חלונית הצ'אט של תוסף VS Code או אפליקציית Desktop מריצה את הסשן: הפעילו את
claudeבמסוף, למשל במסוף המשולב של IDE - כלל מכסה את Bash, Edit או Read: כלל deny או ask שמכוון לאחד מהכלים האלה, בהפעלה או ברגע ש-Claude Code קורא אותו במהלך הסשן, גם אם תסירו אותו אחר כך. הסירו את הכלל והפעילו מחדש את
claude. כדי להוציא כלי, השתמשו ב---toolsבמקום בכלל deny permissions.blockReadsOutsideWorkingDirectoriesפעיל: הסירו את ההגדרה מכל קובץ הגדרות שמגדיר אותה ל-true, ואז הפעילו מחדש אתclaudeclaudeרץ בתוך סשן אחר:claudeשהופעל מכלי Bash של סשן או מ-hook, גם כשהמשתנה מופיע בשורת הפקודה שלו. הפעילו אתclaudeמהמעטפת שלכם. אל תסתמכו על מגבלת הסשן המקונן הזו כעל גבול אבטחה- hook מסוג
PreToolUseעונהaskלהסרה: שנו את מה שה-hook מחזיר - Claude Code מתחיל את הסשן בשבילכם: סשנים ברקע, חברי צוות ב-agent team בחלוניות מפוצלות, וסשנים ששרת Remote Control יוצר מתחילים בלי המשתנה. הפעילו את
claudeמהמעטפת שלכם - אי אפשר לקרוא הגדרות מנוהלות: Claude Code לא קרא בהצלחה את מקורות ההגדרות המנוהלות שלכם. אם הגדרות שמנוהלות מהשרת ממשיכות להיכשל בטעינה, ראו הגדרות מנוהלות מרחוק נכשלו בטעינה. לכל כשל אחר שאינו שאילתת רישום, בקשו ממי שמנהל את המקור הזה לתקן אותו
- אי אפשר לשאול את רישום Windows: ב-Windows וב-WSL, המשתנה צריך תשובה מהרישום, גם כש-WSL לא משתמש בו להגדרות. השאילתה יכולה להיכשל לאורך כל הסשן ב-Windows שאינו באנגלית, ב-WSL כש-interop כבוי, או בקונטיינר על ליבת WSL2. אם interop כבוי, הפעילו אותו. אחרת, הריצו את ההסרות האלה בעצמכם
#Remove-Item ב-PowerShell
כשאתם מפעילים את כלי PowerShell, Claude Code נותן ל-Remove-Item ולפקודות המובנות של cmd rd, rmdir, del ו-erase בדיקות משלהן, בנפרד מרשימת הנתיבים הקריטיים של rm. עבור Remove-Item, התוצאה תלויה ביעד, והמקרה הראשון שתואם הוא זה שחל:
- נתיבי מערכת: שורש מערכת הקבצים והספריות ברמה העליונה שלו, שורשי כוננים והספריות ברמה העליונה שלהם, וספריית הבית שלכם. Claude Code דוחה את הפקודה בכל מצב, בלי לשאול אתכם.
- תווים כלליים:
*בלבד, או כל יעד שמסתיים ב-/*או\*, כולל glob מתחת למשתנה מעטפת כמו$dir/*. Claude Code דוחה את הפקודה בכל מצב, בלי לשאול אתכם, לפני שהמסווג רואה אותה. - ספריית העבודה שלכם או אחת מהספריות שמעליה, עם
-Recurse: Claude Code מתייחס לפקודה כמו לכל פקודה אחרת שצריכה אישור במצב ההרשאה שלכם, ולכן הוא שואל אתכם במצבים ששואלים, שולח אותה למסווג במצבauto, ודוחה אותה במצבdontAsk. מצבbypassPermissionsמדלג על הבדיקה הזו.
מקרה נתיבי המערכת חל גם על rd, rmdir, del ו-erase כש-Claude מריץ אותן דרך cmd, כמו ב-cmd /c rd /s /q C:\Users. כברירת מחדל, Claude Code דוחה פקודה כזו בכל מצב, בלי לשאול אתכם. בדיקת cmd הזו דורשת את Claude Code בגרסה 2.1.283 או חדשה יותר.
כש-Claude Code שופט יעד של cmd, הוא מתייחס למשתנה PowerShell שבא אחרי טקסט מילולי כאל ריק. זה הופך את cmd /c rd /s /q "C:\$name" להסרה של C:\, ולכן גם היא נדחית. תו כללי בסוף נספר כתיקייה שהוא מרוקן, ולכן cmd /c del /q C:\* נדחית, ו-cmd /c del /q dist\* בפרויקט שלכם לא נדחית.
כדי לכבות את בדיקת cmd, הגדירו CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY=1 בסביבה שמפעילה את Claude Code. Claude Code מתעלם מהמשתנה הזה בבלוק env של קובץ הגדרות. Remove-Item על נתיב מערכת נשאר דחוי בכל מקרה.
#ראו גם
- הרשאות: כללי allow, ask ו-deny, ומדיניות מנוהלת
- הגדרת מצב auto: אמרו למסווג באיזו תשתית הארגון שלכם בוטח
- Hooks: לוגיקת הרשאות מותאמת באמצעות hooks מסוג
PreToolUseו-PermissionRequest - אבטחה: אמצעי הגנה ושיטות עבודה מומלצות
- Sandboxing: בידוד של מערכת הקבצים והרשת לפקודות Bash
- מצב לא אינטראקטיבי: הרצת Claude Code עם הדגל
-p