Постмортем: Ошибки биллинга Claude Max + OpenClaw из-за устаревшего OAuth и изолированных задач cron

✍️ OpenClawRadar📅 Опубликовано: 12 мая 2026 г.🔗 Source
Постмортем: Ошибки биллинга Claude Max + OpenClaw из-за устаревшего OAuth и изолированных задач cron
Ad

Самостоятельно размещенный OpenClaw с Claude Max начал возвращать ошибку billing error — API key has run out of credits, несмотря на то, что квота была далеко не исчерпана. Два дня отладки выявили две первопричины и цепочку, из-за которой отказ выглядит случайным.

Причина 1: Устаревший OAuth-токен портит весь провайдер

В файле auth-profiles.json было две записи: валидный OAuth-профиль anthropic:claude-cli и профиль anthropic:manual с токеном sk-ant-oat01-.... Когда ручной токен истек, OpenClaw не просто отклонил этот профиль — он классифицировал это как ошибку биллинга на уровне провайдера и занес в черный список весь провайдер anthropic, пропуская все модели, включая здоровый OAuth-профиль. Логи показали:

reason: "billing" errorPreview: "Provider anthropic has billing issue (skipping all models)" chain_exhausted

Здоровый OAuth-профиль с валидным токеном обновления никогда не использовался.

Исправление: Полностью удалить anthropic:manual из auth-profiles.json и openclaw.json. Оставить только anthropic:claude-cli.

Причина 2: Изолированные задачи cron попадают в отдельный биллинговый пул

OpenClaw имеет два пути выполнения:

  • Основные сеансы — запускают бинарник /usr/bin/claude, тарифицируются по подписке Max/Pro ✅
  • Изолированные/встроенные запуски — прямой HTTP-запрос к Anthropic API, тарифицируются из пула Extra Usage

Задачи cron с sessionTarget: isolated запускают автономный встроенный агент, который обращается к Anthropic API напрямую через HTTP — без заголовков Claude Code, которые отправляет CLI. Anthropic направляет такой запрос в пул Extra Usage, совершенно отдельную квоту. Если Extra Usage выключен, каждый изолированный запуск cron возвращает 400. OpenClaw усугубляет ситуацию: одна ошибка биллинга устанавливает disabledUntil на ~24 часа вперед в файле auth-state.json, блокируя все запросы — включая обычный чат — до истечения таймера. Блокировка переживает перезапуск шлюза.

Ad

Полная цепочка отказа

  1. Перезапуск шлюза → пропущенные задачи cron становятся в очередь на догонку
  2. Изолированный агент запускается через встроенный раннер → прямой HTTP-запрос к Anthropic API (без заголовков CLI)
  3. Пул Extra Usage → ошибка 400
  4. OpenClaw блокирует профиль аутентификации на ~24ч → все запросы заблокированы, включая обычный чат

Исправления

  1. Немедленная очистка блокировки биллинга:
    python3 -c "
    import json
    with open('/home/USER/.openclaw/agents/main/agent/auth-state.json') as f:
        d = json.load(f)
    if 'usageStats' in d:
        for profile in d['usageStats']:
            d['usageStats'][profile].pop('disabledUntil', None)
            d['usageStats'][profile].pop('failureCounts', None)
            d['usageStats'][profile].pop('errorCount', None)
            d['usageStats'][profile].pop('disabledReason', None)
            d['usageStats'][profile].pop('lastFailureAt', None)
    with open('/home/USER/.openclaw/agents/main/agent/auth-state.json', 'w') as f:
        json.dump(d, f, indent=2)
    print('Cleared.')
    "
    openclaw gateway restart
  2. Перенос всех задач cron из isolated в main:
    python3 -c "
    import json
    with open('/home/USER/.openclaw/cron/jobs.json') as f:
        d = json.load(f)
    jobs = d if isinstance(d, list) else d.get('jobs', [])
    for j in jobs:
        if j.get('sessionTarget') == 'isolated':
            print(f'Fixing: {j["name"]}')
            j['sessionTarget'] = 'main'
    with open('/home/USER/.openclaw/cron/jobs.json', 'w') as f:
        json.dump(d, f, indent=2)
    print('Done.')
    "

Для кого это: Для всех, кто самостоятельно размещает OpenClaw с Claude Max или Pro и видит случайные ошибки биллинга, несмотря на то, что квота не исчерпана.

📖 Read the full source: r/openclaw

Ad

👀 Смотрите также

Практические советы по настройке OpenClaw из опыта работы с Docker/Windows
Гайды

Практические советы по настройке OpenClaw из опыта работы с Docker/Windows

Разработчик делится конкретными уроками по запуску OpenClaw на Docker с Windows 11/WSL2, затрагивая проблемы с сохранением данных, настройкой Discord-бота, подходы к управлению памятью и обходные пути для автоматизации браузера.

OpenClawRadar
Ограничения скорости API Claude: Временные окна, управление контекстом и накладные расходы MCP
Гайды

Ограничения скорости API Claude: Временные окна, управление контекстом и накладные расходы MCP

Анализ лимитов скорости API Claude выявляет более строгие ограничения в часы пик (5:00-11:00 PT / 8:00-14:00 ET по будням), при этом управление контекстом и использование серверов MCP значительно влияют на потребление токенов. Практические стратегии включают работу вне часов пик, начало новых диалогов для новых задач и аудит интеграций MCP.

OpenClawRadar
Разработчик iOS делится лучшими практиками написания кода для Claude после выпуска нескольких приложений
Гайды

Разработчик iOS делится лучшими практиками написания кода для Claude после выпуска нескольких приложений

iOS-разработчик с опытом в кибербезопасности описывает конкретные практики эффективного использования Claude Code, включая разделение сред, настройку наблюдаемости и предотвращение накопления технического долга.

OpenClawRadar
Opus 4.7 испортил 40% запросов; исправлением стало структурирование CLAUDE.md и навыков
Гайды

Opus 4.7 испортил 40% запросов; исправлением стало структурирование CLAUDE.md и навыков

После того как Opus 4.7 ухудшил ~40% промптов в 6 настройках, фракционный руководитель по ИИ исправил это, заменив ad-hoc промпты структурированными файлами Skill, иерархическим CLAUDE.md и отдельными файлами памяти — сократив использование токенов на 22% и количество итераций с 3–4 до 1–2.

OpenClawRadar