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

סקירה כללית

המדיניות מקובצות לקטגוריות:
קטגוריהמדיניותסוג Hook
פקודות מסוכנותblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
פקודות תשתיתblock-kubectl, block-terraform, block-aws-cli, block-gcloud, block-az-cli, block-helm, block-gh-pipelinePreToolUse
סודות (מנקים)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
מנהלי חבילותprefer-package-managerPreToolUse
זרימת עבודהrequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-no-conflicts-before-stop, require-ci-green-before-stopStop
  • block- — עצור את הסוכן מהמשך.
  • warn- — תן לסוכן הקשר נוסף כדי שיוכל לתקן את עצמו.
  • sanitize- — נקה נתונים רגישים מפלט הכלי לפני שהסוכן רואה אותו.

מרחבי שמות

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

כל מדיניות תומכת בשדה אופציונלי hint בתוך policyParams. ה-hint מוצמד להודעת deny או instruct ש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).
אין פרמטרים.

פקודות תשתית

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

block-kubectl

אירוע: PreToolUse (Bash)
ברירת מחדל: מוציא כל הפעלה של kubectl.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]קידומות פקודות kubectl המותרות.
דוגמה:
{
  "policyParams": {
    "block-kubectl": {
      "allowPatterns": ["kubectl get *", "kubectl describe *", "kubectl logs *"]
    }
  }
}
עם הגדרה זו, kubectl get pods מותר אבל kubectl apply -f deploy.yaml נדחה.

block-terraform

אירוע: PreToolUse (Bash)
ברירת מחדל: מוציא כל הפעלה של terraform או tofu (OpenTofu).
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]קידומות פקודות terraform/tofu המותרות.
דוגמה:
{
  "policyParams": {
    "block-terraform": {
      "allowPatterns": ["terraform plan", "terraform validate", "terraform show *"]
    }
  }
}

block-aws-cli

אירוע: PreToolUse (Bash)
ברירת מחדל: מוציא כל הפעלה של CLI aws.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]קידומות פקודות aws CLI המותרות.
דוגמה:
{
  "policyParams": {
    "block-aws-cli": {
      "allowPatterns": ["aws s3 ls *", "aws sts get-caller-identity"]
    }
  }
}

block-gcloud

אירוע: PreToolUse (Bash)
ברירת מחדל: מוציא כל הפעלה של CLI gcloud (Google Cloud).
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]קידומות פקודות gcloud המותרות.
דוגמה:
{
  "policyParams": {
    "block-gcloud": {
      "allowPatterns": ["gcloud auth list", "gcloud config list"]
    }
  }
}

block-az-cli

אירוע: PreToolUse (Bash)
ברירת מחדל: מוציא כל הפעלה של CLI az (Azure).
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]קידומות פקודות az CLI המותרות.
דוגמה:
{
  "policyParams": {
    "block-az-cli": {
      "allowPatterns": ["az account show", "az group list"]
    }
  }
}

block-helm

אירוע: PreToolUse (Bash)
ברירת מחדל: מוציא כל הפעלה של helm.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]קידומות פקודות helm המותרות.
דוגמה:
{
  "policyParams": {
    "block-helm": {
      "allowPatterns": ["helm list", "helm status *"]
    }
  }
}

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). פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPatternsstring[][]הפעלות מסקריפט ספציפיות להרשאה למרות שהן אחרת היו נדחות.
דוגמה:
{
  "policyParams": {
    "block-gh-pipeline": {
      "allowPatterns": ["gh run rerun *"]
    }
  }
}

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

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

sanitize-jwt

אירוע: PostToolUse (כל הכלים)
ברירת מחדל: מחפה אסימוני JWT (שלוש קטעי base64url מופרדים ב-.).
אין פרמטרים.

sanitize-api-keys

