Skip to main content
failproofai מגיע עם 39 מדיניויות מובנות שתופסות מצבי כשל נפוצים של סוכנים. כל מדיניות מופעלת על סוג אירוע hook ושם כלי ספציפיים. תשע עשרה מדיניויות מקבלות פרמטרים המאפשרים לכם לכוונן את התנהגותן ללא כתיבת קוד. חמש מדיניויות זרימת עבודה אוכפות צינור commit → push → PR → CI לפני שClaude עוצר.

סקירה כללית

המדיניויות מסודרות לקטגוריות:
  • block- — עצור את הסוכן מהמשך.
  • warn- — תן לסוכן הקשר נוסף כדי שיוכל לתקן את עצמו.
  • sanitize- — גרד נתונים רגישים מפלט הכלי לפני שהסוכן רואה אותו.

מרחבי שמות

כל מדיניות חיה בחריץ <namespace>/<name>. מדיניויות מובנות שייכות למרחב השמות failproofai/ — לדוגמה, failproofai/sanitize-jwt. מרחב השמות מונע התנגשויות כאשר אתה גם טוען מדיניויות מותאמות או של צד שלישי בעלות שמות קצרים דומים. בתצורה שלך אתה יכול להתייחס למדיניות מובנית גם בשם קצר וגם בשם מוסמך; שני הטפוסים מתפזרים לאותה מדיניות:
אם לשם אין /, failproofai מתייחס אליו כשייך למרחב השמות ברירת המחדל failproofai. שמות שכבר מכילים / (למשל myorg/foo, custom/my-hook) נשמרים כמו שהם.
  • require- — חסום את אירוע ה-Stop עד שתנאים מתקיימים.

כל מדיניות תומכת בשדה hint אופציונלי ב-policyParams. ה-hint מוסף להודעת ה-deny או ה-instruct שClaude רואה, ונותן הנחיות פעולה ללא שינוי קוד המדיניות. עובד עם מדיניויות מובנות, מותאמות וקונוונציה. ראה Configuration → hint לפרטים.

פקודות מסוכנות

מנע סוכנים מהפעלת פעולות שקשה לבטל או שעלולות לפגוע במערכת המארחת.

block-sudo

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל פקודת sudo.
חוסם הופעות שמכילות את מילת המפתח sudo. התאמת דפוס נעשית על אסימוני פקודה מנותחים, לא על המחרוזת הגולמית, כדי למנוע עקיפה דרך הזרקת אופרטור shell. פרמטרים: דוגמה:
עם תצורה זו, 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 וצורות מחיקה רקורסיביות דומות.
פרמטרים: דוגמה:

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).
אין פרמטרים.

פקודות תשתית

עצור סוכנים קוד מהפעלת CLI תשתית או הטלת קנות CI/CD. כל המדיניויות בקטגוריה זו הן opt-in (defaultEnabled: false) — סוכנים שכל להם צורך לגיטימי להתקשר ל-kubectl, terraform וכו’ לא יופרעו אלא אם אתה מפעיל את המדיניות. כשמופעלת, כל הופעה של ה-CLI המתאימה שלול אלא אם הפקודה תואמת ערך ב-allowPatterns. דקדוק הדפוס זהה ל-block-sudo: אסימוני argv מנותחים מותאמים, * הוא כרט עדבר עבור אסימון אחד, וכל פקודה המכילה אופרטור shell עצמאי (&&, ||, |, ;) או אסימון עם תווי shell מובנים שלול לפני התאמת מאימה כדי למנוע עקיפות הזרקה.

block-kubectl

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל הופעה של kubectl.
פרמטרים: דוגמה:
עם תצורה זו, kubectl get pods מורשה אך kubectl apply -f deploy.yaml שלול.

block-terraform

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל הופעה של terraform או tofu (OpenTofu).
פרמטרים: דוגמה:

block-aws-cli

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל הופעה של CLI aws.
פרמטרים: דוגמה:

block-gcloud

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל הופעה של CLI gcloud (Google Cloud).
פרמטרים: דוגמה:

block-az-cli

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל הופעה של CLI az (Azure).
פרמטרים: דוגמה:

block-helm

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת כל הופעה של helm.
פרמטרים: דוגמה:

