An agent that reads and then writes follows a loop: plan, call a tool, observe the result, plan again. When a tool call times out after the server already committed it, a persistent agent often retries, and you get two invoices, two refunds, or two ownership changes. That pattern is well documented in the failure analysis of side-effecting tool calls, where the recommendation is that every side-effecting call carry an idempotency key and store the outcome server side the tool calling analysis. A write proposal queue generalizes that idea: the proposal id becomes the idempotency key, and the approval is the thing that makes the retry safe.
The second problem is reviewability. A plan that says "clean up the CRM" is too broad to approve. A preview that names the records, the current values, the proposed values, and the downstream effects gives a person a concrete decision, and execution should then be constrained to exactly that reviewed proposal the preview playbook. The queue is where that constraint lives.
The third problem is auditability. When an auditor asks who changed a record and why, an approval record with a named human, a timestamp, and the proposal body answers the question. Approval gates reduce the impact of mistaken tool calls by inserting verification before side effects occur, and they support separation of duties and documented decision making the HITL workflow guide.



