الانتقال إلى المحتوى الرئيسي
يأتي failproofai مع 30 سياسة مدمجة تلتقط أنماط فشل الوكلاء الشائعة. تنشط كل سياسة على نوع حدث hook معين واسم أداة معين. تقبل تسع سياسات معاملات تتيح لك ضبط سلوكها دون كتابة أكواد. تطبق أربع سياسات سير عمل خط أنابيب commit → push → PR → CI قبل توقف Claude.

نظرة عامة

يتم تجميع السياسات في فئات:
الفئةالسياساتنوع Hook
الأوامر الخطرةblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
الأسرار (معقمات)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
البيئةblock-env-files, protect-env-varsPreToolUse
الوصول إلى الملفاتblock-read-outside-cwd, block-secrets-writePreToolUse
Gitblock-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-stagedPreToolUse
قاعدة البياناتwarn-destructive-sql, warn-schema-alterationPreToolUse
التحذيراتwarn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
سير العملrequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stopStop
  • block- — إيقاف الوكيل من المتابعة.
  • warn- — إعطاء الوكيل سياق إضافي حتى يتمكن من التصحيح الذاتي.
  • sanitize- — مسح البيانات الحساسة من مخرجات الأداة قبل أن يراها الوكيل.
  • require- — حجب حدث Stop حتى تستوفى الشروط.

كل سياسة تدعم حقل hint اختياري في policyParams. يتم إضافة التلميح إلى رسالة الرفض أو التعليمات التي يراها Claude، مما يوفر إرشادات قابلة للتنفيذ دون تعديل كود السياسة. يعمل مع السياسات المدمجة والمخصصة وسياسات الاتفاقية. راجع التكوين → hint للحصول على التفاصيل.

الأوامر الخطرة

منع الوكلاء من تشغيل العمليات التي يصعب التراجع عنها أو التي قد تضر بنظام المضيف.

block-sudo

الحدث: PreToolUse (Bash)
الافتراضي: يرفض أي أمر sudo.
يحجب الاستدعاءات التي تتضمن كلمة المفتاح sudo. يتم تطابق النمط على رموز الأوامر المحللة، وليس السلسلة الخام، لمنع التجاوز عبر حقن عامل shell. المعاملات:
المعاملالنوعالافتراضيالوصف
allowPatternsstring[][]بادئات الأوامر الدقيقة المسموحة. يتم مطابقة كل إدخال مقابل رموز argv المحللة.
مثال:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
مع هذا التكوين، يُسمح بـ sudo systemctl status nginx، لكن sudo rm /etc/hosts مرفوض.
يتم مطابقة الأنماط مقابل الرموز المحللة، وليس سلسلة الأمر الخام. يمنع التجاوز عبر عوامل shell المدرجة (على سبيل المثال، sudo systemctl status x; rm -rf / لا يطابق sudo systemctl status *).

block-rm-rf

الحدث: PreToolUse (Bash)
الافتراضي: يرفض rm -rf, rm -fr، والأشكال الأخرى المشابهة لحذف العودة.
المعاملات:
المعاملالنوعالافتراضيالوصف
allowPathsstring[][]المسارات الآمنة للحذف العودي (على سبيل المثال /tmp).
مثال:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

الحدث: PreToolUse (Bash)
الافتراضي: يرفض curl <url> | bash، curl <url> | sh، wget <url> | bash، والأنماط المشابهة.
بدون معاملات.

block-failproofai-commands

الحدث: PreToolUse (Bash)
الافتراضي: يرفض الأوامر التي ستقوم بإلغاء تثبيت أو تعطيل failproofai نفسه (على سبيل المثال npm uninstall failproofai، failproofai policies --uninstall).
بدون معاملات.

الأسرار (معقمات)

منع الوكلاء من تسرب بيانات اعتماد إلى سياقهم أو مخرجاتهم. تنشط سياسات المعقم على أحداث PostToolUse. عندما يقوم Claude بتشغيل أمر Bash أو قراءة ملف أو استدعاء أي أداة، تفحص هذه السياسات المخرجات قبل إرجاعها إلى Claude. إذا تم الكشف عن نمط سري، تُرجع السياسة قرار رفض يمنع إرجاع المخرجات.

sanitize-jwt

الحدث: PostToolUse (جميع الأدوات)
الافتراضي: يحذف رموز JWT (ثلاث مقاطع base64url مفصولة بـ .).
بدون معاملات.

sanitize-api-keys

الحدث: PostToolUse (جميع الأدوات)
الافتراضي: يحذف تنسيقات مفاتيح API الشائعة: Anthropic (sk-ant-)، OpenAI (sk-)، GitHub PATs (ghp_)، مفاتيح الوصول AWS (AKIA)، مفاتيح Stripe (sk_live_, sk_test_)، ومفاتيح Google API (AIza).
المعاملات:
المعاملالنوعالافتراضيالوصف
additionalPatterns{ regex: string; label: string }[][]أنماط regex إضافية يتم التعامل معها كأسرار.
مثال:
{
  "policyParams": {
    "sanitize-api-keys": {
      "additionalPatterns": [
        { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo internal API key" },
        { "regex": "pat_[0-9a-f]{40}", "label": "Internal PAT" }
      ]
    }
  }
}

sanitize-connection-strings

الحدث: PostToolUse (جميع الأدوات)
الافتراضي: يحذف سلاسل اتصال قاعدة البيانات التي تحتوي على بيانات اعتماد مضمنة (على سبيل المثال postgresql://user:password@host/db).
بدون معاملات.

sanitize-private-key-content

الحدث: PostToolUse (جميع الأدوات)
الافتراضي: يحذف كتل PEM (-----BEGIN PRIVATE KEY-----، -----BEGIN RSA PRIVATE KEY-----، إلخ).
بدون معاملات.

sanitize-bearer-tokens

الحدث: PostToolUse (جميع الأدوات)
الافتراضي: يحذف رؤوس Authorization: Bearer <token> حيث يكون الرمز 20 حرفًا أو أكثر.
بدون معاملات.

البيئة

حماية تكوين البيئة الحساسة من قراءتها أو تعريضها من قبل الوكلاء.

block-env-files

الحدث: PreToolUse (Bash, Read)
الافتراضي: يرفض قراءة ملفات .env عبر cat .env، استدعاءات أداة Read مع .env كمسار الملف، إلخ.
لا يحجب .envrc أو ملفات أخرى مجاورة للبيئة - فقط الملفات المسماة بالضبط .env. بدون معاملات.

protect-env-vars

الحدث: PreToolUse (Bash)
الافتراضي: يرفض الأوامر التي تطبع متغيرات البيئة: printenv، env، echo $VAR.
بدون معاملات.

الوصول إلى الملفات

إبقاء الوكلاء يعملون داخل حدود المشروع بعيدًا عن الملفات الحساسة.

block-read-outside-cwd

الحدث: PreToolUse (Read, Bash)
الافتراضي: يرفض قراءة الملفات خارج دليل العمل الحالي (جذر المشروع).
المعاملات:
المعاملالنوعالافتراضيالوصف
allowPathsstring[][]بادئات المسار المطلق المسموحة حتى لو كانت خارج cwd.
مثال:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

الحدث: PreToolUse (Write, Edit)
الافتراضي: يرفض الكتابة إلى الملفات المستخدمة بشكل شائع للمفاتيح الخاصة والشهادات: id_rsa، id_ed25519، *.key، *.pem، *.p12، *.pfx.
المعاملات:
المعاملالنوعالافتراضيالوصف
additionalPatternsstring[][]أنماط اسم ملف إضافية (على نمط glob) للحجب.
مثال:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

منع الدفع العرضي والدفع القسري والأخطاء في الفروع التي يصعب التراجع عنها.

block-push-master

الحدث: PreToolUse (Bash)
الافتراضي: يرفض git push origin main و git push origin master.
المعاملات:
المعاملالنوعالافتراضيالوصف
protectedBranchesstring[]["main", "master"]أسماء الفروع التي لا يمكن الدفع إليها مباشرة.
مثال:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
للسماح بالدفع إلى جميع الفروع (تعطيل هذه السياسة بشكل فعال دون إزالتها من enabledPolicies)، اضبط protectedBranches: [].

block-work-on-main

الحدث: PreToolUse (Bash)
الافتراضي: يرفض الانتقال إلى فروع main أو master مباشرة.
المعاملات:
المعاملالنوعالافتراضيالوصف
protectedBranchesstring[]["main", "master"]أسماء الفروع التي لا يمكن الانتقال إليها مباشرة.

block-force-push

الحدث: PreToolUse (Bash)
الافتراضي: يرفض git push --force و git push -f.
بدون معاملات خاصة بالسياسة. استخدم التقاطع hint لاقتراح بدائل:
{
  "policyParams": {
    "block-force-push": {
      "hint": "Create a new branch from your current HEAD (e.g. `git checkout -b <new-branch>`) and push that instead."
    }
  }
}

warn-git-amend

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude للمتابعة بحذر عند تشغيل git commit --amend. لا يحجب الأمر.
بدون معاملات.

warn-git-stash-drop

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude لتأكيد قبل تشغيل git stash drop. لا يحجب الأمر.
بدون معاملات.

warn-all-files-staged

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude لمراجعة ما يختزنه عند تشغيل git add -A أو git add .. لا يحجب الأمر.
بدون معاملات.

قاعدة البيانات

اكتش العمليات SQL المدمرة قبل تنفيذها ضد قاعدة البيانات الخاصة بك.

warn-destructive-sql

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude للتأكيد قبل تشغيل SQL التي تحتوي على DROP TABLE، DROP DATABASE، أو DELETE بدون بند WHERE.
بدون معاملات.

warn-schema-alteration

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude للتأكيد قبل تشغيل عبارات ALTER TABLE.
بدون معاملات.

التحذيرات

إعطاء الوكلاء سياق إضافي قبل العمليات المحتملة الخطورة ولكن غير المدمرة.

warn-large-file-write

الحدث: PreToolUse (Write)
الافتراضي: يرشد Claude للتأكيد قبل كتابة الملفات الأكبر من 1024 كيلوبايت.
المعاملات:
المعاملالنوعالافتراضيالوصف
thresholdKbnumber1024عتبة حجم الملف بالكيلوبايت التي يتم فوقها إصدار تحذير.
مثال:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
يفرض معالج hook حد أقصى 1 ميجابايت stdin على الحمولات. لاختبار هذه السياسة بمحتوى صغير، اضبط thresholdKb على قيمة أقل بكثير من 1024.

warn-package-publish

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude للتأكيد قبل تشغيل npm publish.
بدون معاملات.

warn-background-process

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude ليكون حذرًا عند إطلاق العمليات في الخلفية عبر nohup، &، disown، أو screen.
بدون معاملات.

warn-global-package-install

الحدث: PreToolUse (Bash)
الافتراضي: يرشد Claude للتأكيد قبل تشغيل npm install -g، yarn global add، أو pip install دون بيئة افتراضية.
بدون معاملات.

سلوك الذكاء الاصطناعي

اكتشف عندما يعلق الوكلاء أو يتصرفون بشكل غير متوقع.

warn-repeated-tool-calls

الحدث: PreToolUse (جميع الأدوات)
الافتراضي: يرشد Claude لإعادة النظر عند استدعاء نفس الأداة 3 مرات أو أكثر مع معاملات متطابقة - علامة شائعة على أن الوكيل عالق في حلقة.
بدون معاملات.

سير العمل

فرض سير عمل منضبط لنهاية الجلسة. تنشط هذه السياسات على حدث Stop وترفض Claude من التوقف حتى تستوفى كل شرط. يتبعون سلسلة اعتماد طبيعية: commit → push → PR → CI. إذا رفضت سياسة، يتم تجاوز السياسات اللاحقة في السلسلة (الرفض يقصر الدارة). جميع سياسات سير العمل fail-open: إذا كانت الأداة المطلوبة غير متاحة (على سبيل المثال gh غير مثبت، لا يوجد git remote)، تسمح السياسة برسالة معلوماتية تشرح سبب تخطي الفحص.

require-commit-before-stop

الحدث: Stop
الافتراضي: يرفض التوقف عند وجود تغييرات غير مطبقة (ملفات معدلة أو مرحلة أو غير متتبعة). يرجع رسالة معلوماتية عند نظافة دليل العمل.
بدون معاملات.

require-push-before-stop

الحدث: Stop
الافتراضي: يرفض التوقف عند وجود commits غير مدفوعة أو عندما لا يكون للفرع الحالي فرع تتبع بعيد. يقترح git push -u لإنشاء فرع تتبع إذا لزم الأمر. يفشل مفتوح إذا لم يتم تكوين أي بعيد.
المعاملات:
المعاملالنوعالافتراضيالوصف
remotestring"origin"اسم البعيد للدفع إليه.
مثال:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

الحدث: Stop
الافتراضي: يرفض التوقف عند عدم وجود pull request للفرع الحالي، أو عندما يكون PR الموجود مغلقًا/مدمجًا. يرشد Claude لإنشاء PR باستخدام gh pr create.
بدون معاملات.
تتطلب هذه السياسة تثبيت GitHub CLI (gh) والمصادقة عليه. قم بتشغيل gh auth login برمز وصول شخصي يتمتع بنطاق repo للقراءة pull requests. إذا لم يتم تثبيت gh أو لم يتم المصادقة عليه، تفشل السياسة مفتوحة وتبلغ السبب إلى Claude.

require-ci-green-before-stop

الحدث: Stop
الافتراضي: يرفض التوقف عند فشل فحوصات CI أو لا تزال تعمل على الفرع الحالي. يتحقق من سير عمل GitHub Actions وفحوصات bot جهات خارجية (على سبيل المثال CodeRabbit, SonarCloud, Codecov). يتعامل مع استنتاجات skipped كنجاح. يرجع رسالة معلوماتية عند نجاح جميع الفحوصات.
بدون معاملات.
تتطلب هذه السياسة تثبيت GitHub CLI (gh) والمصادقة عليه. قم بتشغيل gh auth login برمز وصول شخصي يتمتع بنطاق repo للقراءة Actions workflow runs و Checks API. إذا لم يتم تثبيت gh أو لم يتم المصادقة عليه، تفشل السياسة مفتوحة وتبلغ السبب إلى Claude.


تعطيل السياسات الفردية

أزل سياسة معينة من enabledPolicies في تكوينك، أو أوقفها في علامة التبويب Policies في لوحة البيانات.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
لا تعمل السياسات غير المدرجة في enabledPolicies، حتى لو كانت هناك إدخالات policyParams لها.