Управление API-токенами и лимитами в Vibe Codex
Если вы не знаете, кто и за что тратит ваши токены, у вас нет инфраструктуры — у вас просто счёт.
Тема скучная ровно до первого инцидента: «почему мы за вечер потратили 80 000 рублей». Хорошее управление токенами — это когда такие вечера не случаются, а если случаются — вы за пять минут понимаете, кто, где и зачем.
Иерархия токенов
Vibe Console устроен по принципу «один токен — одна роль — один контекст». Никаких «универсальных мастер-ключей».
- Organization token — для админов, доступ к API управления.
- Project token — для CI и сервисов, привязан к проекту.
- User token — для разработчика на машине, выдаётся после
vibe-codex login. - Ephemeral token — одноразовый, на час, для скриптов.
$ vibe-codex tokens list
NAME TYPE SCOPE EXPIRES USED
anna-laptop user project:payments 90d 89%
ci-payments project project:payments 365d 31%
release-bot project org:acme 365d 4%
Где живёт токен на машине
На macOS — Keychain, на Linux — Secret Service (kwallet/gnome-keyring), на Windows — DPAPI. Не в файле .env, не в shell-history. Если ваш OS не поддерживает secure storage, ассистент явно скажет: «положу в зашифрованный файл, расшифровка пароль».
$ vibe-codex tokens where
keychain: macOS, label "vibe-codex-anna-laptop"
not in env: VIBE_TOKEN is unset (good)
Ротация
Раз в 90 дней — авто-ротация. Vibe Codex выдаёт новый токен, старый помечает «expiring in 7d», в логах появляется предупреждение. Если CI забыл обновить — в неделе виден явный сигнал.
$ vibe-codex tokens rotate ci-payments
new token: vibe_p_2c91... (показывается один раз)
old token: deprecated, valid for 7d
Лимиты: каскад, а не один потолок
Лимиты ставятся каскадом, и это критически важно. Один глобальный потолок недостаточен — он не защищает от того, что один проект высосет квартальный бюджет за день.
org acme:
monthly_rub: 1 000 000
projects:
- payments:
monthly_rub: 200 000
weekly_rub: 60 000
per_user_daily_rub: 4 000
- checkout:
monthly_rub: 150 000
per_user_daily_rub: 3 000
- mobile:
monthly_rub: 80 000
Лимиты suba-distributed: лимит проекта не может превышать лимит организации, лимит пользователя — лимит проекта.
Rate-limit на час и минуту
Дополнительно к финансовому лимиту — rate-limit на запросы. Зачем: предотвращает «while true do vibe-codex in CI», которое не выжигает бюджет за минуту, но создаёт скачок нагрузки на провайдеров.
limits:
rps: 3 # запросов в секунду на токен
rpm: 60 # запросов в минуту
burst: 10 # token bucket
rub_per_hour_max: 5 000 # «стоп» на финансовом скачке
Тэгирование через X-VIBE-*
Любой запрос можно пометить произвольными заголовками. Vibe Console агрегирует и показывает, на что ушёл бюджет.
$ vibe-codex --tag jira=PAY-1042 \
--tag env=staging \
--tag pr=4711 \
"сгенерируй интеграционный тест"
GET /api/v1/spend?group_by=tag.jira&from=2026-04-01
{
"groups": [
{ "tag": "PAY-1042", "rub": 12480 },
{ "tag": "PAY-1043", "rub": 8970 },
{ "tag": "untagged", "rub": 41300 }
]
}
«Untagged» — это знак. Обычно за ним прячется CI, в котором забыли добавить тэги. Поставите — увидите, какой пайплайн жжёт сколько.
Отзыв в один клик
$ vibe-codex tokens revoke anna-laptop --reason offboarding
[ok] token revoked, all sessions terminated within 30s
Сессии падают на следующем же запросе с 401. Авто-логин не возможен без нового токена.
«Хороший токен — это тот, который вы можете отозвать одной командой без перезапуска инфраструктуры».
Алерты
Vibe Console шлёт алерты в Slack/Telegram/Webhook при превышении 80% месячного, недельного, дневного бюджета или при подозрительной активности (резкий скачок RPS, неизвестная IP-зона).
alerts:
- if: project.monthly_rub_used >= 80%
notify: slack#payments-alerts
- if: user.daily_rub_used >= 100% within 1h
notify: slack#sec-ops
- if: token.first_seen_country != token.usual_country
notify: slack#sec-ops + email security@acme.ru
Кейсы из жизни
- Стажёр забыл закрыть while-loop в CI. Часовой лимит сработал на 12-й минуте — потерянная сумма 412 рублей вместо 18 000.
- Команда обнаружила, что 40% бюджета уходит на тэг
refactor=billing-legacy. Подсветило, что один проект тянет больше всех — было повод выделить отдельный бюджет. - Уход разработчика в день увольнения: токен revoke через offboarding-hook SSO, доступа нет уже к моменту прощальной планёрки.
Управление токенами — это не «настроил один раз». Это рутинная гигиена: ротация, лимиты, тэги, алерты, отзыв. Если есть инструмент, в котором это занимает минуты — это не «удобство», это причина спать спокойно.
Готов попробовать?
brew tap xrouter-chat/tap && brew install vibe-codex — и за 30 секунд ты в деле.
Поставить Vibe Codex →