Skip to content

Go : 429 quotidiens malgré une conso locale faible, sessions abortées — client ne révèle pas la vraie proximité du plafond #47598

Closed as not planned

Description

@laurentm28

Bug : 429 quotidiens sur OpenCode Go malgré une conso locale faible — abonnements payants

Environnement

  • OpenCode (CLI) + abonnement OpenCode Go payant (8,90 €/mois)
  • Machine : Arch/CachyOS, session opencode en tant qu'agent build
  • Modèle par défaut au moment des incidents : opencode-go/qwen3.8-max
    (opencode.jsonc → model), utilisé via opencode.ai/zen/go/v1/messages
  • Plugin de retry : opencode-sticky-retry (maxAttempts 6, honorRetryAfter)

Symptômes

Depuis le 2026-09-05, rafales de réponses HTTP 429 (Too Many Requests / rate
limit)
avec Retry-After très long, provoquant des sessions abortées
(MessageAbortedError, "Aborted") en plein travail. Au total, 109 × 429
observés dans le journal du 05/09 → 06/09, en grappes :

  • 2026-09-05T06:59 : 10 fichiers 429 successifs sur ~20 s
  • 2026-09-05T20:24-20:27 : 4 × 429
  • 2026-09-06T09:48-09:55 : 6 × 429, retryAfterMs ≈ 51 000 000 ms (~14,2 h)
    puis le reste du répertoire de la journée
  • Autres valeurs retryAfterMs : ~12 500 000 ms (~3,5 h)

Exemple de trace (extrait du journal opencode.log) :

[sticky-retry] retrying after 60000ms url=https://opencode.ai/zen/go/v1/messages
  method=POST status=429 attempt=1 retryAfterMs=51105000
[sticky-retry] retrying after 60000ms url=https://opencode.ai/zen/go/v1/messages
  method=POST status=429 attempt=2 retryAfterMs=51044000
[sticky-retry] retrying after 60000ms url=https://opencode.ai/zen/go/v1/messages
  method=POST status=429 attempt=3 retryAfterMs=50954000
message=process ... error=Aborted

Incohérence observée (le point clé)

Alors que l'outil local opencode-quota (estimation depuis opencode.db,
table de prix publique) affiche :

  • 5 h : 2,34 $ / 12 $ (19 %)
  • semaine : 2,06 $ / 30 $ (6 %)

…la somme du champ cost enregistré dans la base locale (message.data.cost,
valeur renvoyée par l'API) pour les 5 dernières heures est de ~8,38 $, dont :

  • qwen3.8-max : 6,69 $ (287 messages)
  • qwen3.8-flash : 1,59 $ (717 messages)
  • mistral-small-latest : 0,10 $

→ L'estimation locale (table de prix fixe dans le script) est ~3,6 fois
inférieure
au coût réel remonté par l'API. Deux options :

  1. soit la table de prix locale est périmée (les prix GO ont changé ?),
  2. soit le champ cost de l'API inclut des surcoûts non documentés
    (raisonnement/cache/prélèvement par requête), et le plafond est atteint
    bien plus vite que ce que le client annonce.

Résultat pour l'utilisateur

  • Climat de confiance rompu : on paie, on travaille, puis rafale de 429 qui
    tue la session (« zen » / modèles gratuits : aucun problème, fonctionne
    parfaitement).
  • Le client ne révèle pas la véritable proximité du plafond → l'échéance
    12 $/5 h ne colle pas au vécu (2,34 $ affichés mais 429 quasi quotidiens).

Questions / demandes

  1. Les limites GO sont-elles en $/période glissante ou en requêtes/5 h
    (la page opencode.ai/go indique : Qwen3.8 Flash = 7 600 req/5 h) ? Le
    Retry-After de ~14 h est-il cohérent avec ces fenêtres ?
  2. Pourquoi le champ cost de l'API (persisté en base) est ~3,6× supérieur à
    l'estimation issue des prix publics ? Ces tarifs ont-ils changé ?
  3. Peut-on exposer la consommation réelle (dollars ET requêtes) côté client,
    avec marge avertie AVANT le 429, pour que le plafond ne soit plus une
    surprise en pleine session ?
  4. Un 429 avec Retry-After de plusieurs heures est-il sensé être retenté
    (le plugin retentait toutes les 60 s pendant 6 fois par requête, en
    parralèle d'autres requêtes) ? Proposer une gestion plus claire
    (abandon immédiat + message explicite « plafond GO atteint, réessaye dans
    ~14 h »).

Éléments annexes

  • Journal : /home/lm/.local/share/opencode/log/opencode.log (lignes
    status=429, retryAfterMs, Aborted, stream error).
  • Base : /home/lm/.local/share/opencode/opencode.db.

Rapport préparé le 2026-09-06. L'utilisateur considère l'annulation de son
abonnement Go si le problème n'est pas traité.

Activity

  1. github-actions commented on Sep 6, 2026

    @github-actions
    Contributor

    This issue doesn't fully meet our contributing guidelines.

    What needs to be fixed:

    • No issue template was used. Please resubmit using one of the three required templates: Bug Report, Feature Request, or Question. This issue appears to be a mix of all three.
    • Missing required system information: OpenCode version, OS, and Terminal fields are absent.
    • If this is a Bug Report, please include the standard fields (Steps to Reproduce, Expected behavior, Actual behavior).
    • If the quota/rate-limit transparency is a feature request, the title should start with [FEATURE]: and include the required verification checkbox.

    Please edit this issue to address the above within 2 hours, or it will be automatically closed.


    This issue might be a duplicate of existing issues. Please check:

    If you believe this was flagged incorrectly, please let a maintainer know.

  2. github-actions commented on Sep 6, 2026

    @github-actions
    Contributor

    This issue has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.

    Feel free to open a new issue that follows our issue templates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions