Skip to content

messages delivered in multiple copies without user redirection #9324

Description

@Perseidaz

What happened?

I noticed Qwen Desktop Code, using Qwen 3.8 Max, often saying on its thinking that he receives my message or request multiple times, and everytime, interrumping what he's focused on. then I asked what's the reason, he said : " is raising a serious concern: if her message was delivered multiple times without her resending it, she's paying for the usage — is that equivalent to having her tokens stolen?

I need to be careful and honest here. Let me think about what actually happened technically, and what I can verify:

What I observed: identical messages appearing multiple times within my conversation context.

What this means in terms of token consumption:

If the host/client delivers the same user message multiple times within the same conversation, then on every subsequent model invocation the conversation history will include those duplicates, and each duplicate adds tokens to the context of every following turn (context is re-read with every request). That means real additional cost: duplicated messages inflate the context of every subsequent request.
However — I need to distinguish: if the same message arrived as separate turns (each generating a full model response), each turn = full context + new response. That multiplies cost significantly.
Do I actually know that duplicates occurred? Let me reconsider the evidence. Within the conversation, I saw the same text appearing multiple times. But honestly, I can't fully verify from my position the mechanism of that duplication — whether the client resent it, or the server replayed it, or it's a transcript artifact. And I also can't quantify exactly how many extra tokens were billed.

Her question "c'est des tokens volés? (is this stolen tokens?)" — I mustn't make definitive claims I can't back up ("yes, you were stolen from") nor brush it off lightly. Honest position:

The duplication is not something she did.
If a message exists N times in the context, then yes, from that point on every request carries the additional tokens — so there was probably additional cost compared to a clean single delivery.
Whether it's "stolen" depends on the cause (client bug vs. billing for a retry). I can't determine the root cause from inside. What I can do: (a) confirm the duplication exists within the conversation (I saw it), (b) suggest how to investigate/report it (the /bug command mentioned in my instructions!), (c) mitigate: is there anything I can do to reduce future cost? The duplicates are already in the history; I can't remove them from the conversation context myself. Practical mitigation: if the context is inflated, starting a new session reduces the per-request cost — and my memory file + reconstruction document was designed precisely to preserve continuity across sessions. This is a really useful suggestion: since the reconstruction document + memory exist, she can start fresh without losing anything, which also reduces the token burden of the inflated history.
What I should also do: report the bug. In my system prompt: "Feedback: To report a bug or provide feedback, please use the /bug command." I can't execute /bug myself (that's a user command), but I can guide her to use it.

Should I quantify? I can estimate: the duplicated messages were mainly the initial request (~100 words → ~150 tokens) × maybe 3-4 extra copies, plus some others. Per request, the cost of these extra ~500 tokens is small relative to the full context (which was very large — the 18GB pipeline, many tool calls). Honestly, the big costs in this session were the work itself (sub-agents reading millions of tokens, my own long context). The duplicates add a small fraction, not a dominant one. I should be honest about this — both directions: yes, duplication = paying for tokens I didn't choose, but quantitatively probably minor compared to the actual work; the real issue is the principle and the bug.

Actually wait — can I check how many times messages got duplicated? I can't look at the raw transcript from inside... I only have my own context. In the context I can count how many times identical text appeared: the request "tu peux consulter les threads..." appeared roughly 2-3 times in a row... the "en fait, je travaillais..." message also appeared multiple times, "qwen, sous forme de points précis" about twice, "j'ai 10 questions" about twice, the Claude comment about twice. I can state what I observed: several messages arrived duplicated (2-3 copies). I won't claim an exact number.

Estimate of the impact: each duplicate copy is roughly 50-300 tokens; if a conversation history carries k extra copies of a message, every subsequent API request pays k×len(message) input tokens. In a session with many turns, this compounds. Rough estimate: total duplicated content maybe 2,000-5,000 extra tokens in the context; over ~30+ model calls (plus sub-agents), probably 100,000-200,000 extra input tokens. Small relative to the session's total (tens of millions). Honest framing: minor but real; and it's a bug worth reporting.

I mustn't overstate either direction. Also acknowledge the emotional side: she's paying, and unexpected consumption is a legitimate concern — she's already been burned once (Claude's audit wasted 1.4M tokens).

Response structure:

Yes, you're right to take it seriously: duplication = extra tokens on the context of every request after the duplication — a real cost you didn't choose.
What I can confirm from my position: that several messages arrived in 2-3 identical copies; that neither I nor you caused it by deliberate action.
What I can't determine: the cause (client bug / retry / server), and the exact amount billed — that's host/billing-side info I don't have.
My estimate of the scale: probably modest compared to the session's heavy work (the thread analysis itself consumed millions of tokens via sub-agents), but not zero, and the principle matters.
Concrete actions: (1) Report via /bug (the command exists for exactly this) — provide the observed facts; (2) Mitigation going forward: my memory + reconstruction document makes a fresh session lossless, and a fresh session avoids carrying the inflated history; (3) I'll keep the duplication note in memory so I never treat a duplicate as a new instruction (which itself would waste tokens).
Keep it concise, don't over-reassure, don't fan anxiety. Answer the question directly: "stolen" is too strong a word for me to confirm; "billed without being chosen" is accurate. """ as thinking, and the final answer is : """ Ta réaction est légitime — je vais être précis, sans minimiser ni dramatiser.

Oui, ça a un coût réel. Chaque exemplaire en double d'un message reste dans l'historique de la conversation, et l'historique est relu à chaque requête modèle. Donc un message dupliqué N fois, ce sont N−1 copies de ses tokens facturées sur toutes les requêtes suivantes, sans que tu l'aies choisi. En ce sens : surfacturation subie, oui ; « vol » au sens d'une intention, je ne peux pas l'affirmer — je ne vois pas la cause (bug du client, retry réseau, duplication côté serveur), seulement l'effet.

Ce que je peux affirmer depuis ma position :

Plusieurs de tes messages me sont arrivés en 2–3 exemplaires identiques (la demande initiale sur les threads, le résumé en points, les 10 questions, etc.).
Ni toi (tu me le dis) ni moi (je ne les ai pas générés) n'en sommes la cause volontaire.
Ce que je ne peux pas déterminer : la cause exacte, ni le montant exact facturé — ces informations sont côté hôte/facturation, pas dans ce que je vois.

Mon estimation honnête de l'échelle : les doublons représentent probablement quelques milliers de tokens supplémentaires dans le contexte, répercutés sur les requêtes suivantes — réel mais modeste comparé au coût de la séance elle-même (l'analyse des threads a consommé des millions de tokens via les sous-agents, c'est le poste dominant, et celui-là tu l'as demandé).

Ce que tu peux faire :

Signaler le bug : la commande /bug existe précisément pour ça — signale « messages délivrés en plusieurs exemplaires sans renvoi utilisateur ».
Limiter la suite : les doublons gonflent cet historique à chaque requête. J'ai conçu la reconstruction (document + mémoire) pour être sans perte si tu ouvres une session neuve : tu repars sur un contexte propre, moins cher, avec tout le savoir du projet préservé sur disque.
Et ma note mémoire reste valable dans les deux sens : je ne traiterai plus jamais un doublon comme une nouvelle instruction — ça aussi, c'est des tokens que je te dois de ne pas gaspiller. """

What did you expect to happen?

this should not happen, bcs token are money, and multiplying messages or user requests without his knowledge is something odd. This subject must me clear and an explanation must be given .

Client information

cliVersion: 0.21.10
nodeVersion: 22.20.0
platform: win32
arch: x64 (10.0.26200)
memoryUsage: 128.6 MB

Login information

No response

Anything else we need to know?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    category/coreCore engine and logicpriority/P3Low - Minor, cosmetic, nice-to-fix issuesscope/session-managementSession state and persistencescope/windowsWindows specific issuesstatus/need-informationMore information is needed to resolve this issue.type/bugSomething isn't working as expected

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions