תיעוד 131
קבצי הגדרות לדוגמה
קבצי
settings.jsonמציאותיים למפתח, לצוות ולארגון: העתיקו אחד, שמרו את המפתחות שאתם רוצים, ושנו את הערכים.
הדף הזה מכיל שלושה קבצי settings.json לדוגמה, אחד לכל מקום שבו שומרים הגדרה:
~/.claude/settings.jsonשל מפתח.claude/settings.jsonשל צוות, שנכנס ב-commit למאגרmanaged-settings.jsonשל ארגון
כל אחד הוא קובץ סביר לאותו קורא, כדי שתראו את הצורה ותעתיקו את החלקים שאתם רוצים. אף אחד מהם אינו קו בסיס מומלץ. כל ערך מגיע מהרשומה של המפתח בהפניית ההגדרות, שכוללת את הסוג, את ברירת המחדל, ואיפה אפשר להגדיר אותו.
לכל דוגמה יש שתי לשוניות. קובץ הגדרות להעתקה הוא הקובץ כפי שהייתם שומרים אותו. מה כל מפתח עושה הוא אותו קובץ עם הערה מעל כל מפתח. Claude Code לא מקבל הערות בקובץ הגדרות, לכן מעתיקים מהלשונית הראשונה.
#ההגדרות שלכם
הגדרות אישיות של מפתח אחד. הן בוחרות מודל ומאמץ, מתאימות את הטרמינל, ומאשרות מראש פקודת קריאה בלבד וקריאת קובץ אחת. כל מה שלא מופיע נשאר בברירת המחדל. קובץ כזה נמצא ב-~/.claude/settings.json, ושם הוא חל על כל פרויקט שאתם פותחים.
#קובץ הגדרות להעתקה
שמרו את זה בתור ~/.claude/settings.json. זה JSON תקין בלי הערות, כך שאפשר להדביק אותו כמו שהוא ולמחוק את המפתחות שאתם לא רוצים.
{
"model": "claude-sonnet-5",
"modelSettings": {
"claude-sonnet-5": { "effortLevel": "xhigh" }
},
"editorMode": "vim",
"theme": "light-daltonized",
"statusLine": {
"type": "command",
"command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
"padding": 2
},
"spinnerTipsEnabled": false,
"preferredNotifChannel": "terminal_bell",
"permissions": {
"allow": [
"Bash(git diff *)",
"Read(~/.zshrc)"
]
},
"autoUpdatesChannel": "stable",
"cleanupPeriodDays": 20
}#מה כל מפתח עושה
אותו קובץ עם הערה מעל כל מפתח. קראו אותו כאן. העתיקו מהלשונית האחרת, כי Claude Code לא מקבל הערות בקובץ הגדרות.
{
// התחל כל סשן על Sonnet 5
"model": "claude-sonnet-5",
// הרץ את Sonnet 5 מעל רמת high שברירת המחדל. /effort שומר רמה לכל מודל, ו---effort מגדיר רמה לסשן אחד
"modelSettings": {
"claude-sonnet-5": { "effortLevel": "xhigh" }
},
// קיצורי מקלדת של Vim בשורת הפקודה
"editorMode": "vim",
// ערכת הצבעים הבהירה שמותאמת לעיוורון צבעים
"theme": "light-daltonized",
// שורת סטטוס מתחת לשורת הפקודה: שם המודל וההקשר שבשימוש
"statusLine": {
"type": "command",
"command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
"padding": 2
},
// הסתר את הטיפים שמתחלפים מתחת לספינר
"spinnerTipsEnabled": false,
// צלצל בפעמון הטרמינל להתראות, למשל משימה שהסתיימה או בקשת הרשאה שממתינה
"preferredNotifChannel": "terminal_bell",
// תן ל-Claude Code להריץ git diff ולקרוא את .zshrc בלי לשאול
"permissions": {
"allow": [
"Bash(git diff *)",
"Read(~/.zshrc)"
]
},
// קח עדכונים מערוץ stable
"autoUpdatesChannel": "stable",
// מחק תמלילי סשן ונתוני סשן מקומיים אחרים ישנים מ-20 יום
"cleanupPeriodDays": 20
}#הגדרות משותפות של צוות
הגדרות משותפות של צוות אחד, שנכנסות ב-commit למאגר כדי שכל מי שמשכפל אותו יקבל את אותן הרשאות, hooks ושוק תוספים. שמרו קובץ כזה ב-.claude/settings.json בראש המאגר. מה כדאי לדעת לפני שאתם מכניסים קובץ כזה ב-commit:
- סשני ענן מחוץ לשרשורים של פרויקט קוראים אותו גם. סשן ענן עם מאגר אחד מתחיל בתוך השכפול, ולכן הקובץ שנכנס ב-commit חל גם שם.
- טלמטריה נכנסת להגדרות מנוהלות או אישיות. Claude Code מתעלם ממשתני ייצוא OpenTelemetry בקובצי ההגדרות של מאגר, חוץ מכמה ערכים שמכבים טלמטריה. הגדירו אותם בהגדרות מנוהלות לארגון, או ב-
~/.claude/settings.jsonשל כל אדם. - כללי allow ממתינים לאמון. כללי allow ורשומות
extraKnownMarketplacesנכנסים לתוקף אחרי שכל אדם סומך על התיקייה הזו עצמה, ולא מספיק לסמוך רק על תיקיית הורה. כללי deny ו-ask חלים בכל סשן, גם כשיש אמון וגם כשאין. - ה-hook הוא סקריפט במאגר. ה-hook בקובץ הזה מריץ את
.claude/hooks/block-rm.sh. איך hook נפתר מסביר איך לכתוב אותו. - כללים מתאימים לפקודה ולנתיב כפי שנכתבו.
Bash(git push *)לא תואם ל-git -C . push.Read(./.env)לבדו עוצר את כלי הקבצים ואת הפקודות שמציינות את הקובץ, כמוcat .env, אבל לא אתgrep -rשרץ על התיקייה. בלוק ה-sandboxבקובץ הזה סוגר את הפער, כי ה-sandbox מוסיף את נתיבי ה-Readשב-deny שלכם למה שכל פקודה בתוך sandbox לא יכולה לקרוא.
#קובץ הגדרות להעתקה
שמרו את זה בתור .claude/settings.json בראש המאגר והכניסו אותו ב-commit. זה JSON תקין בלי הערות, כך שאפשר להדביק אותו כמו שהוא ולמחוק את המפתחות שאתם לא רוצים.
{
"permissions": {
"allow": [
"Bash(npm run *)"
],
"ask": [
"Bash(git push *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}
]
}
]
},
"extraKnownMarketplaces": {
"acme-tools": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
},
"enabledPlugins": {
"code-formatter@acme-tools": true
},
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": [
"/tmp/build"
]
},
"network": {
"allowedDomains": [
"registry.npmjs.org",
"*.example.com"
]
}
},
"plansDirectory": "./plans"
}#מה כל מפתח עושה
אותו קובץ עם הערה מעל כל מפתח. קראו אותו כאן. העתיקו מהלשונית האחרת, כי Claude Code לא מקבל הערות בקובץ הגדרות.
{
"permissions": {
// הרץ סקריפטים של npm בלי לשאול
"allow": [
"Bash(npm run *)"
],
// אשר לפני פקודות git push
"ask": [
"Bash(git push *)"
],
// מנע קריאה של קבצי env ושל תיקיית secrets על ידי כלי הקבצים ופקודות שקוראות קבצים
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
// לפני כל פקודת Bash, הרץ סקריפט במאגר שיכול לחסום אותה
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}
]
}
]
},
// רשום את שוק התוספים של הצוות בכל שכפול
"extraKnownMarketplaces": {
"acme-tools": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
},
// הפעל תוסף אחד מהשוק הזה. תוסף ממקור חיצוני, כמו מאגר GitHub, עדיין דורש שכל אדם יתקין אותו פעם אחת
"enabledPlugins": {
"code-formatter@acme-tools": true
},
// פקודות ב-sandbox: תיקיית build ניתנת לכתיבה. npm ו-example.com מאושרים מראש
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": [
"/tmp/build"
]
},
"network": {
"allowedDomains": [
"registry.npmjs.org",
"*.example.com"
]
}
},
// שמור קבצי תוכנית בתוך המאגר
"plansDirectory": "./plans"
}#הגדרות מנוהלות של ארגון
קובץ managed-settings.json שמראה את הצורה של המפתחות המנוהלים, עם ערך סביר אחד לכל מפתח. זו אינה מדיניות מומלצת: בחרו את המפתחות שמתאימים לדרישות שלכם וקבעו את הערכים שלכם. הדוגמה מגדירה את המפתחות האלה:
forceLoginMethodו-forceLoginOrgUUIDמקבעים את שיטת ההתחברות ואת הארגוןavailableModelsו-enforceAvailableModelsמגבילים אילו מודלים סשנים יכולים להשתמש בהםpermissions.denyמונע שתי קריאות קובץ ופקודותcurlכפי ש-Claude כותב אותן, ו-disableBypassPermissionsModeמסיר את מצב עקיפת ההרשאותallowManagedPermissionRulesOnlyו-allowManagedMcpServersOnlyהופכים את רשימות ההיתר המנוהלות של הרשאות ושל MCP ליחידות שחלותallowedMcpServersמקבע את שרת ה-MCP לפי URLstrictKnownMarketplacesמתיר שוק תוספים אחדsandboxשם פקודות ב-sandbox עם רשימת רשת קבועה ובלי ניסיון חוזר מחוץ ל-sandbox. המפתחfailIfUnavailableשלו עוצר את Claude Code מלהתחיל במקום שבו ה-sandbox לא יכול לרוץrequiredMinimumVersionקובע גרסת מינימום של Claude CodecleanupPeriodDaysמקצר את שמירת תמלילי הסשן ונתונים מקומיים אחרים לשבעה ימיםcompanyAnnouncementsמציג הודעה בהפעלה
מנהלים פורסים קובץ כזה בתור managed-settings.json, או את אותו JSON דרך MDM או הגדרות שמנוהלות בשרת. קובץ אחד שנפרס חל על כל מכונה או חשבון שהוא מגיע אליהם. כדי לתת לקבוצה ערכים אחרים, פרסו לקבוצה הזו קובץ או פרופיל אחר, כי הגדרות שמנוהלות בשרת עדיין לא תומכות במדיניות לכל קבוצה.
#קובץ הגדרות להעתקה
פרסו את זה בתור managed-settings.json, או את אותו JSON דרך MDM או מסוף claude.ai. זה JSON תקין בלי הערות. החליפו את ה-UUID של הארגון לדוגמה, את כתובת השרת ואת השוק בערכים שלכם, ומחקו את המפתחות שאתם לא רוצים.
{
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
"availableModels": [
"opus",
"sonnet"
],
"enforceAvailableModels": true,
"permissions": {
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./secrets/**)"
],
"disableBypassPermissionsMode": "disable"
},
"allowManagedPermissionRulesOnly": true,
"allowedMcpServers": [
{
"serverUrl": "https://api.githubcopilot.com/*"
}
],
"allowManagedMcpServersOnly": true,
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "acme-corp/approved-plugins"
}
],
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"network": {
"allowedDomains": [
"registry.npmjs.org",
"github.com"
],
"allowManagedDomainsOnly": true
}
},
"requiredMinimumVersion": "2.1.150",
"cleanupPeriodDays": 7,
"companyAnnouncements": [
"Welcome to Acme Corp! Review our code guidelines at docs.example.com"
]
}#מה כל מפתח עושה
אותו קובץ עם הערה מעל כל מפתח. קראו אותו כאן. העתיקו מהלשונית האחרת, כי Claude Code לא מקבל הערות בקובץ הגדרות.
{
// רק התחברויות claude.ai, ורק בארגון הזה
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
// רק מודלי Opus ו-Sonnet. עם enforceAvailableModels, גם האפשרות Default מצייתת לרשימה
"availableModels": [
"opus",
"sonnet"
],
"enforceAvailableModels": true,
"permissions": {
// מנע פקודות curl וקריאה של קובץ .env של הפרויקט ושל תיקיית secrets בכל מכונה
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./secrets/**)"
],
// הסר את מצב bypass-permissions מכל סשן
"disableBypassPermissionsMode": "disable"
},
// התעלם מכללי הרשאה מהגדרות משתמש, פרויקט ומקומיות
"allowManagedPermissionRulesOnly": true,
// רק שרת ה-MCP של GitHub, בהתאמה לפי URL ולא לפי שם, כי משתמש יכול
// לקרוא לכל שרת "github". שרתים שהמשתמש הוסיף ושאינם תואמים לא נטענים, כולל
// כל שרת stdio כשב רשימה יש רק רשומות URL. המפתח allowManagedMcpServersOnly
// למטה הופך את הרשימה המנוהלת הזו לרשימת ההיתר היחידה שחלה
"allowedMcpServers": [
{
"serverUrl": "https://api.githubcopilot.com/*"
}
],
"allowManagedMcpServersOnly": true,
// תוספים יכולים להגיע רק מהשוק הזה
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "acme-corp/approved-plugins"
}
],
// שים כל פקודה ש-Claude מריץ ב-sandbox, סרב להתחיל אם אי אפשר
// להקים את ה-sandbox, ולעולם אל תאפשר לפקודה שנחסמה לנסות שוב מחוץ ל-sandbox. הרשת
// מוגבלת ל-npm ול-GitHub, ומשתמשים לא יכולים להוסיף דומיינים
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"network": {
"allowedDomains": [
"registry.npmjs.org",
"github.com"
],
"allowManagedDomainsOnly": true
}
},
// סרב להתחיל בגרסאות ישנות מ-2.1.150
"requiredMinimumVersion": "2.1.150",
// מחק תמלילי סשן ונתוני סשן מקומיים אחרים אחרי 7 ימים
"cleanupPeriodDays": 7,
// הודעה שכל משתמש רואה בהפעלה
"companyAnnouncements": [
"Welcome to Acme Corp! Review our code guidelines at docs.example.com"
]
}