मुख्य सामग्री पर जाएं
failproofai JSON कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके यह नियंत्रित करता है कि कौन सी नीतियां सक्रिय हैं, वे कैसे व्यवहार करती हैं, और कस्टम नीतियां कहां से लोड की जाती हैं। कॉन्फ़िगरेशन को आपकी टीम के साथ साझा करना आसान बनाया गया है - इसे अपने रिपॉजिटरी में कमिट करें और हर डेवलपर को एक ही एजेंट सुरक्षा नेट मिलेगा।

कॉन्फ़िगरेशन स्कोप

तीन कॉन्फ़िगरेशन स्कोप हैं, प्राथमिकता क्रम में मूल्यांकन किए गए:
स्कोपफ़ाइल पथउद्देश्य
project.failproofai/policies-config.jsonप्रति-रिपॉजिटरी सेटिंग्स, संस्करण नियंत्रण में कमिट की गई
local.failproofai/policies-config.local.jsonव्यक्तिगत प्रति-रिपॉजिटरी ओवरराइड, gitignored
global~/.failproofai/policies-config.jsonसभी परियोजनाओं में उपयोगकर्ता-स्तर की डिफ़ॉल्ट सेटिंग्स
जब failproofai को एक हुक इवेंट प्राप्त होता है, तो यह वर्तमान कार्यशील निर्देशिका के लिए सभी तीन फ़ाइलों को लोड और विलय करता है।

विलय नियम

enabledPolicies - सभी तीन स्कोप का संघ। किसी भी स्तर पर सक्षम की गई नीति सक्रिय है।
project:  ["block-sudo"]
local:    ["block-rm-rf"]
global:   ["block-sudo", "sanitize-api-keys"]

resolved: ["block-sudo", "block-rm-rf", "sanitize-api-keys"]  ← deduplicated union
policyParams - किसी दिए गए नीति के लिए पैरामीटर को परिभाषित करने वाला पहला स्कोप पूरी तरह जीत जाता है। किसी नीति के पैरामीटर के भीतर मानों का कोई गहरा विलय नहीं है।
project:  block-sudo → { allowPatterns: ["sudo apt-get update"] }
global:   block-sudo → { allowPatterns: ["sudo systemctl status"] }

resolved: { allowPatterns: ["sudo apt-get update"] }   ← project wins, global ignored
project:  (no block-sudo entry)
local:    (no block-sudo entry)
global:   block-sudo → { allowPatterns: ["sudo systemctl status"] }

resolved: { allowPatterns: ["sudo systemctl status"] }  ← falls through to global
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 को बिल्कुल कॉन्फ़िगर नहीं करते हैं उन्हें पिछले संस्करणों के समान व्यवहार मिलता है। नीति के पैरामीटर ब्लॉक के अंदर अज्ञात कुंजियां हुक-फायर समय पर चुप्पी से अनदेखी की जाती हैं लेकिन जब आप failproofai policies चलाते हैं तो चेतावनी के रूप में फ्लैग की जाती हैं।

hint (cross-cutting)

प्रकार: 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 फ़ाइल का पथ। यह failproofai policies --install --custom <path> द्वारा स्वचालित रूप से सेट किया जाता है (पथ को संग्रहीत करने से पहले निरपेक्ष में हल किया जाता है)। फ़ाइल प्रत्येक हुक इवेंट पर ताजी लोड की जाती है - कोई कैशिंग नहीं है। लेखन विवरण के लिए Custom Policies देखें।

कन्वेंशन-आधारित नीतियां

स्पष्ट customPoliciesPath के अतिरिक्त, failproofai .failproofai/policies/ निर्देशिकाओं से नीति फ़ाइलों को स्वचालित रूप से खोज निकालता है:
स्तरनिर्देशिकास्कोप
Project.failproofai/policies/टीम के साथ संस्करण नियंत्रण के माध्यम से साझा
User~/.failproofai/policies/व्यक्तिगत, सभी परियोजनाओं पर लागू
फ़ाइल मिलान: केवल *policies.{js,mjs,ts} से मेल खाने वाली फ़ाइलें लोड की जाती हैं (जैसे security-policies.mjs, workflow-policies.js)। निर्देशिका में अन्य फ़ाइलें अनदेखी की जाती हैं। कोई कॉन्फ़िग आवश्यक नहीं: कन्वेंशन नीतियों को policies-config.json में कोई प्रविष्टि की आवश्यकता नहीं है। केवल निर्देशिका में फ़ाइलें रखें और वे अगले हुक इवेंट पर चुन ली जाएंगी। यूनियन लोडिंग: प्रोजेक्ट और उपयोगकर्ता दोनों कन्वेंशन निर्देशिकाओं को स्कैन किया जाता है। दोनों स्तरों से सभी मेल खाने वाली फ़ाइलें लोड की जाती हैं (customPoliciesPath के विपरीत जो पहले-स्कोप-जीतता-है का उपयोग करता है)। अधिक विवरण और उदाहरणों के लिए Custom Policies देखें।

llm

प्रकार: object (वैकल्पिक) ऐसी नीतियों के लिए LLM क्लाइंट कॉन्फ़िगरेशन जो AI कॉल करती हैं। अधिकांश सेटअप के लिए आवश्यक नहीं है।
{
  "llm": {
    "model": "claude-sonnet-4-6",
    "apiKey": "sk-ant-..."
  }
}

CLI से कॉन्फ़िगरेशन प्रबंधित करना

policies --install और policies --uninstall कमांड Claude Code के settings.json (हुक प्रविष्टि बिंदु) में लिखते हैं, जबकि policies-config.json वह फ़ाइल है जिसे आप सीधे प्रबंधित करते हैं। ये दोनों अलग हैं:
  • settings.json - Claude Code को प्रत्येक टूल उपयोग पर failproofai --hook <event> को कॉल करने के लिए बताता है
  • policies-config.json - failproofai को बताता है कि कौन सी नीतियों का मूल्यांकन करें और किन पैरामीटर के साथ
आप किसी भी समय policies-config.json को सीधे संपादित कर सकते हैं; परिवर्तन तुरंत अगले हुक इवेंट पर प्रभावी होते हैं, कोई पुनरारंभ की आवश्यकता नहीं है।

उदाहरण: टीम डिफ़ॉल्ट के साथ प्रोजेक्ट-स्तर कॉन्फ़िगरेशन

.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 (gitignored) बना सकता है व्यक्तिगत ओवरराइड के लिए बिना सहकर्मियों को प्रभावित किए।