मुख्य सामग्री पर जाएं
कस्टम पॉलिसीज़ आपको किसी भी एजेंट बिहेवियर के लिए नियम लिखने देती हैं: प्रोजेक्ट कन्वेंशन लागू करें, ड्रिफ्ट रोकें, विनाशकारी ऑपरेशन्स को रोकें, फंसे हुए एजेंट्स डिटेक्ट करें, या Slack, अप्रूवल वर्कफ़्लो और अन्य सिस्टम्स के साथ इंटीग्रेट करें। वे बिल्ट-इन पॉलिसीज़ के समान हुक इवेंट सिस्टम और allow, deny, instruct डिसीजन्स का उपयोग करते हैं।

क्विक उदाहरण

इसे इंस्टॉल करें:

कस्टम पॉलिसीज़ लोड करने के दो तरीके

विकल्प 1: कन्वेंशन-आधारित (सुझाया गया)

*policies.{js,mjs,ts} फ़ाइलें .failproofai/policies/ में ड्रॉप करें और वे स्वचालित रूप से लोड हो जाती हैं — कोई फ्लैग्स या कॉन्फ़िग बदलाव की जरूरत नहीं। यह git हुक्स की तरह काम करता है: एक फ़ाइल ड्रॉप करें, और यह बस काम करता है।
यह कैसे काम करता है:
  • प्रोजेक्ट और यूजर दोनों डायरेक्टरीज़ स्कैन की जाती हैं (यूनियन — first-scope-wins नहीं)
  • फ़ाइलें प्रत्येक डायरेक्टरी के भीतर वर्णक्रम में लोड होती हैं। ऑर्डर नियंत्रित करने के लिए 01-, 02- प्रीफ़िक्स करें
  • केवल *policies.{js,mjs,ts} से मेल खाने वाली फ़ाइलें लोड होती हैं; अन्य फ़ाइलें अनदेखी की जाती हैं
  • प्रत्येक फ़ाइल स्वतंत्र रूप से लोड होती है (प्रति फ़ाइल fail-open)
  • स्पष्ट --custom और बिल्ट-इन पॉलिसीज़ के साथ काम करता है
कन्वेंशन पॉलिसीज़ आपके ऑर्गनाइज़ेशन के लिए गुणवत्ता स्टैंडर्ड बनाने का सबसे आसान तरीका हैं। .failproofai/policies/ को git में कमिट करें और हर टीम मेंबर को स्वचालित रूप से समान नियम मिलते हैं — कोई प्रति-डेवलपर सेटअप की जरूरत नहीं। जैसे-जैसे आपकी टीम नई विफलता मोड्स खोजती है, एक पॉलिसी जोड़ें और पुश करें। समय के साथ ये एक जीवंत गुणवत्ता स्टैंडर्ड बन जाते हैं जो हर योगदान के साथ बेहतर होते रहते हैं।

विकल्प 2: स्पष्ट फ़ाइल पाथ

रिज़ॉल्व किया गया निरपेक्ष पाथ policies-config.json में customPoliciesPath के रूप में स्टोर किया जाता है। फ़ाइल हर हुक इवेंट पर ताजा लोड होती है - इवेंट्स के बीच कोई कैशिंग नहीं है।

दोनों को एक साथ उपयोग करना

कन्वेंशन पॉलिसीज़ और स्पष्ट --custom फ़ाइल एक साथ मौजूद रह सकती हैं। लोड ऑर्डर:
  1. स्पष्ट customPoliciesPath फ़ाइल (यदि कॉन्फ़िगर की गई है)
  2. प्रोजेक्ट कन्वेंशन फ़ाइलें ({cwd}/.failproofai/policies/, वर्णक्रम में)
  3. यूजर कन्वेंशन फ़ाइलें (~/.failproofai/policies/, वर्णक्रम में)

API

इम्पोर्ट

customPolicies.add(hook)

एक पॉलिसी रजिस्टर करता है। समान फ़ाइल में कई पॉलिसीज़ के लिए आवश्यकतानुसार इसे कॉल करें।

डिसीजन हेल्पर्स

