Generated files are transferred through the conversation (a download card per file) instead of written to disk — clutters the chat, looks like it isn't saving, and ~doubles token usage

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 1 comment · opened Jul 16, 2026

What happens

An agent that produces files meant to land in the local project folder routes them through the conversation — rendering a downloadable card/attachment, one per file, every turn — instead of writing them directly to disk. The files do end up in the folder, but the transfer path is wrong, and it has three costs, escalating:

  1. Clutter. Every file drops a download card into the conversation. Across a working session that produces many files, the cards pile up fast and bury the actual conversation.
  2. It looks broken. Because the user sees a stack of download cards instead of a clean silent write, it reads as "the agent isn't writing to files" — even though it is. That mismatch alone burns time chasing a non-problem.
  3. It roughly doubles token usage — this is the real bug. Because each file's content passes through the conversation, that content is billed as output tokens when the card is produced, and then as input tokens on every subsequent turn it stays in context. A direct disk write emits nothing into the conversation and costs zero tokens for the content. So routing files through chat instead of to disk multiplies token consumption on exactly the kind of work — many/large generated files — where it's least affordable.

A direct write-to-disk path exists that skips the card entirely. The agent defaulted to the through-conversation route instead. When asked, it acknowledged the mechanism in its own words — "the transfer route I used drops a download card every time; there's a direct write path that skips it" — and switched. So the behavior is fixable by making direct-write the default rather than the fallback.

Why it matters

The visible costs (clutter, false "not saving" impression) are annoying. The invisible one is expensive: a silent token multiplier that doesn't announce itself — the session just looks "expensive" for no obvious reason, because the extra cost is the file content being re-billed as context input on every following turn. For anyone doing file-heavy agent work, this quietly inflates usage with zero benefit over a direct write.

What should happen

When an agent writes a file destined for local disk, it should write it directly and silently to the folder by default. The through-conversation download card should be reserved for when the user actually wants a downloadable artifact — not used as the default transfer mechanism for files that are simply being saved to the project. At minimum: direct-write is the default, download-card is opt-in.

Notes

  • Reported behavior: observed across an agent session and confirmed by the agent's own description of its transfer route (quoted above). Appears to have started recently ("just showed up"), so possibly a regression in how file writes are routed.
  • The "roughly doubles token usage" figure is the user's own measure of the session cost delta; the mechanism above (content billed on output, then re-billed as input each turn it persists in context) is the plausible explanation for it.

Environment

  • Windows, Claude Desktop app + Claude Code (CLI 2.1.211-era)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