תיעוד 86
ניהול תוספים של Claude Code עבור הארגון
קבעו אילו תוספים Claude Code מתקין ומתיר בכל הארגון באמצעות הגדרות מנוהלות.
הגדרות מנוהלות מאפשרות לכם להחליט אילו תוספים Claude Code מתקין ומתיר בכל מכונה בארגון. משתמשים לא יכולים לעקוף אותן. מעבירים אותן כהגדרות מנוהלות בשרת מקונסולת הניהול של claude.ai, או כהגדרות מנוהלות בנקודת הקצה דרך MDM או קובץ managed-settings.json. רוב הבקרות בדף זה נכנסות לתוקף רק מהגדרות מנוהלות.
הדף הזה מיועד למנהלים, וההגדרות כאן חלות על Claude Code.
[!NOTE]
המקרים האלה מכוסים בדפים אחרים:
- התקנת תוספים לעצמכם: התחילו בהתקנת תוספים
- שליטה בתוספים שחברים יכולים להשתמש בהם ב-claude.ai וב-Cowork: ראו ניהול תוספים עבור הארגון ב-claude.com
- הפצה של תוסף אחד יחד ל-claude.ai, ל-Cowork ול-Claude Code: ראו בחירת מסלול הפצה ב-claude.com
- דף התוספים בהגדרות הניהול של claude.ai: Organization settings > Plugins & skills מפעיל תוספים עבור חשבונות claude.ai של החברים, והם מגיעים ל-Claude Code כתוספים מסונכרנים. הוא לא מגדיר אף אחד מהמפתחות בדף זה
הסעיפים מסודרים לפי הסדר של רוב ההפצות: דרישת תוספים לכולם או לפי מאגר, seed לקונטיינרים ול-CI, הגבלה של מה שמשתמשים יכולים להוסיף בעצמם, קביעת מדיניות עדכון, ואז ביקורת של מה שמותקן. כדי לסקור את כל מפתחות המדיניות במקום אחד, ראו את מטריצת הבקרה.
#התקנה מראש ודרישת תוספים
marketplace הוא קטלוג של תוספים ש-Claude Code מביא ממאגר git, מכתובת URL או מנתיב מקומי. אחרי שרושמים marketplace במכונה, Claude Code יכול להתקין ממנו תוספים.
כדי להתקין תוספים עבור צי מכונות, הגדירו שני מפתחות יחד בהגדרות מנוהלות, קובץ המדיניות או המדיניות שנמסרת מהשרת וכל מכונה בארגון קוראת: extraKnownMarketplaces רושם marketplace בכל מכונה, ו-enabledPlugins מציין את התוספים להתקנה ולהפעלה ממנו. בחירת מנגנון מסירה מכסה איך הגדרות מנוהלות מגיעות לכל מכונה.
#בחירת מנגנון מסירה
הגדרות מנוהלות מגיעות למכונה דרך אחד משלושה מנגנוני מסירה:
- הגדרות מנוהלות בשרת: הגדירו את מפתחות התוספים כ-JSON בOrganization settings > Claude Code > Managed settings. נדרש תפקיד Owner בארגון Claude שלכם. סשן בענן מביא את ההגדרות האלה לפני שהוא מתקין תוספים.
- מדיניות MDM: ב-macOS, מסרו plist שהמפתחות ברמה העליונה שלו הם מפתחות ההגדרות. ב-Windows, אחסנו את כל מסמך ה-JSON כמחרוזת בערך registry. הדומיין של ה-plist ומפתח ה-registry נמצאים באיפה כל מנגנון מאחסן את המדיניות.
- קובץ הגדרות מנוהלות: שימו
managed-settings.jsonבנתיב המערכת של הפלטפורמה. אפשר גם להוסיף קבצים לספריית ה-drop-inmanaged-settings.d/שלידה. נתיבי הקבצים לפי פלטפורמה נמצאים באיפה כל מנגנון מאחסן את המדיניות, וכללי המיזוג של ה-drop-in נמצאים בפיצול מדיניות מבוססת קובץ בין צוותים.
השתמשו בהגדרות מנוהלות בשרת אם יש לכם ארגון Claude for Teams או Enterprise ב-claude.ai והמכשירים שלכם לא כולם תחת MDM. אחרת השתמשו במדיניות MDM או בקובץ ההגדרות המנוהלות. לפשרה, ראו בחירה בין הגדרות מנוהלות בשרת להגדרות מנוהלות בנקודת הקצה.
#איזה מקור מנוהל חל במכונה
כברירת מחדל, רק אחד משלושת המקורות האלה חל במכונה. Claude Code משתמש בראשון שמספק מפתח מדיניות, ובודק קודם הגדרות מנוהלות בשרת, אחר כך מדיניות MDM, ואחר כך את קובץ ההגדרות המנוהלות. אם הגדרות מנוהלות בשרת מספקות אפילו מפתח מדיניות אחד שאינו קשור, Claude Code מתעלם ממפתחות התוספים במדיניות MDM או בקובץ הגדרות מנוהלות באותה מכונה, מלבד המפתחות שהוא קורא מכל מקור.
כדי להחיל כל מקור, הגדירו את managedSourcesBehavior ל-"merge".
איך Claude Code משלב מקורות מנוהלים מפרט גם את המפתחות ש-Claude Code קורא מכל מקור בשני המצבים.
#דרישת marketplace והתוספים שלו
הוסיפו את ה-marketplace תחת extraKnownMarketplaces, עם מפתח שהוא ה-name של ה-marketplace עצמו מתוך marketplace.json שלו. אחר כך הוסיפו כל תוסף תחת enabledPlugins כ-plugin-name@marketplace-name. כל רשומת marketplace נושאת אובייקט source עם שדה source שמציין את הסוג, למשל github. דוגמת ההגדרות המנוהלות הזו רושמת marketplace של הארגון ומפעילה בכפייה שני תוספים ממנו:
{
"extraKnownMarketplaces": {
"your-marketplace": {
"source": { "source": "github", "repo": "your-org/your-marketplace" },
"autoUpdate": true
}
},
"enabledPlugins": {
"code-formatter@your-marketplace": true,
"deploy-helper@your-marketplace": true
}
}אחרי שההגדרות מגיעות למכונה, Claude Code רושם את ה-marketplace ומתקין את שני התוספים בתחילת הסשן הבא של המשתמש. המשתמשים רואים אותם ב-/plugin, והשבתה של אחד מהם בהיקף שלהם לא עוצרת את הטעינה שלו, כי הגדרות מנוהלות גוברות על כל היקף אחר.
כדי לחסום תוסף בכל היקף ולהסתיר אותו מרשימת ה-marketplace, הגדירו אותו ל-false ב-enabledPlugins המנוהל.
התאימו את השדות autoUpdate ו-source ל-marketplace שלכם:
autoUpdate:trueמשאיר את ה-marketplace ואת התוספים שלו מתרעננים ברקע, ו-falseמכבה את זה. ראו קביעת מדיניות עדכון.source:githubהוא אחד מכמה סוגי מקור. מקורgitמקבלurlעבור GitLab או מארח פנימי, ומקורurlמקבל את הכתובת שלmarketplace.jsonמתארח. כל צורת מקור נמצאת בהפניה של marketplace.
אם ה-marketplace הוא מאגר git פרטי, כל משתמש צריך גישת קריאה אליו. השכפול של marketplace מבוסס git רץ עם git במכונה של המשתמש, באמצעות אישורים שמורים ובלי הנחיות. למשתמשים בלי חשבונות במארח git, השתמשו ב-seed.
רשומה מנוהלת גם דורסת רשומת marketplace באותו שם או עותק --plugin-dir ממקור אחר:
- Marketplaces: רשומת marketplace מנוהלת מחליפה רשומה בעלת קדימות נמוכה יותר עם אותו שם, והשדות של שתי הרשומות לא מתמזגים.
- עותקי
--plugin-dir:--plugin-dirטוען תוסף מתיקייה מקומית לסשן אחד. למה שקורה כשהשם של העותק תואם לתוסף ש-enabledPluginsהמנוהל שלכם מציין, ראו התנגשויות שמות.
ה-marketplace הרשמי של Anthropic, claude-plugins-official, לא צריך רשומת extraKnownMarketplaces כש-enabledPlugins מגדיר אחד מהתוספים שלו ל-true. רשומת name@claude-plugins-official מצהירה על ה-marketplace בעצמה, בכל מקום שהמפתחות האלה חלים. אם לא מפעילים אף אחד מהתוספים שלו ועדיין רוצים שהוא יהיה רשום בכל מכונה, תנו לו רשומה מפורשת, כפי שאפשרו את ה-marketplace הרשמי ואת שלכם עושה.
#דרישת תוספים לפי מאגר
כדי לכסות את התורמים של מאגר אחד במקום את כל הצי, הגדירו את extraKnownMarketplaces ואת enabledPlugins ב-.claude/settings.json של אותו מאגר. רשומות extraKnownMarketplaces חלות רק בתיקייה שהתורם נתן בה אמון, ובתיקייה לא מהימנה Claude Code מתעלם מהן בלי הודעה:
- סשנים אינטראקטיביים: Claude Code רושם את ה-marketplace רק אחרי שהתורם מקבל את תיבת הדו-שיח של אמון בסביבת העבודה עבור אותה תיקייה.
- הרצות
-pלא אינטראקטיביות: הרשומות חלות רק בתיקייה שהמשתמש כבר קיבל את האמון בה באופן אינטראקטיבי, או שדגלhasTrustDialogAcceptedשלה הוגדר ב-~/.claude.json.
תוסף שה-marketplace מציין בנתיב יחסי נטען מעותק ה-marketplace ברגע שרשומות extraKnownMarketplaces של המאגר חלות. תוסף שרשומת ה-marketplace שלו מצביעה על מקור חיצוני, למשל מאגר GitHub של התוסף עצמו, לא מותקן מההגדרות של המאגר לבדן. כל תורם רואה Plugin "<name>" is enabled in project settings but isn't installed עד שהוא מריץ claude plugin install <name>@<marketplace> --scope project, כפי שהתקנת תוספים מתארת.
אם משתמשים במקור directory או file מקומי עם נתיב יחסי, הנתיב מחושב מול ה-checkout הראשי של המאגר. כשמריצים את Claude Code מ-git worktree, הנתיב עדיין מצביע על ה-checkout הראשי, כך שכל ה-worktrees חולקים את אותו מיקום marketplace.
כדי להפיץ חבילת תוספים עם תלויות, שימו את תוסף החבילה ב-enabledPlugins, כפי שתלויות תוספים מתארת.
#מתי כל סביבה מחילה את מפתחות התוספים
הטבלה מראה מתי כל סוג של סשן Claude Code מחיל את extraKnownMarketplaces ואת enabledPlugins, מהגדרות מנוהלות ומ-.claude/settings.json של מאגר. עבור אפליקציית Desktop והרחבות ה-IDE, ראו התקנת תוסף.
| סביבה | extraKnownMarketplaces ו-enabledPlugins מנוהלים | .claude/settings.json של המאגר |
|---|---|---|
| טרמינל, אינטראקטיבי | מוחלים בתחילת הסשן בכל מכונה שמקבלת את ההגדרות | extraKnownMarketplaces מוחל אחרי אמון. enabledPlugins מוחל בתחילת הסשן |
-p ו-CI | מוחלים בתחילת הסשן, וההתקנות רצות ברקע | extraKnownMarketplaces רק בתיקיות מהימנות. enabledPlugins מוחל |
| סשנים בענן | בסביבה שמאוחסנת אצל Anthropic, רק הגדרות מנוהלות בשרת מגיעות לסשן, והוא ממתין להן לפני שהוא מתקין תוספים. מדיניות MDM וקבצי הגדרות מנוהלות נשארים במכונה של המשתמש. לסביבה באירוח עצמי, ראו איפה ומתי מדיניות חלה | ראו את הלשונית Cloud session תחת התקנת תוסף |
בהרצת -p או CI, marketplaces ותוספים מותקנים ברקע, כך שתוסף יכול להיעדר מהתור הראשון. הגדירו CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1 כדי שההרצה תמתין להתקנה לפני השאילתה הראשונה שלה.
#אישור ההפצה
בדקו שה-marketplace והתוספים הגיעו למכונה או להרצת CI:
- במכונה אחת: הפעילו את Claude Code והריצו
/plugin. ה-marketplace והתוספים מופיעים ברשימה. - ב-CI: הריצו
claude -pעם--output-format stream-json --verbose. אירועinitמציג את התוספים שנטענו תחתplugins.
#Seed לקונטיינרים ול-CI
עבור תמונות קונטיינר ומריצי CI שלא יכולים לשכפל בזמן ריצה, מלאו מראש תיקיית תוספים בזמן הבנייה וכוונו את CLAUDE_CODE_PLUGIN_SEED_DIR אליה. Claude Code רושם את ה-marketplaces של ה-seed בהפעלה וטוען מטמוני תוספים מה-seed במקום, בלי שכפול.
seed משמש גם משתמשים שאין להם חשבון במארח git.
[!NOTE]
בסביבות CI/CD, הגדירו git credential helper לפני התקנת תוספים ממאגרים פרטיים. ב-GitHub Actions, ייצאו אסימון עם גישת קריאה למאגר ה-marketplace כ-
GH_TOKEN, ואז הריצוgh auth setup-git. אסימון ה-workflow כברירת מחדל יכול לגשת רק למאגר של ה-workflow עצמו, ולכן marketplace פרטי במאגר אחר צריך personal access token או app token.
1. התקנה לתוך ה-seed בזמן הבנייה
הגדירו את CLAUDE_CODE_PLUGIN_CACHE_DIR לנתיב ה-seed כדי שה-marketplace והתוספים יותקנו שם במקום ב-~/.claude/plugins:
CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/your-marketplace
CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install code-formatter@your-marketplaceל-seed אותו מבנה כמו ל-~/.claude/plugins: known_marketplaces.json, marketplaces/<name>/, ו-cache/<marketplace>/<plugin>/<version>/. אפשר לעגן את ה-seed בנתיב שונה מזה שבו בניתם אותו.
2. כיוון זמן הריצה אל ה-seed
הגדירו CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed בסביבה של הקונטיינר. כדי להשתמש בכמה seeds, הפרידו את הנתיבים שלהם ב-: ב-Unix או ב-; ב-Windows. Claude Code משתמש ב-seed הראשון שמכיל marketplace נתון או מטמון תוסף נתון.
3. הפעלת התוספים
התוספים ב-seed לא מופעלים מעצמם. הגדירו enabledPlugins עבור כל תוסף seed שרוצים לטעון, בהגדרות מנוהלות או ב-.claude/settings.json של המאגר.
כדי לאמת seed, הריצו claude -p עם --output-format stream-json --verbose בתמונה. ברשימת plugins של אירוע init, ה-path של כל תוסף שנטען נמצא תחת ה-seed, למשל /opt/claude-seed/cache/your-marketplace/code-formatter/1.0.0.
marketplaces של seed פועלים לפי הכללים האלה:
- לקריאה בלבד: Claude Code אף פעם לא כותב ל-seed וכופה כיבוי של
autoUpdateעבור marketplaces של seed. - רשומות seed גוברות: בכל הפעלה, marketplace שהוצהר ב-seed דורס את הרשומה של המשתמש עם אותו שם. משתמשים יוצאים מתוסף seed באמצעות
claude plugin disable, לא על ידי הסרת ה-marketplace. - עדכון והסרה נכשלים:
claude plugin marketplace update <name>ו-removeבלי--scopeעל marketplace של seed נכשלים עם הודעה שמציינת את תיקיית ה-seed. - המדיניות עדיין חלה: רשימת ההיתר ורשימת החסימה בודקות גם את המקור הרשום של marketplace של seed. אפשרו את המקור שממנו בניתם את ה-seed.
עבור ציים בלי גישת git יוצאת, שלבו seed עם מקורות marketplace מסוג directory או file על עיגון משותף. הגדירו גם CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1, שגם מכבה עדכון אוטומטי של תוספים. אם יש proxy זמין, ראו הגדרת proxy עבור המשתנים להגדרה.
#הגבלת מה שמשתמשים יכולים להתקין
רשימת ההיתר המנוהלת strictKnownMarketplaces ורשימת החסימה blockedMarketplaces קובעות מאילו מקורות marketplace תוספים רשאים להגיע. המקור של marketplace הוא מאגר ה-git, כתובת ה-URL או הנתיב המקומי ש-Claude Code מביא ממנו את ה-marketplace. שתי הרשימות מתאימות למקור של ה-marketplace שממנו מגיע התוסף, ולא לרשומה של התוסף עצמו בתוך אותו marketplace.
לנעילה הנפוצה, שמאפשרת את ה-marketplace הרשמי ואת זה שלכם, ראו אפשרו את ה-marketplace הרשמי ואת שלכם. שלבו אותה עם disableSideloadFlags כדי שמשתמשים גם לא יוכלו לטעון תוספים מתיקייה מקומית או מכתובת URL.
שתי הרשימות חלות לפני כל הורדה, ושוב בתחילת סשן:
- לפני הורדה: הרשימות חלות כשמשתמש מוסיף marketplace, ובכל התקנה, עדכון, רענון ועדכון אוטומטי.
- בתחילת סשן: הרשימות חלות שוב על תוספים שכבר מותקנים, כך שתוסף מותקן שמקור ה-marketplace שלו כבר לא תואם לא נטען.
/pluginמציג אותו עםMarketplace "<name>" is not in the allowed marketplace listאוMarketplace "<name>" is blocked by enterprise policy.
המקום שבו שתי הרשימות נאכפות תלוי במקום שבו מגדירים אותן:
- מסוף הניהול של claude.ai: Claude Code אוכף את שתי הרשימות בסשנים שקוראים הגדרות מנוהלות מהשרת. claude.ai גם בודק אותן כשמישהו בארגון מוסיף marketplace חדש ממאגר git ב-claude.ai, או מ-Customize באפליקציית Claude Desktop מחוץ ללשונית Code שלה. זה מכסה marketplace שחבר מוסיף לחשבון שלו וגם marketplace שנוסף לכל הארגון תחת Organization settings > Plugins. claude.ai מסרב למאגר שרשימת ההיתר לא מאפשרת או שרשימת החסימה מציינת. הוא לא בודק מחדש marketplace שנוסף באחד מהמקומות האלה לפני שהגדרתם את הרשימות, והוא לא בודק תוספים שהועלו.
- קובץ הגדרות מנוהלות, מדיניות ברמת מערכת ההפעלה, או מקור מנוהל אחר: Claude Code אוכף את שתי הרשימות במקום שבו הוא קורא את המקור הזה. claude.ai לא קורא אותו.
כל עוד מוגדרת רשימת היתר כלשהי, או שרשימת חסימה מציינת מקור כלשהו מלבד skills-dir, תוסף ש-Claude Code לא מצליח למצוא את ה-marketplace שלו לא נטען. /plugin מציג עבורו את שגיאת המדיניות במקום שגיאת לא נמצא. המקרה הנפוץ הוא רשומת enabledPlugins ישנה עבור marketplace שאף אחד לא רשם.
#מטריצת בקרה
הטבלה מפרטת כל מפתח מדיניות של תוספים, מה הוא אוכף, ומה הוא לא יכול לעשות.
| מפתח | מה הוא אוכף | מה הוא לא יכול לעשות |
|---|---|---|
strictKnownMarketplaces | רשימת היתר של מקורות marketplace. [] חוסמת כל מקור, כולל ה-marketplace הרשמי. כינוי: allowedMarketplaces | לא רושם marketplace, לא מגביל רשומות בתוך marketplace מותר, ולא חוסם --plugin-dir |
blockedMarketplaces | רשימת חסימה של מקורות marketplace, שנבדקת לפני רשימת ההיתר | לא חוסם marketplace שכבר נרשם ממקור שהוא לא תואם |
syncClaudeAiPlugins | הגדירו false כדי לעצור את Claude Code מהורדה וטעינה של התוספים שמסונכרנים מ-claude.ai עבור החשבון של כל משתמש. דורש Claude Code v2.1.273 או גרסה מאוחרת יותר | לא מכבה תוסף מסונכרן יחיד. לשם כך, הגדירו "<name>@synced": false ב-enabledPlugins |
enabledPlugins | true מפעיל בכפייה, false חוסם בכל scope ומסתיר את התוסף | לא מתקין תוסף שה-marketplace שלו לא רשום או לא מותר |
disableSideloadFlags | דוחה את --plugin-dir, --plugin-url, --agents, את אפשרות plugins של Agent SDK, ותיקיות שמופיעות במשתנה CLAUDE_CODE_PLUGIN_DIRS בעת ההפעלה, וגם את --mcp-config אלא אם כל שרת בו הוא רשומת type: "sdk" בתוך התהליך. מסרב לתיקיות תוספים שאפליקציית Agent SDK מוסיפה באמצע סשן עם addPlugins | לא מגביל את .mcp.json, את claude mcp add, או שרתים שמספק ה-SDK. שלבו אותו עם allowedMcpServers |
disableCommandPluginSources | חוסם תוספים עם מקור command מהתקנה, עדכון או טעינה. מקור command הוא מקור שתיקיית התוסף שלו נוצרת על ידי הרצת פקודה במכונה. כשהוא לא מוגדר, הוא מקבל את הערך של allowManagedHooksOnly | לא משפיע על סוגי מקור אחרים |
allowManagedHooksOnly | מגביל אילו hooks רצים. ראו allowManagedHooksOnly | לא נותן אמון ב-hooks מתוספים שמשתמשים מפעילים בעצמם |
strictPluginOnlyCustomization | חוסם skills, agents, hooks ושרתי MCP שלא מגיעים מתוסף, מהגדרות מנוהלות, או מהרכיבים המובנים של Claude Code. הוא גם עוצר טעינה של תוספי תיקיית skills. הגדירו true כדי לכסות את כל ארבעת הסוגים, או מערך של ערכי skills, agents, hooks ו-mcp כגון ["skills", "hooks"] כדי לכסות חלק מהם | לא מגביל אילו תוספים משתמשים מתקינים. שלבו אותו עם strictKnownMarketplaces |
pluginSuggestionMarketplaces | marketplaces שהתוספים שלהם עשויים להופיע כהצעות התקנה בטרמינל. ראו המלצה על תוספים | לא משפיע על הטיפים המובנים |
pluginTrustMessage | מוסיף את הטקסט שלכם לאזהרת האמון ש-/plugin מציג לפני התקנת תוסף | לא משנה את הטקסט של האזהרה עצמה |
allowedChannelPlugins | מחליף את רשימת ברירת המחדל של תוספים שמותר להם לדחוף הודעות ערוץ. דורש channelsEnabled: true | ראו הגבלה על אילו תוספי ערוץ יכולים לרוץ |
CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1 | עוצר סשנים אינטראקטיביים בטרמינל מרישום אוטומטי של ה-marketplace הרשמי | לא מסיר marketplace שכבר נרשם. רשימת ההיתר ורשימת החסימה מגבילות את אותו רישום אוטומטי גם בלעדיו. מכונה שהופעלה פעם אחת כשהוא מוגדר לא חוזרת לרישום אוטומטי אחרי שמבטלים את ההגדרה |
allowManagedModsOnly | עוצר כל mod מותקן שלא נחשב של הארגון שלכם מהרצת ה-hooks שלו | לא עוצר התקנה של תוסף שמכיל mod. לשם כך, השתמשו במפתחות ה-marketplace בטבלה הזו |
כל מפתח בטבלה הוא הגדרה מנוהלת, מלבד enabledPlugins, syncClaudeAiPlugins, CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL ו-allowManagedModsOnly:
enabledPlugins: אפשר להגדיר אותו בכל scope, והגדרות מנוהלות נועלות אותו.syncClaudeAiPlugins: כל משתמש יכול גם להגדיר אותו בהגדרות המשתמש או המקומיות שלו. ראו את ה-scope שלו במדריך ההגדרות.CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL: זה משתנה סביבה שמועבר דרך בלוקenvהמנוהל שמוצג תחת כיבוי עדכונים לכל הצי.allowManagedModsOnly: זו אפשרות בתוסף מובנה, שמגדירים תחתpluginConfigsבהגדרות מנוהלות. ראו עצירת טעינה של mods שהמשתמש התקין.
לכל מפתח הגדרות כאן יש רשומה במדריך ההגדרות.
#כינויים למפתחות ה-marketplace
אפשר לכתוב את strictKnownMarketplaces גם כ-allowedMarketplaces, ואת extraKnownMarketplaces גם כ-additionalMarketplaces.
- גרסה: הכינויים דורשים Claude Code v2.1.232 או גרסה מאוחרת יותר, ולקוחות ישנים מתעלמים מהם. בקובץ שצי מעורב קורא, שמרו על השמות הקנוניים.
- שתי הכתיבות מוגדרות: כשקובץ מגדיר את שתי הכתיבות, חל הערך של המפתח הקנוני.
#רשימת היתר עם strictKnownMarketplaces
הגדירו את רשימת ההיתר כרשימה של אובייקטי המקור האלה. רוב הרשומות תואמות במדויק, רשומות hostPattern ו-pathPattern תואמות כביטויים רגולריים, ותווי הכללה של בעלים ב-github תואמים לפי בעלים:
github:{ "source": "github", "repo": "your-org/approved-plugins" }, עםrefו-pathאופציונליים.- תו הכללה של בעלים ב-
github:{ "source": "github", "repo": "your-org/*" }תואם כל מאגר תחת אותו בעלים. ה-*חייב לייצג את כל שם המאגר. Claude Code מתעלם מרשומות כגון*/pluginsו-your-org/tools-*כלא תקינות, ולכן הן לא תואמות דבר. דורש Claude Code v2.1.223 או גרסה מאוחרת יותר. git:{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }, עםrefו-pathאופציונליים.url:{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }, עםheadersאופציונלי.fileו-directory:{ "source": "file", "path": "/opt/marketplace/marketplace.json" }או{ "source": "directory", "path": "/opt/marketplace/plugins" }, עם נתיבים מוחלטים.hostPattern:{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }, מותאם מול ה-host של מקורותgithub,gitו-url. התבנית תואמת בכל מקום בשם המארח, ולכן עגנו אותה עם^ו-$כמו שמוצג כדי להתאים את כל המארח. מקורgithubתמיד נחשב כ-github.com. השתמשו ברשומתhostPatternעבור מארח GitHub Enterprise Server או GitLab שבו מפתחים יוצרים marketplaces משלהם. בדף GHES יש את הדוגמה המפורטת.pathPattern:{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }, מותאם מול ה-pathשל מקורותfileו-directory. התבנית תואמת בכל מקום בנתיב, ולכן התחילו אותה ב-^כדי לקבע קידומת תיקייה.".*"מאפשר כל נתיב מקומי.skills-dir:{ "source": "skills-dir" }לא תואם שום marketplace. למה שהוא עושה, ראו השארת תוספי תיקיית skills בטעינה.
#איך רשומות תואמות
רשומת url תואמת לפי ערך ה-url שלה. headers לא מושווים. עבור רשומות github ו-git, ה-repo או ה-url, ה-ref וה-path חייבים כולם להתאים, או להיעדר בשני הצדדים:
- רשומה בלי
refלא מכסה מקור עםref: "main". - רשומה עבור
your-org/your-marketplaceלא מכסה כתובתgitשמשכפלת את אותו מאגר. - לוכסן בסוף, סיומת
.git, אוssh://במקוםhttps://הם ערך שונה. כשאפשר לשכפל marketplace ביותר מכתובת URL אחת, העדיפו רשומתhostPattern.
רשומות תו הכללה של בעלים פועלות לפי אותם כללים מדויקים עבור ref ותואמות כל path בתוך המאגר אלא אם הרשומה מקבעת אחד. התאמת תו הכללה תלוית רישיות ברשימת ההיתר.
#השארת תוספי תיקיית skills בטעינה
תוספי תיקיית skills הם התוספים שמשתמשים שומרים תחת ~/.claude/skills/ או תחת .claude/skills/ של פרויקט, בתיקיות שמכילות .claude-plugin/plugin.json. אם מגדירים רשימת היתר כלשהי בלי רשומת { "source": "skills-dir" }, הם מפסיקים להיטען. אם נועלים סוג התאמה אישית כלשהו עם strictPluginOnlyCustomization, הם מפסיקים להיטען בין אם הרשומה קיימת ובין אם לא. רשימת ההיתר לא חלה על skills רגילים, כלומר SKILL.md בלי המניפסט הזה.
#marketplaces שמתארחים ב-claude.ai
רשימת ההיתר ורשימת החסימה מתאימות marketplace שמתארח ב-claude.ai לפי ה-host שלו. כדי לאפשר או לחסום אחד, הוסיפו רשומת hostPattern שתואמת את claude.ai ל-strictKnownMarketplaces או ל-blockedMarketplaces. ברשימת ההיתר, רשומה כזו מאפשרת את ה-marketplaces של הארגון ב-claude.ai ואת ה-marketplaces של ברירת המחדל ב-claude.ai, אבל לא marketplace שמורכב מהעלאות claude.ai של חבר עצמו או marketplace שה-scope שלו claude.ai לא ציין. דורש Claude Code v2.1.273 או גרסה מאוחרת יותר.
#נעילת כל מקור החוצה
רשימת היתר ריקה, [], נועלת החוצה כל מקור marketplace, כולל ה-marketplace הרשמי.
הנעילה הזו לא מכסה את התוספים שמסונכרנים מ-claude.ai, ש-Claude Code מוריד מהחשבון של כל משתמש ולא מ-marketplace. כדי לעצור גם אותם, הגדירו את syncClaudeAiPlugins ל-false בהגדרות מנוהלות, או כבו את Skills עבור הארגון ב-claude.ai.
#רשימת חסימה עם blockedMarketplaces
blockedMarketplaces מקבל את אותם אובייקטי מקור כמו strictKnownMarketplaces ונבדק קודם, כך שמקור שנמצא בשתי הרשימות נחסם. ההתאמה ברשימת החסימה רחבה יותר מההתאמה ברשימת ההיתר:
- כתובות Git עוברות קנוניזציה, כך שהצורות
git@ו-https://, סיומות.gitולוכסנים בסוף של מאגרgithub.comאחד כולם תואמים את אותה רשומה. - רשומת
githubגם חוסמת את כתובת ה-gitהמקבילה, ולהפך. - עבור רשומת
owner/*, השוואת הבעלים לא תלוית רישיות. - רשומה בלי
refאוpathחוסמת כל ref וכל path של המאגרים שהיא תואמת.
הרשומה הזו חוסמת כל מאגר תחת בעלים אחד ב-GitHub:
{
"blockedMarketplaces": [
{ "source": "github", "repo": "untrusted-org/*" }
]
}רשומות ה-url ב-blockedMarketplaces חלות גם כשמשתמש מוסיף כתובת מאגר https:// ש-Claude Code משכפל ולא מבצע fetch, כגון כתובת מאגר github.com או gitlab.com פשוטה. המשתמש לא יכול להוסיף את הכתובת הזו אם רשומה מציינת אותה. ההתאמה מתעלמת מסיומת .git ומכל ref שהמשתמש מוסיף אחרי #. דורש Claude Code v2.1.232 או גרסה מאוחרת יותר.
רשומת { "source": "skills-dir" } כאן עוצרת תוספי תיקיית skills מלהיטען, גם מ-~/.claude/skills/ וגם מ-.claude/skills/ של פרויקט.
רשימת חסימה שמציינת רק את הרשומה הזו לא נחשבת להגבלה פעילה, ולכן היא לא עוצרת תוספים ש-Claude Code לא מצליח למצוא את ה-marketplace שלהם מלהיטען.
#אפשרו את ה-marketplace הרשמי ואת שלכם
רוב הארגונים מאפשרים את ה-marketplace הרשמי ואת שלהם, ורושמים את שניהם כדי שכל מכונה תכלול אותם. מדיניות ההגדרות המנוהלות הזו מאפשרת את שני ה-marketplaces, רושמת את שניהם, מפעילה בכפייה שני תוספים, ודוחה את --plugin-dir:
{
"strictKnownMarketplaces": [
{ "source": "github", "repo": "anthropics/claude-plugins-official" },
{ "source": "github", "repo": "your-org/*" },
{ "source": "skills-dir" }
],
"extraKnownMarketplaces": {
"claude-plugins-official": {
"source": { "source": "github", "repo": "anthropics/claude-plugins-official" }
},
"your-marketplace": {
"source": { "source": "github", "repo": "your-org/your-marketplace" }
}
},
"enabledPlugins": {
"code-formatter@your-marketplace": true,
"deploy-helper@your-marketplace": true
},
"disableSideloadFlags": true
}במכונה עם המדיניות הזו, הוספת מקור כלשהו מחוץ לרשימה, למשל /plugin marketplace add https://example.com/other-marketplace.git, נכשלת עם הודעה שמכילה is blocked by enterprise policy ואחריה המקורות המותרים. claude --plugin-dir ./x יוצא עם הודעה שמציינת את disableSideloadFlags.
אם מסירים את רשומת { "source": "skills-dir" } מרשימת ההיתר הזו, תוספי תיקיית skills מפסיקים להיטען.
רשמו את שני ה-marketplaces עם רשומות extraKnownMarketplaces מפורשות, כמו שהמדיניות הזו עושה, במקום להסתמך על רשימת ההיתר או על כך שה-marketplace הרשמי ירשום את עצמו:
- רשימת ההיתר לא רושמת דבר: רשומת
extraKnownMarketplacesכן רושמת, והיא עצמה חייבת לעבור את רשימת ההיתר. Claude Code מסרב לרשום marketplace מנוהל שהמקור שלו לא תואם את רשימת ההיתר. - ה-marketplace הרשמי רושם את עצמו רק בסשן טרמינל אינטראקטיבי: גם שם, הוא נרשם רק כשרשימת ההיתר מאפשרת זאת. הרצה עם
-pאו טרמינל שמחובר לסשן ענן אף פעם לא רושמים אותו. - ניסיון שנחסם נשמר: אם מכונה רצה אי פעם תחת מדיניות שחסמה את ה-marketplace הרשמי, Claude Code רושם את הניסיון שנחסם ולא מנסה שוב אחרי שהמדיניות משתנה. נעילה עם
[]היא מדיניות כזו. המכונה הזו רושמת אותו שוב רק דרך רשומתextraKnownMarketplacesכמו זו במדיניות הזו, רשומתenabledPluginsלאחד מהתוספים שלו, או/plugin marketplace addידני.
#הגדרת מדיניות עדכונים
אפשר להגדיר מדיניות עדכונים לפי marketplace, לכל הצי, או לפי קבוצת משתמשים דרך ערוצי הפצה.
#הפעלה או כיבוי של עדכון אוטומטי לפי marketplace
עדכון אוטומטי של תוספים רץ ברקע אחרי ההפעלה עבור marketplaces שבהם הוא מופעל. עבור אילו marketplaces הוא מופעל כברירת מחדל, ראו When auto-update runs. כדי להחליט עבור הצי, הגדירו "autoUpdate": true או false ברשומת extraKnownMarketplaces מנוהלת:
- אם הרשומה המנוהלת מגדירה את השדה, Claude Code מסרב למתג
/pluginשל המשתמש עם שגיאה שמתחילה ב-Auto-update for '<name>' is set by. - אם הרשומה המנוהלת משאירה את השדה לא מוגדר, המתג של המשתמש נשמר.
#כיבוי עדכונים לכל הצי
כדי לכבות עדכון אוטומטי של תוספים לכל marketplace, הגדירו DISABLE_AUTOUPDATER בבלוק env המנוהל, כמו בדוגמה הזו. אותו משתנה גם עוצר את העדכונים של Claude Code עצמו:
{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}כדי לעצור את העדכונים של Claude Code עצמו אבל להשאיר עדכון אוטומטי של תוספים, הוסיפו "FORCE_AUTOUPDATE_PLUGINS": "1" לאותו בלוק. שאר environment variables that stop plugin auto-update פועלים באותו אופן.
DISABLE_AUTOUPDATER לא מכסה תוספים עם מקור command. Claude Code מריץ מחדש את הפקודה של כל תוסף מופעל כזה בכל סשן, ומתקין את הפלט כשהוא השתנה. לגבי מה שעוצר את הריצות האלה, ראו When a command source re-runs.
#שיוך ערוצי הפצה לקבוצות משתמשים
כדי להריץ ערוצי stable ו-early-access, אחסנו שני marketplaces שמצביעים על refs שונים של אותם תוספים. אחר כך תנו לכל קבוצת משתמשים marketplace משלה, דרך הגדרות מנוהלות לפי endpoint נפרדות או דרך מדיניות gateway. הגדרות מנוהלות בשרת ממסוף הניהול חלות על כל משתמש בארגון, ולכן אי אפשר לשייך דרכן הגדרות שונות לקבוצות שונות.
- פרסו הגדרות endpoint-managed settings נפרדות, כגון קובץ הגדרות מנוהל או פרופיל MDM, למכשירים של כל קבוצה. כדי לבדוק אם הקובץ או הפרופיל של הקבוצה חל על מכשיר שיש בו גם מקור ברמת הארגון, ראו How Claude Code combines managed sources.
- הגדירו מדיניות Claude apps gateway אחת לכל קבוצה. כברירת מחדל, ה-gateway מחיל את המדיניות הראשונה שכלל ההתאמה שלה מתאים למשתמש, ולכן סדרו את המדיניות כך שכל משתמש יגיע למדיניות של הקבוצה שלו. מפת
extraKnownMarketplacesשל המדיניות הזו לא מתמזגת עם זו של מדיניות אחרת, ולכן רשמו בה כל marketplace שהקבוצה צריכה, ולא רק את ה-marketplace של הערוץ שלה.
בכל אחד משני המנגנונים, קבוצת stable מקבלת את התצורה הזו:
{
"extraKnownMarketplaces": {
"stable-tools": {
"source": { "source": "github", "repo": "your-org/stable-tools" }
}
}
}קבוצת early-access מקבלת במקום זאת את latest-tools. כדי להגדיר את שני ה-marketplaces, ראו Run release channels.
#המלצה על תוספים
בעלי marketplace יכולים לצרף אותות relevance לרשומות, כדי ש-Claude Code יציע את התוסף כשפרויקט מתאים.
הצעות מ-marketplace מופיעות רק כשהוא רשום במחשב של המשתמש, כשאתם רושמים את שמו ב-pluginSuggestionMarketplaces בהגדרות המנוהלות, וכשאתם מצהירים על המקור שלו באותה מדיניות. הכריזו על המקור כרשומת extraKnownMarketplaces של ה-marketplace או כרשומת allowlist. ה-marketplace הרשמי צריך רק את השם. ראו Enable suggestions in managed settings.
[!NOTE]
בשיחה של סשן בענן, Claude יכול להציע תוספים בין אם הגדרתם
pluginSuggestionMarketplacesובין אם לא. כדי לכבות את ההצעות האלה, ראו Turn off plugin suggestions.
#ביקורת וסקירה
אירועי OpenTelemetry ו-Analytics API אומרים לכם מה הצי שלכם מתקין ומריץ.
לגבי מה שתוסף יכול להריץ על מחשב ומה כל דרגת אמון מתירה, קראו Plugin security לפני שאתם מאשרים marketplace.
#אירועי OpenTelemetry
claude_code.plugin_installed רושם כל התקנה, ו-claude_code.plugin_loaded רושם כל תוסף מופעל בתחילת הסשן. שני האירועים מסתירים או משמיטים שמות של תוספים ו-marketplaces של צד שלישי, אלא אם הגדרתם OTEL_LOG_TOOL_DETAILS=1, כפי שמוצג ב-Redacted plugin names in your backend. רשימות השדות נמצאות תחת Plugin installed event ו-Plugin loaded event.
#Analytics API
בתוכנית Enterprise, GET /v1/organizations/analytics/plugins מחזיר ספירות התקנה והפעלה לכל תוסף ולכל יום, ב-Claude Code וב-Cowork. אפשר לקבץ את הספירות לפי משתמש או לפי קבוצת RBAC. פעילות תוסף שמגיעה אל Anthropic בלי שם תוסף מופיעה בשורת third-party מצטברת אחת. ראו את endpoint reference ואת Access data programmatically לגבי המפתח שהיא צריכה.
#תכנון למה שהגדרות מנוהלות לא יכולות לאכוף
לבקשות האלה מסקירות אבטחה אין מפתח ייעודי בסכמת ההגדרות הנוכחית. הבקרות הקיימות הקרובות ביותר הן:
- מיקוד לפי משתמש או לפי קבוצה: כל מפתח תוסף חל על כל משתמש שמקבל את ההגדרות. הגדרות מנוהלות בשרת מספקות תצורה אחת לכל ארגון. למדיניות לפי קבוצה, השתמשו בהגדרות endpoint-managed נפרדות או במדיניות gateway, כמו תחת שיוך ערוצי הפצה לקבוצות משתמשים.
- הגבלת רשומות בתוך marketplace מותר: ה-allowlist מתאים למקורות marketplace. כדי לחסום תוסף אחד מ-marketplace מותר, הגדירו אותו ל-
falseב-enabledPluginsהמנוהל. - הסתרת
/plugin: אין מפתח שמכבה את הפקודה. המקבילה הקרובה ביותר משלבת allowlist שמציין רק את ה-marketplace שלכם, רשומותenabledPluginsמנוהלות עבור התוספים שאתם מספקים, ו-disableSideloadFlags. - שער של
--plugin-dirדרך ה-allowlist: ה-allowlist לא מכסה את--plugin-dir.disableSideloadFlagsכן מכסה. - אכיפת מתגי התוספים של claude.ai דרך המפתחות האלה: Organization settings > Plugins & skills לא מגדיר את המפתחות בדף הזה. מה שחברים והארגון מפעילים שם מגיע ל-CLI כ-synced plugins, שיש להם בקרות משלהם.
#פתרון בעיות במדיניות
אם מדיניות התוספים לא מתנהגת כצפוי על מחשב, בדקו קודם את התסמינים האלה:
- הקובץ המנוהל לא נותח: כש-
managed-settings.jsonאינו JSON תקין, Claude Code מסרב להתחיל ומדפיס שגיאה שמציינת את הקובץ. קובץ שעובר ניתוח אבל יש בו רשומה לא תקינה אחת שומר את שאר המדיניות. ראו Invalid entries in managed settings. - המקור המנוהל לא נטען: הריצו
/statusוחפשוEnterprise managed settingsבשורתSetting sources. אם הוא חסר, המקור לא נטען. - משתמש מדווח על
blocked by enterprise policy: ההודעה מציינת את ה-marketplace או את המקור שלו. עבור allowlist, היא גם מפרטת את המקורות המותרים. הרשומות שמוצגות למשתמש נמצאות ב-Troubleshoot plugins. - תוסף שהמשתמש כיבה ב-
~/.claude/settings.jsonעדיין נטען: מקור הגדרות אחר הפעיל אותו מחדש, למשל רשומתenabledPluginsמנוהלת שמאלצת הפעלה./pluginו-claude plugin listמציגיםDisabled in ~/.claude/settings.json but still loadsיחד עם מקור ההגדרות הזה.
#השלבים הבאים
- Marketplace reference: ערכי
sourceש-extraKnownMarketplaces,strictKnownMarketplacesו-blockedMarketplacesמקבלים - Host and maintain a marketplace: הריצו את ה-marketplace שהמדיניות שלכם מצביעה אליו
- Plugin security and trust: מה תוסף יכול לעשות על מחשב ואיך לסקור אותו לפני התקנה
- Manage mods for your organization: כבו או הגבילו mods, התוספים שמריצים JavaScript בתוך Claude Code
- Server-managed settings: ספקו את המפתחות האלה ממסוף הניהול של claude.ai
- Troubleshoot plugins: ההודעות שמשתמשים רואים כשמדיניות חוסמת אותם