Ключи OpenAI API в открытом доступе: почему ими нельзя пользоваться

Откуда берутся «бесплатные» ключи на GitHub, почему пользоваться ими опасно и для вас, и для владельца, и как защитить собственный ключ от такой же утечки.

6 мин · · API-ключи · ошибки

Запросы вроде «openai api key github» и «free openai api keys» ищут ключи, которые когда-то кто-то случайно опубликовал. Соблазн понятен: платить не надо. Но у ключей api openai в открытом доступе есть три проблемы: они чужие, они почти всегда уже не работают, а возня с ними опасна для вас. Ниже объясняем, откуда такие ключи берутся, почему пользоваться ими нельзя, и главное — как не стать тем, чей ключ окажется в такой подборке.

Откуда берутся ключи в открытом доступе

Ключ становится публичным не по воле владельца. Типичные пути утечки:

  • Файл .env или конфиг с ключом попал в коммит и ушёл в публичный репозиторий.
  • Ключ вписан прямо в код фронтенда или мобильного приложения, и его видно любому, кто откроет страницу или распакует приложение.
  • Ключ остался в логе, скриншоте, видео, ноутбуке Jupyter или посте на форуме.
  • Ключ был в тексте вопроса, заданного на публичном сайте помощи.

Удаление файла из репозитория не стирает секрет: он остаётся в истории коммитов, и найти его там можно так же легко, как в актуальной версии. Владелец часто даже не замечает утечку, пока не придёт счёт.

Что происходит с таким ключом

Платформы и поставщики моделей сканируют публичные репозитории в поисках секретов, и найденные ключи, как правило, отзываются автоматически или после уведомления владельца. Поэтому опубликованный ключ живёт обычно недолго. Те, что ещё работают, чаще всего принадлежат тем, кто просто не заметил утечку, и они тоже будут отозваны, как только владелец увидит письмо или счёт. Сайты и репозитории с подборкой «бесплатных ключей» в основном собирают уже недействительные значения, а то, что действует, перестанет действовать в любой момент.

Почему пользоваться чужим ключом нельзя

  1. Это чужие деньги и чужой аккаунт. Каждый ваш запрос списывается с баланса человека, который ничего вам не разрешал. Использование доступа без согласия владельца нарушает условия сервиса и во многих странах может быть квалифицировано как несанкционированный доступ к чужим данным или ресурсам.
  2. Ваши запросы увидит не тот, кому вы доверяете. Тексты и файлы, которые вы отправляете, проходят через аккаунт владельца и могут быть доступны ему (например, в логах) и его поставщику. Загрузить туда рабочие документы или личные данные значит отдать их постороннему.
  3. Нестабильность. Ключ может быть отозван в любую секунду, и ваш проект сломается на середине работы.
  4. Ловушки вокруг самой идеи. Сайты «генераторов бесплатных ключей», архивы «рабочих ключей» и платные «базы ключей» нередко служат приманкой для кражи данных, подписки без возврата или установки вредоносных программ. Не скачивайте и не запускайте ничего подобного.

Если вы случайно нашли чужой ключ, правильное действие — не проверять его запросом, а сообщить владельцу, например через Issue в репозитории, и закрыть страницу.

Как не оказаться владельцем такого ключа

Хорошая новость: от утечки можно застраховаться заранее, и это недолго. Практические шаги:

Храните ключ только вне кода

  • Ключ лежит в переменной окружения или в менеджере секретов, а не в исходниках.
  • .env добавлен в .gitignore до первого коммита. В репозиторий кладите только шаблон .env.example без настоящих значений.
  • Не вставляйте ключ в код фронтенда и мобильных приложений: всё, что отправляется клиенту, можно прочитать. Вместо этого вызывайте API с вашего сервера.
  • Не публикуйте скриншоты и записи экрана, где виден ключ или консоль с ним.

Ловите ошибку до коммита

