Главная  /  Статьи  /  Tokens

Управление API-токенами и лимитами в Vibe Codex

Если вы не знаете, кто и за что тратит ваши токены, у вас нет инфраструктуры — у вас просто счёт.

Тема скучная ровно до первого инцидента: «почему мы за вечер потратили 80 000 рублей». Хорошее управление токенами — это когда такие вечера не случаются, а если случаются — вы за пять минут понимаете, кто, где и зачем.

Иерархия токенов

Vibe Console устроен по принципу «один токен — одна роль — один контекст». Никаких «универсальных мастер-ключей».

$ 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

Кейсы из жизни

Управление токенами — это не «настроил один раз». Это рутинная гигиена: ротация, лимиты, тэги, алерты, отзыв. Если есть инструмент, в котором это занимает минуты — это не «удобство», это причина спать спокойно.

Готов попробовать?

brew tap xrouter-chat/tap && brew install vibe-codex — и за 30 секунд ты в деле.

Поставить Vibe Codex →