Секреты и .env: главный источник факапов
Самая частая причина утечек в вайбкод-проектах — не хакеры, а собственная невнимательность. Ключ от OpenAI или Stripe попадает в публичный GitHub-репозиторий, потому что `.env` забыли добавить в `.gitignore`, или потому что ИИ-ассистент при генерации кода вписал ключ прямо в исходник «для удобства». Перед деплоем пройдитесь по списку:
- `.env`, `.env.local`, `.env.production` реально в `.gitignore`, а не только в намерениях — проверьте `git status`, не попали ли они уже в историю коммитов;
- если ключ всё же засветился в истории git — считайте его скомпрометированным и перевыпускайте, простого удаления файла недостаточно, история хранит старые коммиты;
- в коде нет захардкоженных токенов, паролей от БД, ключей API — грепните репозиторий по словам вроде `sk-`, `api_key`, `secret`, `password`;
- на проде переменные окружения заданы через панель хостинга или секрет-менеджер, а не через файл, случайно попавший в публичную папку сборки;
- у ключей выставлены минимально необходимые права — не давайте боевому серверу ключ с полным доступом к биллингу, если ему нужно только читать один эндпоинт.
Отдельно проверьте, что дебаг-эндпоинты и админ-панели либо закрыты паролем, либо вообще не собираются в проде — оставленный «для теста» роут `/admin` без авторизации обычно находят быстрее, чем хотелось бы.
Зависимости и версии: не тащите в прод случайный код
Вайбкодинг часто означает, что часть зависимостей поставил ИИ-ассистент, и вы не всегда читали, что именно он подключил. Перед релизом стоит:
- прогнать аудит зависимостей (`npm audit`, `pip-audit` или аналог для вашего стека) и закрыть хотя бы критические уязвимости;
- убедиться, что в проекте зафиксированы версии (lock-файл закоммичен), иначе прод может подтянуть новую minor-версию пакета с поломанным поведением прямо во время деплоя;
- удалить неиспользуемые пакеты — каждая лишняя зависимость это лишняя площадь для уязвимости и лишние килобайты в бандле;
- проверить лицензии сторонних библиотек, если продукт коммерческий — не все лицензии совместимы с закрытым кодом;
- убедиться, что версия рантайма (Node, Python) на проде совпадает с той, на которой вы тестировали, — расхождение версий обычно всплывает в самый неподходящий момент.
Если проект собирался с активной помощью ИИ, полезно один раз вручную прочитать `package.json`/`requirements.txt` целиком — обычно там находится пара пакетов, назначение которых никто не может объяснить.
Лимиты, нагрузка и деньги: то, что убивает продукт после первого наплыва
Продукт может пройти все проверки безопасности и всё равно упасть в первый же день — потому что никто не поставил лимиты. Типичный сценарий: пост на профильном форуме приносит в разы больше обычного трафика, и либо сервер ложится, либо счёт за API взлетает на порядок. Проверьте заранее:
- на все платные API (LLM, отправка SMS, генерация изображений) выставлены лимиты расходов в личном кабинете провайдера — это самый дешёвый способ не проснуться с неожиданным счётом;
- на бэкенде есть rate limiting хотя бы на уровне «N запросов с одного IP в минуту», особенно на эндпоинтах, дёргающих платные сервисы;
- база данных не осталась на дефолтном тарифе с парой сотен мегабайт — прикиньте, сколько данных даст условно тысяча активных пользователей, и возьмите план с запасом;
- есть базовый мониторинг: уведомление в Telegram или на почту, если сервер лёг или ошибок стало заметно больше обычного — без этого о факапе вы узнаете от пользователей, а не от системы;
- настроен бэкап базы данных хотя бы раз в сутки — потеря данных пользователей обычно куда болезненнее падения на пару часов.
Финальный прогон перед показом пользователям
Составьте короткий чек-лист и правда проходите его перед каждым релизом, а не только в первый раз:
1. Секреты не в репозитории, ключи с минимальными правами. 2. Зависимости проверены на уязвимости, версии зафиксированы. 3. Лимиты расходов и rate limiting включены. 4. Мониторинг и бэкапы настроены. 5. Тестовый прогон основного сценария на проде, а не только локально.
Пять минут на такой прогон обычно экономят не один день на разбор факапа после релиза. Вайбкодинг ускоряет написание кода, но ответственность за прод по-прежнему целиком на вас — ИИ-ассистент не проверит лимиты вашего API-ключа и не почитает историю git за вас.

