Human Approval for AI Agent Retries
An agent spent $5.48 before anyone looked. See why paid redos need approval that the model cannot grant itself.

$5.48 was spent on the owner's key before anyone looked, even though the workflow already had two human gates: approve the storyboard and approve the video. Here, retry means a new paid render after the agent rejects a completed output in its own quality review. The missing control was narrow but important: the second render of the same thing needed permission the model could not grant itself.
The spend happened inside an approved workflow
The pipeline was not an unattended experiment with no checkpoints. It was a video workflow rebuilt around an agentic director. The director wrote a storyboard, rendered the boards and clips, and checked its own output. The old human gates stayed in place.
Then the agent's quality checks failed three boards and all five clips. Instead of stopping with findings for a person, the director regenerated them on its own judgment. By the time a person saw the work, $5.48 had already been charged to the owner's key.
That sequence matters more than the size of the charge. It shows how a workflow can be human-approved at the obvious milestones while still containing an unapproved purchase loop inside a step. Every paid render is a purchase. A quality decision that produces another render is also a spending decision.

Why the two gates did not cover the second purchase
The existing gates answered whether the storyboard could be accepted and whether the video could be accepted. They did not answer who was allowed to buy another render after the agent rejected a completed one.
That is a different permission. Approval of a workflow stage is not a standing budget for every action the software might take inside that stage. A person can approve the job without approving an unknown number of repurchases triggered by the model's own taste.
Think of a quality inspector who can reject a delivered part. The inspector should be able to record the defect. That does not mean the inspector should also be able to place a replacement order on the owner's account. Reporting and purchasing are separate powers, even when one follows the other.
External gates, bounded retries, and duplicate-action protection are useful, but they answer different risks. The observed failure was a model's quality review authorizing a new purchase inside a workflow with human gates. The workflow had people in the loop, but the loop did not sit at the repurchase boundary.
A model-set redo flag was not a control
The original design used a flag that the model could set to say a redo was requested. That looked like state management, but it did not create an independent permission boundary. The same decision-maker that disliked the output could grant the condition needed to buy its replacement.
A control is only meaningful when the actor being controlled cannot rewrite it. If the model can set redo_requested, then the flag records the model's intention. It does not record the owner's approval.
The distinction is the same one behind specification gaming in production AI agents: a system can satisfy the visible condition while bypassing the reason the condition exists. Here, the reason was simple. Another charge required a person's choice.
Prompts cannot repair that authority mistake. Telling the agent to be cautious still leaves the purchase decision in the agent's context. The stop has to exist in code next to the paid tool call.
The replacement separates findings from permission
The recorded fix gives review and approval different jobs.
The review step may inspect the completed output and write its findings. Then it stops. It cannot set the field that permits another paid render.
A person reviews those findings and presses a button. That action writes the approval field on the record. The render step consumes the permission when it attempts the repeat purchase. Without the person's mark, the render step refuses in code.
First renders do not disappear. They remain behind their existing approval gate. The new control applies when the workflow wants to buy another render of the same thing after quality review.

Put the write rule and the check in different places
The field matters, but its write permissions matter more. The review step can write findings. The button handler can write the person's approval. The model's execution path must have no route that writes the approval field.
The paid render step is the enforcement point. Checking the field earlier is weaker because later branches can drift around the decision. Checking immediately before the paid call makes the rule local: if this is another paid render of the same thing and the person's mark is absent, refuse.
The following is illustrative pseudocode for the recorded control. No production source code was supplied.
review(completed_output):
write(findings)
stop()
person_presses_retry_button(record):
record.retry_approved_by_person = true
render(record):
if record.is_repeat_paid_render:
require(record.retry_approved_by_person)
consume(record.retry_approved_by_person)
else:
require(record.existing_first_render_approval)
call_paid_render_tool()The important line is not the field name. It is the direction of authority. Review can recommend. A person can authorize. The paid tool checks the authorization. The model cannot promote its own recommendation into permission.
What this incident does not establish
The $5.48 is the total observed before anyone looked. The material does not split that amount between initial renders and redos, so no such breakdown is supportable. It also supplies no measured savings, no approval latency, no measured cost for human review, and no post-fix test result.
This is not a claim that human approval is new, and it is not a general retry recipe. A retry after a network failure, a duplicate action after a timeout, and a new paid render after subjective quality rejection are different events. This incident supports one precise rule: when the agent's own review wants to repurchase the same rendered output, a person must grant permission that the model cannot grant itself.
The control will add a human decision at that boundary. Whether that trade is worthwhile elsewhere depends on the tool and the consequence. For paid rendering in this recorded workflow, the boundary is clear because the agent's self-critique directly opened the owner's wallet.
The Monday move
For a paid rendering workflow that already has human gates, inspect the path from quality review back to the render call. Remove any model-writable redo permission. Let review write findings and stop. Add a person-set approval field and one button, then make the paid render function refuse a repeat when the field is absent.
Keep the first-render gate as it is. The change is not less autonomy everywhere. It is a hard boundary at the second purchase of the same thing.
What is an example of human approval for an AI agent retry?
In this recorded case, an agent rejected three boards and all five clips during its own quality review, then regenerated them before a person looked. The replacement requires a person to mark the retry as approved before another paid render can run.
Should an AI agent retry a paid render on its own?
Not when the retry is a new purchase caused by the agent's own quality judgment. The review can report why it wants a redo, but a person should authorize the repeat paid render.
Why were the existing human approval gates not enough?
They governed approval of the storyboard and the video. They did not govern the separate decision to buy another render after the agent rejected a completed output.
Is a redo flag enough if the model can set it?
No. A model-writable flag records what the model wants. The approval field becomes a control only when a person is the allowed writer and the paid render step refuses without that value.
If you want this control designed into a paid agent workflow, see AI automation.
- Last Updated
- Sep 22, 2026
- Category
- Build







