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

תחומי תצורה

קיימים שלושה תחומי תצורה, מוערכים לפי סדר עדיפויות:
תחוםנתיב קובץמטרה
פרויקט.failproofai/policies-config.jsonהגדרות לפי מאגר, מחויבות לבקרת גרסה
מקומי.failproofai/policies-config.local.jsonעדכונים אישיים למאגר, מוחרגים מ-gitignore
גלובלי~/.failproofai/policies-config.jsonברירות מחדל ברמת משתמש בכל הפרויקטים
כאשר failproofai מקבל אירוע hook, הוא טוען ומיזג את כל שלושת הקובצים הקיימים עבור ספריית העבודה הנוכחית.

כללי מיזוג

enabledPolicies - איחוד של כל שלושת התחומים. מדיניות המופעלת בכל רמה פעילה.
project:  ["block-sudo"]
local:    ["block-rm-rf"]
global:   ["block-sudo", "sanitize-api-keys"]

resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"]  ← איחוד ללא כפילויות
policyParams - התחום הראשון המגדיר פרמטרים עבור מדיניות מסוימת מנצח לחלוטין. אין מיזוג עמוק של ערכים בתוך פרמטרים של מדיניות.
project:  block-sudo → { allowPatterns: ["sudo apt-get update"] }
global:   block-sudo → { allowPatterns: ["sudo systemctl status"] }

resolved: { allowPatterns: ["sudo apt-get update"] }   ← הפרויקט מנצח, גלובלי מתעלם
project:  (no block-sudo entry)
local:    (no block-sudo entry)
global:   block-sudo → { allowPatterns: ["sudo systemctl status"] }

resolved: { allowPatterns: ["sudo systemctl status"] }  ← נופל דרך לגלובלי
customPoliciesPath - התחום הראשון המגדיר אותו מנצח. llm - התחום הראשון המגדיר אותו מנצח.

פורמט קובץ התצורה

{
  "enabledPolicies": [
    "block-sudo",
    "block-rm-rf",
    "block-push-master",
    "sanitize-api-keys",
    "sanitize-jwt",
    "block-env-files",
    "block-read-outside-cwd"
  ],
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    },
    "block-push-master": {
      "protectedBranches": ["main", "release", "prod"]
    },
    "block-rm-rf": {
      "allowPaths": ["/tmp"]
    },
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company"]
    },
    "sanitize-api-keys": {
      "additionalPatterns": [
        { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo API key" }
      ]
    },
    "warn-large-file-write": {
      "thresholdKb": 512
    }
  },
  "customPoliciesPath": "/home/alice/myproject/my-policies.js"
}

ייחוס שדות

enabledPolicies

סוג: string[] רשימת שמות מדיניויות להפעלה. שמות חייבים להתאים בדיוק לזהויות המדיניויות המוצגות על ידי failproofai policies. ראה Built-in Policies לרשימה המלאה. מדיניויות שאינן ב-enabledPolicies אינן פעילות, גם אם יש להן רשומות ב-policyParams.

policyParams

סוג: Record<string, Record<string, unknown>> עדכוני פרמטרים לפי מדיניות. המפתח החיצוני הוא שם המדיניות; המפתחות הפנימיים הם ספציפיים למדיניות. כל מדיניות מתעדת את הפרמטרים הזמינים שלה ב-Built-in Policies. אם למדיניות יש פרמטרים אך אתה לא מציין אותם, משתמשים בברירות המחדל המובנות של המדיניות. משתמשים שלא מגדירים את policyParams בכלל מקבלים התנהגות זהה לגרסאות קודמות. מפתחות לא ידועים בתוך בלוק הפרמטרים של מדיניות מתעלמים בשתיקה בזמן hook, אך מסומנים כאזהרות כאשר אתה מריץ failproofai policies.

hint (חוצה תחומים)