deny(message) - संदेश Claude को "Blocked by failproofai:" प्रीफ़िक्स के साथ दिखाई देता है। एक एकल deny सभी आगे के मूल्यांकन को शॉर्ट-सर्किट करता है। instruct(message) - संदेश वर्तमान टूल कॉल के लिए Claude के संदर्भ में जोड़ा जाता है। सभी instruct संदेश जमा किए जाते हैं और एक साथ डिलीवर किए जाते हैं।
आप policyParams में hint फ़ील्ड जोड़कर किसी भी deny या instruct संदेश में अतिरिक्त निर्देश जोड़ सकते हैं — कोई कोड बदलाव की जरूरत नहीं। यह कस्टम (custom/), प्रोजेक्ट कन्वेंशन (.failproofai-project/), और यूजर कन्वेंशन (.failproofai-user/) पॉलिसीज़ के लिए भी काम करता है। विवरण के लिए कॉन्फ़िगरेशन → hint देखें।

सूचनात्मक allow संदेश

allow(message) ऑपरेशन को अनुमति देता है और Claude को वापस एक सूचनात्मक संदेश भेजता है। संदेश हुक हैंडलर के stdout रेस्पांस में additionalContext के रूप में डिलीवर होता है — instruct द्वारा उपयोग किया गया समान तंत्र, लेकिन शब्दार्थ रूप से भिन्न: यह एक स्टेटस अपडेट है, चेतावनी नहीं। उपयोग मामले:
  • स्टेटस कन्फर्मेशन: allow("All CI checks passed.") — Claude को बताता है सब कुछ ठीक है
  • Fail-open व्याख्याएं: allow("GitHub CLI not installed, skipping CI check.") — Claude को बताता है कि चेक क्यों छोड़ा गया ताकि इसके पास पूर्ण संदर्भ हो
  • कई संदेश जमा होते हैं: यदि कई पॉलिसीज़ में से प्रत्येक allow(message) रिटर्न करता है, तो सभी संदेश नई लाइन्स के साथ जोड़े जाते हैं और एक साथ डिलीवर किए जाते हैं

PolicyContext फ़ील्ड्स

SessionMetadata फ़ील्ड्स

इवेंट टाइप्स


मूल्यांकन ऑर्डर

पॉलिसीज़ इस ऑर्डर में मूल्यांकन किए जाते हैं:
  1. बिल्ट-इन पॉलिसीज़ (डेफिनिशन ऑर्डर में)
  2. customPoliciesPath से स्पष्ट कस्टम पॉलिसीज़ (.add() ऑर्डर में)
  3. प्रोजेक्ट .failproofai/policies/ से कन्वेंशन पॉलिसीज़ (फ़ाइलें वर्णक्रम में, .add() ऑर्डर के भीतर)
  4. यूजर ~/.failproofai/policies/ से कन्वेंशन पॉलिसीज़ (फ़ाइलें वर्णक्रम में, .add() ऑर्डर के भीतर)
पहला deny सभी सबसे आगे की पॉलिसीज़ को शॉर्ट-सर्किट करता है। सभी instruct संदेश जमा किए जाते हैं और एक साथ डिलीवर किए जाते हैं।

ट्रांजिटिव इम्पोर्ट्स

कस्टम पॉलिसी फ़ाइलें सापेक्ष पाथ का उपयोग करके स्थानीय मॉड्यूल्स को इम्पोर्ट कर सकती हैं:
एंट्री फ़ाइल से पहुंचने योग्य सभी सापेक्ष इम्पोर्ट्स रिज़ॉल्व किए जाते हैं। यह from "failproofai" इम्पोर्ट्स को वास्तविक dist पाथ में फिर से लिखकर और ESM कम्पैटिबिलिटी सुनिश्चित करने के लिए अस्थायी .mjs फ़ाइलें बनाकर लागू किया जाता है।

इवेंट टाइप फ़िल्टरिंग

match.events का उपयोग करके सीमित करें कि एक पॉलिसी कब फायर हो:
हर इवेंट टाइप पर फायर करने के लिए match को पूरी तरह छोड़ दें।

एरर हैंडलिंग और विफलता मोड्स

कस्टम पॉलिसीज़ fail-open हैं: एरर्स कभी भी बिल्ट-इन पॉलिसीज़ को ब्लॉक नहीं करते या हुक हैंडलर को क्रैश नहीं करते।
कस्टम पॉलिसी एरर्स को डीबग करने के लिए, लॉग फ़ाइल को देखें:

पूर्ण उदाहरण: कई पॉलिसीज़


उदाहरण

examples/ डायरेक्टरी में तैयार-से-चलने वाली पॉलिसी फ़ाइलें हैं:

स्पष्ट फ़ाइल उदाहरणों का उपयोग करना

कन्वेंशन-आधारित उदाहरणों का उपयोग करना

इंस्टॉल कमांड की जरूरत नहीं — अगले हुक इवेंट पर फ़ाइलें स्वचालित रूप से चुन ली जाती हैं।