block-gh-pipeline

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת תת-פקודות gh CLI הבאות המשנות מצב או מפעילות קנות:
  • gh workflow run, gh workflow enable, gh workflow disable
  • gh run rerun, gh run cancel
  • gh pr merge
  • gh release create, gh release delete
  • gh cache delete
  • gh secret set, gh secret delete
תת-פקודות gh לקריאה בלבד כגון gh pr view, gh pr list, gh run list, gh release view ו-gh api repos/.../... לא מותאמות למדיניות זו — הן נדרשות בדרך כלל לבדיקות זרימת עבודה (כולל require-ci-green-before-stop של failproofai). פרמטרים: דוגמה:

סודות (מנקים)

עצור סוכנים מדלף credentials להקשרם או לפלט שלהם. מדיניויות מנקה מופעלות על אירועי PostToolUse. כאשר Claude מפעיל פקודת Bash, קורא קובץ, או קורא לכל כלי, מדיניויות אלה בוחנות את הפלט לפני שהוא מוחזר ל-Claude. אם דפוס סוד מתגלה, המדיניות מחזירה החלטת deny המונעת את הפלט מהעברה בחזרה.

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).
פרמטרים: דוגמה:

sanitize-connection-strings

אירוע: PostToolUse (כל הכלים)
ברירת מחדל: מחווה מחרוזות חיבור בסיס נתונים המכילות credentials מובנים (למשל 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)
ברירת מחדל: שוללת קריאת קבצים מחוץ לשורש הפרויקט. הגבול הוא CLAUDE_PROJECT_DIR (מוגדר פעם אחת ליחידה על ידי Claude Code), עם חזרה לספריה העבודה הנוכחית של הפרקו כאשר משתנה זה לא מוגדר. שימוש בשורש הפרויקט במקום cwd החי משמעו שהגבול נשאר יציב אפילו אחרי שClaude cds לתיקייה משנית.
פרמטרים: דוגמה:

block-secrets-write

אירוע: PreToolUse (Write, Edit)
ברירת מחדל: שוללת כתיבות לקבצים שנמצאים בשימוש נפוץ עבור מפתחות פרטיים וסרטיפיקטים: id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
פרמטרים: דוגמה:

Git

מנע דחיפות אקראיות, דחיפות כפויות וטעויות ענף שקשה לבטל.

block-push-master

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת git push origin main ו-git push origin master.
פרמטרים: דוגמה:
כדי לאפשר דחיפה לכל הענפים (למעשה השבתה של מדיניות זו ללא הסרתה מ-enabledPolicies), הגדר protectedBranches: [].

block-work-on-main

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת git commit, git merge, git rebase ו-git cherry-pick בעוד עץ העבודה נמצא על main או master. יצירה והחלפת ענפים (git checkout, git checkout -b, git switch, git switch -c) לא מושפעות.
פרמטרים:

block-force-push

אירוע: PreToolUse (Bash)
ברירת מחדל: שוללת git push --force ו-git push -f.
אין פרמטרים ספציפיים למדיניות. השתמש ב-hint חוצה הקטעים כדי להציע חלופות:

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 KB.
פרמטרים: דוגמה:
מטפל ה-hook אוכף מגבלת stdin של 1 MB על מטענים. כדי לבדוק מדיניות זו עם תוכן קטן, הגדר 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 ללא סביבה וירטואלית.
אין פרמטרים.

מנהלי חבילות

אכוף אילו מנהלי חבילות הסוכן רשאי להשתמש בהם.

prefer-package-manager

אירוע: PreToolUse (Bash)
ברירת מחדל: בוטל. כשמופעל, חוסם כל פקודת מנהל חבילות שלא ברשימת allowed ואומר ל-Claude לשכתב את הפקודה באמצעות מנהל מורשה.
מזהה: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. רשימת הבלוק המובנית מכסה: pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. השתמש ב-blocked להוסיף מנהלים שלא ברשימה זו. דוגמה תצורה:
עם תצורה זו, pip install flask ו-pdm install flask שניהם שלול עם הודעה אומרת ל-Claude להשתמש ב-uv או bun במקום. פקודות כגון uv pip install flask מורשות כי uv נמצא ברשימה ובודק קודם.

התנהגות AI

גלה כשסוכנים תקועים או מתנהגים בצורה בלתי צפויה.

warn-repeated-tool-calls