אירוע: PostToolUse (כל הכלים)
ברירת מחדל: מחפה פורמטי API key נפוצים: 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)
ברירת מחדל: מוציא קריאה של קבצים מחוץ לשורש הפרויקט. הגבול הוא CLAUDE_PROJECT_DIR (מוגדר פעם ליחידה על ידי Claude Code), עם חזרה לספריה הנוכחית של הסשן כאשר משתנה זה לא מוגדר. שימוש בשורש הפרויקט ולא ב-cwd החי אומר הגבול נשאר יציב אפילו אחרי שClaude cdים לתת-ספרייה.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
allowPathsstring[][]קידומות נתיבים מוחלטים המותרים גם אם מחוץ לשורש הפרויקט.
דוגמה:
{
  "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)
ברירת מחדל: מוציא git commit, git merge, git rebase ו-git cherry-pick בזמן שעץ העבודה נמצא ב-main או master. יצירת וחלפן ענפים (git checkout, git checkout -b, git switch, git switch -c) לא מושפעים.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
protectedBranchesstring[]["main", "master"]שמות ענפים שבהם commit/merge/rebase/cherry-pick נדחה.

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 KB.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
thresholdKbnumber1024סף גודל קובץ בקילובייטים מעליו מוצאת אזהרה.
דוגמה:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
מטפל ה-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.
פרמטרסוגברירת מחדלתיאור
allowedstring[][]שמות מנהלי חבילות מותרים. כל מנהל שהוכר שאינו ברשימה זו נחסום. כשריק, המדיניות היא no-op.
blockedstring[][]שמות מנהלים נוספים לחסימה מעבר לרשימה המובנית (לדוגמה ['pdm', 'pipx']).
רשימת החסימה המובנית מכסה: pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. השתמש ב-blocked לצרף מנהלים שאינם ברשימה זו. דוגמה הגדרה:
{
  "enabledPolicies": ["prefer-package-manager"],
  "policyParams": {
    "prefer-package-manager": {
      "allowed": ["uv", "bun"],
      "blocked": ["pdm", "pipx"]
    }
  }
}
עם הגדרה זו, 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 remote), המדיניות מאפשרת עם הודעה מידע המסבירה מדוע הבדיקה דלולה.

סמנטיקה Stop לכל CLI

אכיפת Stop נראית מעט שונה בשבעת CLIs הנתמכים כי לכל אחד מהם חוזה hook אירוע “סוכן סיים” שונה. התוצאה היא זהה — הסוכן לא יכול להסתלק מהעצירה בזמן ששער זרימת עבודה נכשל — אבל המכניקה שונה. הטבלה להלן מסכמת; רק Pi בעל quirk גלוי למשתמש שכדאי להבין לפני שאתה משביל מדיניות require-*-before-stop.
CLIכשהשער משתפעמה אתה רואה
Claude Codeאותה לולאת סוכן, מידClaude ממשיך לעבוד — תיקונים בעיה, ואז מנסה לסיים שוב. אין הפסקה גלויה לך.
Codexאותה לולאת סוכן, מידזהה ל-Claude.
GitHub Copilot CLIאותה לולאת סוכן, מידזהה ל-Claude (משתמש ב-{decision:"block", reason} ערוץ ניסיון של Copilot — אומת אמפירי מול Copilot CLI 1.0.41).
Cursor Agentאותה לולאת סוכן, מידזהה ל-Claude (משתמש ב-{followup_message} ערוץ Cursor — מוגבל ל-loop_limit, ברירת מחדל 5 ניסיונות).
Gemini CLIאותה לולאת סוכן, מידזהה ל-Claude (משתמש ב-{decision:"block", reason} ערוץ Gemini על AfterAgent).
OpenCodeאותה לולאת סוכן, מידזהה ל-Claude (משתמש בקריאה client.session.prompt(...) SDK של OpenCode מנותבת דרך hookSpecificOutput.additionalContext).
Pi (pi-coding-agent)סדר משתמש הבאPi עוצר בצורה גלויה כשהשער משתפע — לולאת הסוכן שלו יוצאת וחזרת למנהל. השער עוברת בפעם הבאה שאתה שומר הנהלה: failproofai מקדם הנהלה MANDATORY ACTION REQUIRED לסדר הזה של מערכת בקרה, משכנעת את ה-LLM להשלים את שלב זרימת העבודה (commit, push וכו’) לפני ביצוע כל אחד שביקשת.
מגבלת Pi. AgentEndEvent של Pi (השקול במעלה זה של ארוע Stop של Claude) אין סוג Result — בתוך הזמן שהוא משתפע, לולאת הסוכן של Pi כבר יצאה. Pi לא יכול להיכפף לניסיון מחדש אותה לולאה בדרך שClaude / Copilot / Cursor / Gemini / OpenCode יכולים. failproofai משחקת את השער ל-before_agent_start אירוע Pi (המשתפע אחרי הנהלה משתמש הבא) כך בדיקת זרימת העבודה עדיין אוכפת, רק בסדר הבא ולא זה.מה זה אומר בפרקטיקה:
  • אחרי שPi עוצר, סיבת הדחיה נלכדה בזכרון מקודד ב-id סשן Pi. ההנהלה הבאה בדיוק שאתה שומר בתהליך Pi זהה זה: ה-LLM רואה הנהלה MANDATORY ACTION REQUIRED בחלקה העליון של מערכת בקרה, commits (או דוחפים / פותחים את ה-PR / מחכים ל-CI), וזה רק אחר כך ממשיך עם הבקשה שלך. סיבת דחיה שנלכדה היא חד-שימושית — אחד שנדלה, השער ברור.
  • השער מוגבל בחיי תהליך Pi. אם אתה Ctrl+C Pi או יוצא בין סדרים, הרשומה בזכרון מושמטת יחד עם התהליך והשער חמוקה. Claude, Copilot, Cursor, Gemini ו-OpenCode יש אותו קשור (הרג את הסוכן והשער חמוקה) — Pi פשוט עושה את זה גלוי יותר כי הסוכן גלויים יוצא לפני שהשער משתפע.
  • דחיה תלוי הוא גם ברור על session_shutdown לכל סיבה (new / resume / fork / quit), אז שער מיושן מסדר קודם לא יכול לדלוף לתוך סדר טרי התחלתי באותו תהליך Pi.
אם אתה צריך Claude-סגנון אותו-לולאה ניסיון, הרץ את מדיניות Stop שלך תחת כל אחד מהשש CLIs הנתמכים האחרים. אנחנו עוקבים Pi במעלה לעתיד סוג Result על AgentEndEvent שיתן לנו לסגור את הפער הזה.

require-commit-before-stop

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

require-push-before-stop

אירוע: Stop
ברירת מחדל: מוציא עצירה כשישנם commits לא דחופים או כשהענף הנוכחי אין לענף remote עקיבה. מציע git push -u ליצירת ענף עקיבה אם נדרש. נופל פתוח אם אין remote מגודר.
פרמטרים:
פרמטרסוגברירת מחדלתיאור
remotestring"origin"שם remote לדחיפה אליו.
דוגמה:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

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

require-no-conflicts-before-stop

אירוע: Stop
ברירת מחדל: מוציא עצירה כשהענף הנוכחי לא יכול להתמזג בנקיוניות לענף base. המדיניות ראשית מאשרת ישנו OPEN PR ב-GitHub לענף — בלעדיו, אין מטרה מזג לאכוף, כל המדיניות קצרה-חוזה להרשאה. פעם OPEN PR מאומתת, שניים בדיקות עצמאיות פעם:
  1. ישניgit merge-tree --write-tree --name-only origin/<baseBranch> HEAD. ב-סכסוך, הודעת דחיה שמות הקבצים סכסוכי כדי Claude יודע בדיוק מה פתור.
  2. GitHub — משתמש כן gh pr view --json mergeable,state תוצאה כבר משומשת בבדיקה קודמת. תופסת סכסוכים שישן מקומי origin/<baseBranch> היה להחמיץ (לדוגמה מישהו נחת סכסוך PR על main מאז אחרון לשאול). CONFLICTING תוצאה מוציא. UNKNOWN תוצאה גם מוציא ומשכנע Claude להמתין ~10 שניות ו-re-check לפני ניסיון לעצור שוב — זה מונע שקרים שליליים בזמן GitHub מחשב מחדש.
דלולות לחלוטין (מאפשרת) כשן: gh לא מותקן, אין PR לענף, מצב ה-PR לא OPEN (לדוגמה MERGED, CLOSED), או gh pr view מחזירה פלט לא ניתן לפירוש. גם נופלת פתוחה כשן origin/<baseBranch> חסרה מקומית או כשן אין commits לפני base — אלה שכבה 1 fall-throughs עדיין להתייעץ ה-PR mergability בשמור לפני אחרון. פרמטרים:
פרמטרסוגברירת מחדלתיאור
baseBranchstring"main"ענף base לבדוק סכסוכים נגד.
GitHub CLI (gh) נדרשת למדיניות זו. המדיניות משתמשת gh pr view לאשר OPEN PR קיים לפני הרצת כל בדיקת סכסוך — בלעדי gh, המדיניות קצרה-חוזה להרשאה. הרץ gh auth login עם אסימון גישה אישי שיש repo היקף לקריאה גישה ל-pull requests.

require-ci-green-before-stop

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


השבתה מדיניות ספציפיות

הסר מדיניות ספציפית מ-enabledPolicies בהגדרה שלך, או החלף את זה בטאב מדיניות של לוח המחוונים.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
מדיניות לא רשומה ב-enabledPolicies לא רוצות, אפילו אם רשומות policyParams קיימות להם.