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

Les modèles Qwen3.x échouent silencieusement dans OpenClaw en raison d'une incompatibilité du format de sortie en streaming.
Les modèles Qwen3.x en mode streaming envoient leur sortie vers le champ 'reasoning' au lieu de 'content', ce qui fait qu'OpenClaw passe silencieusement aux modèles de secours. Un proxy qui traduit les formats d'API et injecte 'think: false' résout le problème, permettant une évaluation complète des appels d'outils.

Résoudre les erreurs 'Échec du démarrage de l'espace de travail' de Claude Cowork sur Windows 11 Famille
Un utilisateur a résolu les erreurs de démarrage de Claude Cowork sur Windows 11 Famille en installant le Sous-système Windows pour Linux (WSL2) depuis le Microsoft Store, qui est requis pour la technologie de machine virtuelle sous-jacente.

Techniques pratiques pour réduire la dérive d'état dans les agents IA multi-étapes
Un développeur partage des méthodes concrètes pour corriger la dérive d'état dans les flux de travail multi-agents, incluant les lectures basées sur des instantanés, les écritures en mode ajout uniquement, et la séparation de l'état du contexte. Ces approches ont rendu les exécutions reproductibles et le débogage traçable.

Optimisation de la valeur des sessions Claude Code : Conseils d'efficacité des jetons
Apprenez des stratégies pratiques pour économiser des tokens avec Claude Code, notamment /clear et la mention @-fichiers, d'après le guide officiel d'Anthropic.