אירוע: PreToolUse (כל הכלים)
ברירת מחדל: נוקט Claude להתחשב מחדש כאשר אותו כלי נקרא 3+ פעמים עם פרמטרים זהים - סימן נפוץ שהסוכן תקוע בלולאה.
אין פרמטרים.

זרימת עבודה

אכוף זרימת עבודה משמעתית של סיום פרקו. מדיניויות אלה מופעלות על אירוע Stop ושוללות את הסוכן מהעצירה עד שכל תנאי מתקיים. הם עוקבים אחר שרשרת תלות טבעית: commit → push → PR → CI. אם מדיניות שוללת, מדיניויות מאוחרות בשרשרת מדולגות (deny מקצר מעגל). כל מדיניויות זרימת עבודה הן fail-open: אם הכלי הנדרש לא זמין (למשל gh לא מותקן, אין ריווח git), המדיניות מורשה עם הודעה אינפורמטיבית המסבירה מדוע הבדיקה דולגה.

סמנטיקה Stop של לפי-CLI

אכיפת Stop נראית שונה במעט על פני ששת ה-CLI הנתמכים כי לכל אחד יש חוזה hook של סיום סוכן שונה. ה-outcome זהה — הסוכן לא יוצא עם עצירה בזמן שער זרימת עבודה נכשל — אך ה-mechanics שונים. הטבלה להלן מסכמת; רק Pi יש פרמיה המשתמש בעיר שכדאי להבין לפני שתאפשר מדיניות require-*-before-stop.
מגבלה של Pi. AgentEndEvent של Pi (המקבילה הזרם של אירוע Stop של Claude) אין סוג תוצאה — ברגע שהוא עוצר, לולאת הסוכן של Pi כבר יצאה. Pi לא יכול להילחם להחזור לאותה לולאה בדרך שClaude / Copilot / Cursor / OpenCode יכולים. failproofai מעביר את השער לאירוע before_agent_start של Pi (שעוצר אחרי התזמון הבא של המשתמש) כדי שבדיקת זרימת העבודה עדיין אוכפת, רק בסיבוב הבא במקום הנוכחי.מה זה אומר בפרקטיקה:
  • אחרי שPi עוצר, סיבת ה-deny נתפסה בזיכרון מפתח אחרי מזהה סשן Pi. התזמון הבא בדיוק שאתה שולח באותו תהליך Pi סוך את זה: ה-LLM רואה את ההנחיה MANDATORY ACTION REQUIRED בחלק העליון של תזמון הסיסטם שלו, commits (או דוחף / פותח את ה-PR / מחכה ל-CI), רק אחרי כן ממשיך עם בקשתך. סיבת ה-deny שתפסה היא one-shot — ברגע שסוך, השער ברור.
  • השער מותחם על ידי חיי תהליך של Pi. אם Ctrl+C Pi או יוצא בין סיבובים, הערך בזיכרון בזיכרון מושלך יחד עם התהליך ואת השער מיסה. Claude, Copilot, Cursor ו-OpenCode יש את אותו כולמן (הרוג את הסוכן ואת השער מיסה) — Pi פשוט עושה את זה יותר נראית כי הסוכן יוצא בצורה נראית לפני ש-פיר עוצר.
  • deny ממתין הוא גם ברור על session_shutdown לכל סיבה (new / resume / fork / quit), כך שערט שנגרד מסשן קודם לא יכול לדלוף לסשן טרי שהחל באותו תהליך Pi.
אם אתה צריך retry זהה לClaude של אותו לולאה, הרץ את המדיניויות Stop שלך תחת כל אחד מחמש ה-CLI הנתמכים האחרים. אנחנו עוקבים אחרי Pi קודם לעתיד סוג תוצאה על AgentEndEvent שיתן לנו לסגור את הפער הזה.

require-commit-before-stop

אירוע: Stop
ברירת מחדל: שוללת עצירה כשיש שינויים ללא commit (שונה, מעודכן או קבצים שלא במעקב). מחזירה הודעה אינפורמטיבית כשספרית העבודה נקייה.
אין פרמטרים.

require-push-before-stop

אירוע: Stop
ברירת מחדל: שוללת עצירה כשיש commits שלא דוחפו או כשלענף הנוכחי אין ענף עקיבה מרחוק. מציע git push -u ליצירת ענף עקיבה אם נדרש. נכשל פתוח אם אין ריווח מחוקי.
פרמטרים: דוגמה:

