When an Agno run pauses a second time on an @approval tool, it now writes a new pending approval record that names only that call, with its arguments and requirements, and continue_run waits until an admin resolves it.
Say an agent pays invoices with a pay_invoice tool marked @approval and @tool(requires_confirmation=True). The run pauses on INV-1, an admin approves that record, and your code continues the run by run_id with no requirements, which is the flow where approvals are resolved in the database. INV-1 gets paid, the model calls pay_invoice for INV-2, and the run pauses again.
In earlier releases nothing appeared for the admin at that second pause. Agno skipped creating a record because an earlier call in the run already had an approval ID, and it then paired the new call with the run's latest record, the approved one for INV-1. The next continue paid INV-2 on the strength of the first decision. We reproduced it offline with a scripted model on both releases.

continue 2 (admin has not approved INV-2):
-> ValueError: Run has unresolved HITL requirements. Provide the `requirements` parameter (or resolve an admin approval first).
paid=['INV-1'] records=["approved:['INV-1']", "pending:['INV-2']"]
admin approves 1 record
continue 3: COMPLETED paid=['INV-1', 'INV-2'] records=["approved:['INV-1']", "approved:['INV-2']"]When a record lists its tool calls, the run-level lookup pairs it only with those calls, so a call with no record of its own blocks the continue. Tools on a team leader get the same fix. For tools on a member agent, the second record used to name the first call and show its arguments, and it names only the new call now. Audit-mode tools no longer block a continue, metadata["approval"] holds the record for the call being run on an agent or team leader, and resending run.requirements no longer runs a call that already has a result.
See the cookbook, and learn more about approvals in the documentation.
Frequently asked questions
Each pause writes its own pending approval record naming only the tool call that caused it, with that call's arguments. An admin resolves each record separately, and continue_run runs a call only after its own record is approved.
They created no record for it. Continuing the run by run_id then executed the second call under the approval the admin had given the first one, so it ran without anyone approving it.
It raises ValueError: Run has unresolved HITL requirements. Provide the requirements parameter (or resolve an admin approval first). The pending call does not run.
Yes. A tool on the team leader goes through the same record creation, and a record for a tool on a member agent now names only that member's new call. A deleted record blocks the continue.





