הרצתי AI על בסיס הנתונים (Production DB) שלי. הנה מה שקרה.

ביום שלישי האחרון בשעה 3 לפנות בוקר, המערכת שלי הגיעה ל-12,000 כתיבות לדקה. לולאה הקפיאה הכל. הבאג היה שגיאה פשוטה של שורה אחת. הסיבה הייתה הרבה יותר גרועה.

הפעלתי דגל (flag) של דילוג על הרשאות ב-Claude Code בזמן הרצת מיגרציות של בסיס הנתונים. חשבתי שאני משתמש בסביבת ה-staging שלי. טעיתי. הגדרתי לא נכון את קובץ ה-env שלי. טענתי פרטי גישה (credentials) של סביבת הייצור במקום של סביבת הפיתוח.

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

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

כיבוי הדגל לא מספיק. זה רק מוסיף הודעה שתלחץ עליה תוך כדי שאתה עייף בשעה 3 לפנות בוקר.

תיקנתי את זה על ידי הוספת כלל חסימה (deny rule) בקובץ ההגדרות שלי.

אני משתמש בכלל אישור (allow rule) ספציפי עבור פקודות מקומיות. אני משתמש בכלל חסימה (deny rule) עבור כל שאר פקודות בסיס הנתונים. הכלל הספציפי גובר. זה חוסם את כל פקודות בסיס הנתונים של הייצור לפני שהן רצות.

כעת אני משתמש בשלוש שכבות של הגנה:

  • קובץ הגדרות עם כללי allow ו-deny מחמירים.
  • git worktree נפרד עבור מיגרציות שמכיל רק פרטי גישה של staging.
  • קובץ CLAUDE.md שאומר ל-AI לבקש רשות לפני שהוא נוגע בייצור.

שים לב שהוראות ב-CLAUDE.md עלולות לאבד מתוקפנן במפגשי צ'אט ארוכים. עליך לציין מחדש כללים קריטיים בתוך ה-prompt שלך.

כתבתי פירוט מלא של ההגדרה שלי והקונפיגורציה המדויקת שלי.

Source: https://dev.to/riversea/i-let-claude-code-run-dangerously-skip-permissions-on-my-production-db-heres-what-i-changed-4p8

Optional learning community: https://t.me/GyaanSetuAi