require-pr-before-stop

אירוע: Stop
ברירת מחדל: שוללת עצירה כשאין בקשת משיכה לענף הנוכחי, או כשה-PR הקיים סגור ללא merger. נוקט Claude ליצור PR עם gh pr create. כאשר ה-PR מוזג, המדיניות מורשה (העבודה נשלחה) והודעה רמזה לעבור את הענף (git checkout main && git pull).
אין פרמטרים.
מדיניות זו דורשת GitHub CLI (gh) להיות מותקן ומאומת. הרץ gh auth login עם אסימון גישה אישי בעל repo scope לגישה קריאה לבקשות משיכה. אם gh לא מותקן או לא מאומת, המדיניות כושלת פתוחה ומדווחת את הסיבה ל-Claude.

require-no-conflicts-before-stop

אירוע: Stop
ברירת מחדל: שוללת עצירה כשהענף הנוכחי לא יכול להתמזג בנקיון לענף הבסיס. המדיניות קודם כל מאשרת שיש OPEN PR על GitHub לענף — ללא אחד, אין מטרת merger לאכוף, כל מדיניות קצרה מעגל להתיר. ברגע שה-OPEN` PR מאושר, שני חקירות עצמאיות מופעלות:
  1. מקומיgit merge-tree --write-tree --name-only origin/<baseBranch> HEAD. בסכסוך, הודעת ה-deny שמות קבצי הסכסוך כך Claude יודע בדיוק מה לפתור.
  2. GitHub — משתמשות שוב בתוצאה gh pr view --json mergeable,state שכבר נמשכה בבדיקה מקדימה. תופסת סכסוכים שקובץ origin/<baseBranch> ישן בתוך היה מיסה (למשל מישהו נחת PR סכסוך על main מאז הנתיבה האחרונה). תוצאה CONFLICTING שוללת. תוצאה UNKNOWN גם שוללת ונוקטת Claude להמתין ~10 שניות ובדוק שוב לפני ניסיון להפסיק שוב — זה מונע false negatives בזמן GitHub recomputes.
דוג לחלוטין (מורשה) כאשר: gh לא מותקן, אין PR לענף, מצב ה-PR לא OPEN (למשל MERGED, CLOSED), או gh pr view מחזירה פלט לא parseable. גם כושל פתוח כאשר origin/<baseBranch> חסר מקומית או כאשר אין commits לפני בסיס — הנופלים של Layer 1 האלה עדיין בודקים את ה-PR mergeability בחוסן לפני התיר. פרמטרים:
GitHub CLI (gh) נדרש למדיניות זו. המדיניות משתמשת ב-gh pr view לאשר שה-OPENPR קיים לפני הפעלת כל חקירה סכסוך — ללאgh, המדיניות קצר מעגל להתיר. הרץ gh auth loginעם אסימון גישה אישי בעלrepo` scope לגישה קריאה לבקשות משיכה.

require-ci-green-before-stop

אירוע: Stop
ברירת מחדל: שוללת עצירה כשקציני CI נכשלים או עדיין מופעלים בענף הנוכחי. בודקת הן GitHub Actions זרימת עבודה מופעלה וקציני בוט צד שלישי (למשל CodeRabbit, SonarCloud, Codecov). מטפלת skipped, cancelled ו-neutral מסקנות כלא כושל (האחרון מכסה למשל Socket Security alerts על PR של תורמים חיצוניים, היכן האפליקציה בכוונת דיווחים ניטרליים במקום הצלחה/כישלון). מחזירה הודעה אינפורמטיבית כשכל קציני עברו.
אין פרמטרים.
מדיניות זו דורשת GitHub CLI (gh) להיות מותקן ומאומת. הרץ gh auth login עם אסימון גישה אישי בעל repo scope לגישה קריאה לריצת זרימות עבודה של Actions והבדיקות API. אם gh לא מותקן או לא מאומת, המדיניות כושלת פתוחה ומדווחת את הסיבה ל-Claude.


השבתה של מדיניויות בודדות

הסר מדיניות ספציפית מ-enabledPolicies בתצורה שלך, או כבה אותה בלשונית Policies של ממשק הבקרה.
מדיניויות שלא רשומות ב-enabledPolicies לא מופעלות, אפילו אם ערכי policyParams קיימים עבורן.