Я запускаю ШІ на своїй продуктивній БД. Ось що сталося.
Минулого вівторка о 3-й годині ранку моя система досягла 12 000 записів на хвилину. Цикл заморозив усе. Помилка була простою, в один рядок. Причина була набагато серйознішою.
Я увімкнув прапорець пропуску дозволів (permission skip flag) у Claude Code під час виконання міграцій бази даних. Я думав, що використовую своє стейджинг-середовище. Я помилявся. Я неправильно налаштував свій env-файл. Я завантажив облікові дані продуктивної бази замість розробницьких.
Claude не запитав дозволу. Прапорець наказав йому не запитувати. Міграція додала колонку замість того, щоб видалити її. Я не втратив даних, але це було дуже близько.
Я припустився помилки у своїх міркуваннях. Я думав, що пропуск дозволів лише прибирає набридливі спливаючі вікна. Насправді це прибирає єдиний момент, коли людина перевіряє команду.
Просто вимкнути прапорець недостатньо. Це лише додасть запит, який ви бездумно проклікаєте, будучи втомленими о 3-й ранку.
Я виправив це, додавши правило заборони (deny rule) у свій файл налаштувань.
Я використовую конкретне правило дозволу (allow rule) для локальних команд. Для всіх інших команд бази даних я використовую правило заборони. Конкретне правило має пріоритет. Це блокує всі команди продуктивної бази даних ще до їхнього виконання.
Тепер я використовую три рівні безпеки:
- Файл налаштувань із суворими правилами дозволу та заборони.
- Окремий git worktree для міграцій, який містить лише облікові дані стейджингу.
- Файл CLAUDE.md, який наказує ШІ запитувати дозвіл перед роботою з продуктивною базою.
Зауважте, що інструкції в CLAUDE.md можуть втрачати силу під час тривалих чат-сесій. Ви повинні повторювати критичні правила у своєму промпті.
Я написав повний розбір свого налаштування та точної конфігурації.
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi