Post-Mortem : Erreurs de facturation de Claude Max + OpenClaw dues à un OAuth obsolète et à des tâches Cron isolées

Une installation auto-hébergée d'OpenClaw avec Claude Max a commencé à renvoyer billing error — API key has run out of credits malgré un quota largement non atteint. Deux jours de débogage ont révélé deux causes racines et une chaîne de défaillance qui rend l'erreur apparemment aléatoire.
Cause racine 1 : Un jeton OAuth obsolète empoisonne tout le fournisseur
Le fichier auth-profiles.json contenait deux entrées : un profil OAuth valide anthropic:claude-cli et un profil anthropic:manual avec un jeton sk-ant-oat01-.... Lorsque le jeton manuel a expiré, OpenClaw n'a pas simplement échoué pour ce profil — il l'a classé comme échec de facturation au niveau du fournisseur et a blacklisté l'intégralité du fournisseur anthropic, ignorant tous les modèles, y compris le profil OAuth sain. Les logs montraient :
reason: "billing" errorPreview: "Provider anthropic has billing issue (skipping all models)" chain_exhausted
Le profil OAuth sain avec un jeton de rafraîchissement valide n'a jamais été essayé.
Correctif : Supprimer complètement anthropic:manual de auth-profiles.json et openclaw.json. Ne conserver que anthropic:claude-cli.
Cause racine 2 : Les tâches cron isolées frappent un bucket de facturation séparé
OpenClaw a deux chemins d'exécution :
- Sessions principales — exécutent le binaire
/usr/bin/claude, facturé à l'abonnement Max/Pro ✅ - Exécutions isolées/intégrées — HTTP direct vers l'API Anthropic, facturé au bucket Extra Usage ❌
Les tâches cron avec sessionTarget: isolated lancent un agent intégré autonome qui appelle directement l'API Anthropic via HTTP — sans les en-têtes Claude Code que le CLI envoie. Anthropic le dirige vers le bucket Extra Usage, un quota complètement séparé. Avec Extra Usage désactivé, chaque exécution cron isolée renvoie une 400. OpenClaw aggrave la situation : une erreur de facturation définit disabledUntil environ 24 heures plus tard dans auth-state.json, bloquant toutes les requêtes — y compris le chat normal — jusqu'à la fin du délai. Le verrouillage survit aux redémarrages de la passerelle.
La chaîne de défaillance complète
- Redémarrage de la passerelle → tâche cron manquée mise en file d'attente pour rattrapage
- Agent isolé exécuté via l'exécuteur intégré → appel HTTP direct à l'API Anthropic (pas d'en-têtes CLI)
- Bucket Extra Usage → erreur 400
- OpenClaw verrouille le profil d'authentification pendant ~24h → toutes les requêtes bloquées, y compris le chat normal
Correctifs
- Effacer immédiatement le verrouillage de facturation :
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('Effacé.') " openclaw gateway restart - Déplacer toutes les tâches cron de
isolatedversmain: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'Correction : {j[\"name\"]}') j['sessionTarget'] = 'main' with open('/home/USER/.openclaw/cron/jobs.json', 'w') as f: json.dump(d, f, indent=2) print('Terminé.') "
Pour qui : Toute personne auto-hébergeant OpenClaw avec Claude Max ou Pro qui voit des erreurs de facturation aléatoires malgré un quota non atteint.
📖 Lire la source complète : r/openclaw
👀 See Also

Maîtriser les Compétences d'OpenClaw : Un Guide Étape par Étape
Débloquez tout le potentiel d'OpenClaw avec ce guide complet sur le développement de nouvelles compétences. Découvrez des stratégies clés pour améliorer vos projets grâce aux agents de codage IA.

Utiliser l'IA comme partenaire cognitif plutôt que comme usine à code
Un post sur Reddit propose un prompt système appelé 'Cognitive Authorship Copilot' qui force l'IA à agir comme un partenaire de programmation en binôme plutôt que comme un générateur de solutions autonome, avec trois niveaux d'intervention basés sur la complexité de la tâche.

Capturez sans effort les transcriptions de Google Meet et Teams avec OpenClaw — Guide de compétences et de configuration
L'intégration d'OpenClaw dans Google Meet et Microsoft Teams offre des capacités de transcription fluides. Découvrez comment configurer et optimiser ce processus pour une meilleure efficacité de flux de travail.

4 choses que votre orchestrateur de code Claude doit avoir pour être utile
Conseils pratiques d'un développeur qui a construit des orchestrations pour Claude Code : document de mission, battement de cœur, communication inter-agents et contrôle vérifiable.