Подключите проверку на секреты перед коммитом: подойдёт любой сканер секретов, например gitleaks. Он срабатывает локально и в CI и останавливает коммит, если в нём есть строка, похожая на ключ. Настройка занимает несколько минут, детали смотрите в документации самого инструмента.

Ограничьте ущерб от утечки

Это та защита, которая работает, когда всё остальное не сработало. В Zukko можно создать несколько ключей, и у каждого есть:

  • имя, чтобы понимать, чей он;
  • дневной и месячный лимит в долларах;
  • список разрешённых моделей (allowed_models).

Заведите отдельный ключ под каждый проект и задайте ему реалистичный лимит и только нужные модели. Тогда даже утёкший ключ не сможет потратить больше суммы лимита и не сможет вызвать дорогие модели. Когда лимит исчерпан, API отвечает 429 с кодом key_daily_limit_reached или key_monthly_limit_reached. Подробнее: лимиты ключей и кэш и статья зачем отдельный ключ на проект.

Полный ключ показывается один раз при создании, поэтому сохраните его сразу в менеджер секретов.

Ротация и мониторинг

  • Меняйте ключи по расписанию и сразу после ухода сотрудника, имевшего к ним доступ.
  • Раз в неделю смотрите историю расходов в разделе «Использование» кабинета: неожиданный скачок первый признак утечки.
  • Не передавайте ключи в мессенджерах и по почте открытым текстом.

Если ключ уже утёк

Не откладывайте. Создайте новый ключ, обновите его в настройках сервисов, удалите старый и проверьте историю расходов за последние дни. Пошаговый порядок описан в статье Утёк API-ключ: что делать.

Честная альтернатива «бесплатному» ключу

Если вам нужен доступ к моделям для учёбы или небольшого проекта, платный API с оплатой за токены обходится гораздо дешевле, чем кажется. В Zukko баланс в долларах, пополнение от $1, подписки нет. Цены на 18 октября 2026, $ за 1M токенов. Возьмём условный запрос в 2000 входных и 500 выходных токенов:

  • deepseek-v4.1-flash (0.013 / 0.038): 2000 × 0.013 / 1M + 500 × 0.038 / 1M = 0.000026 + 0.000019 = $0.000045. На $1 это около 22 000 таких запросов.
  • gpt-6.1-sol (0.27 / 1.32): 2000 × 0.27 / 1M + 500 × 1.32 / 1M = 0.00054 + 0.00066 = $0.0012. На $1 это около 830 запросов.

Это расчёт для примера, реальная стоимость зависит от длины ваших запросов. Актуальные цены — GET https://api.zukko.pro/v1/models или страница «Модели» в кабинете. Оплата: СБП, криптовалюта или карты MasterCard; доступ из России через шлюз. Про то, что реально можно получить без оплаты, мы честно писали в статье Бесплатный API нейросети.

Частые вопросы

Законно ли пользоваться найденным в интернете ключом?

Как правило, нет. Это доступ к чужому аккаунту без разрешения владельца, и он нарушает условия сервиса. Не используйте такие ключи. Точную правовую оценку для вашей страны даст юрист.

Почему найденные ключи не работают?

Платформы сканируют публичные репозитории и отзывают найденные ключи, а владельцы удаляют их сами, когда замечают утечку.

Можно ли просто удалить ключ из репозитория?

Нет, его нужно отозвать. Удаление файла не убирает секрет из истории коммитов, а значит, ключ считается скомпрометированным. Создайте новый и удалите старый.

Достаточно ли лимита на ключе для защиты?

Лимит ограничивает ущерб, но не заменяет остальные меры. Используйте всё вместе: ключ вне кода, сканер секретов, отдельный ключ на проект, лимиты и ротацию.

Чтобы завести ключ с лимитом и списком моделей, откройте раздел ключей в кабинете Zukko.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.

Ключи OpenAI API в открытом доступе: риски и замена · Zukko