סוג: string (אופציונלי) הודעה המצורפת לסיבה כאשר מדיניות חוזרת deny או instruct. השתמש בה כדי לתן Claude הנחיה פעולה ללא שינוי המדיניות עצמה. עובד עם כל סוג מדיניות — מובנה, מותאמת אישית (custom/), קונוונציה של פרויקט (.failproofai-project/), או קונוונציה של משתמש (.failproofai-user/).
{
  "policyParams": {
    "block-force-push": {
      "hint": "Try creating a fresh branch instead."
    },
    "block-sudo": {
      "allowPatterns": ["sudo apt-get"],
      "hint": "Use apt-get directly without sudo."
    },
    "custom/my-policy": {
      "hint": "Ask the user for approval first."
    }
  }
}
כאשר block-force-push דוחה, Claude רואה: “Force-pushing is blocked. Try creating a fresh branch instead.” ערכים שאינם מחרוזות ומחרוזות ריקות מתעלמים בשתיקה. אם hint לא מוגדר, ההתנהגות ללא שינוי (תאימות אחורית).

customPoliciesPath

סוג: string (נתיב מוחלט) נתיב לקובץ JavaScript המכיל מדיניויות hook מותאמות אישית. זה מוגדר אוטומטית על ידי failproofai policies --install --custom <path> (הנתיב נפתר לערך מוחלט לפני האחסון). הקובץ נטען מחדש בכל אירוע hook - אין קשמן. ראה Custom Policies לפרטי יצירה.

מדיניויות המבוססות על קונוונציה

בנוסף ל-customPoliciesPath המפורש, failproofai גילוי ותקבל מחדש קובצי מדיניויות מספריות .failproofai/policies/:
רמהספרייהתחום
פרויקט.failproofai/policies/משותף עם צוות דרך בקרת גרסה
משתמש~/.failproofai/policies/אישי, חל על כל הפרויקטים
התאמת קובצים: רק קובצים התואמים *policies.{js,mjs,ts} נטענים (למשל security-policies.mjs, workflow-policies.js). קובצים אחרים בספרייה מתעלמים. אין צורך בתצורה: מדיניויות קונוונציה אינן דורשות רשומות ב-policies-config.json. פשוט זרוק קובצים לספרייה והם ייבחרו באירוע ה-hook הבא. טעינת איחוד: שתי ספריות קונוונציה של פרויקט ומשתמש סרוקות. כל הקובצים התואמים משתי הרמות נטענות (בניגוד ל-customPoliciesPath המשתמש בתחום-ראשון-מנצח). ראה Custom Policies לפרטים נוספים ודוגמאות.

llm

סוג: object (אופציונלי) תצורת לקוח LLM עבור מדיניויות המבצעות קריאות AI. לא נדרש עבור רוב ההתקנות.
{
  "llm": {
    "model": "claude-sonnet-4-6",
    "apiKey": "sk-ant-..."
  }
}

ניהול תצורה מה-CLI

הפקודות policies --install ו-policies --uninstall כותבות ל-settings.json של Claude Code (נקודות כניסה ה-hook), בעוד policies-config.json הוא הקובץ שאתה מנהל ישירות. שניים נפרדים:
  • settings.json - אומר ל-Claude Code להתקשר ל-failproofai --hook <event> בכל שימוש בכלי
  • policies-config.json - אומר ל-failproofai אילו מדיניויות להעריך ועם אילו פרמטרים
אתה יכול לערוך את policies-config.json ישירות בכל זמן; שינויים יקבלו תוקף מיידי באירוע ה-hook הבא ללא צורך בהפעלה מחדש.

דוגמה: תצורת רמת פרויקט עם ברירות מחדל של צוות

התחייב .failproofai/policies-config.json ללאגר שלך:
{
  "enabledPolicies": [
    "block-sudo",
    "block-rm-rf",
    "block-push-master",
    "sanitize-api-keys",
    "block-env-files"
  ],
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "release", "hotfix"]
    }
  }
}
כל מפתח יכול אז ליצור .failproofai/policies-config.local.json (מוחרג מ-gitignore) לעדכונים אישיים ללא השפעה על חברי צוות.