Секрет - это не только пароль от почты
Когда ты собираешь свой первый бот или сайт вместе с Claude Code, у тебя быстро появляются вещи, которые нельзя показывать посторонним. Это не паранойя, а обычная техническая гигиена, которой не учат нигде, если ты пришёл в разработку без опыта.
Секретом считается любая строка, которая даёт доступ к твоим деньгам, аккаунтам или данным пользователей. Вот самые частые примеры для новичка на вайбкодинге:
- Токен Telegram-бота, который ты получил у BotFather.
- Ключ доступа к Claude, OpenAI или другому API нейросети.
- Пароль и строка подключения к базе данных, например в Supabase или Postgres.
- Ключи ЮKassa или другого платёжного сервиса.
Где секреты обычно прячутся в проекте
Проблема редко в том, что человек специально выкладывает пароль в открытый доступ. Чаще секрет просто оказывается не в том месте, а дальше проект целиком уезжает на GitHub одной командой.
Самый частый вариант, когда секрет вписан прямо в код, потому что так было быстрее всего:
TOKEN = "8123456789:AAExampleRealLookingTokenHere12345"
# токен вписан прямо в файл, который сейчас уйдёт в git вместе со всем остальным
Правильный вариант, это когда сам код не содержит ни одного реального значения, а только ссылается на переменные, которые лежат отдельно, в файле .env:
import os
TOKEN = os.getenv("BOT_TOKEN")
✓ реального значения токена в этом файле нет
Ещё один частый случай: секрет случайно оказывается в коде, который выполняется прямо в браузере пользователя, например во фронтенд-части сайта на React или Next.js. Такой код виден любому, кто откроет вкладку разработчика в браузере, поэтому туда можно класть только то, что не жалко показать всем.
Как агент может слить секрет, даже если ты не виноват
С Claude Code добавляется ещё один канал утечки, которого не было у разработчиков, работающих только руками. Агент видит файлы твоего проекта целиком, если ты сам не ограничил его.
- Если попросить агента «для отладки покажи содержимое .env», он честно выведет реальные значения прямо в чат.
- Если потом скопировать кусок этой переписки в скриншот для форума, чата поддержки или соцсети, секрет уходит наружу вместе с картинкой.
- Если попросить агента вставить ключ прямо в код «для быстрой проверки», а потом забыть убрать эту вставку перед публикацией проекта.
Простое правило: .env и .gitignore
Эта связка не требует опыта программирования и защищает от большинства случайных утечек. Настраивается один раз в начале проекта.
- Попроси Claude Code: «Создай файл .env в корне проекта и перенеси туда все ключи и токены, которые сейчас лежат прямо в коде».
- Проверь, что в проекте есть файл
.gitignore, и в нём есть строка.env. Если файла нет, попроси агента его создать. - Перед первой публикацией проекта на GitHub попроси: «Проверь весь проект и найди места, где могут быть захардкожены пароли, ключи или токены. Покажи мне список, ничего не удаляй сам».
- Прочитай список сам, прежде чем соглашаться на любые правки, ты не обязан разбираться в коде построчно, достаточно понимать, что именно предлагается убрать.
os.getenv или похожий механизм, ты уже защищён от самой частой причины утечки.
Ключ уже утёк. Что делать по шагам
Такое случается даже у опытных разработчиков, это не повод для паники, а обычная техническая задача с понятным решением.
- Не трать время на попытки тихо всё исправить, сначала действуй, потом разбирайся, как это произошло.
- Зайди в сервис, который выдал ключ, например в BotFather, консоль Anthropic или личный кабинет ЮKassa, и отзови старый ключ, создав новый.
- Проверь логи использования сервиса за то время, пока ключ был в открытом доступе, не пользовался ли им кто-то посторонний.
- Обнови новое значение ключа в своём файле .env, а старое нигде больше не используй.
- Попроси Claude Code помочь разобраться, где именно в проекте остались следы старого ключа, это обычная рабочая задача, а не повод стесняться.