Skip to main content

Approvals

Use client.approvals to review and respond to tool execution approval requests.

Listing pending approvals

pending = await client.approvals.list(page=1, page_size=20)

for approval in pending.approvals:
    print(f"{approval.tool_name} - args: {approval.arguments}")

Retrieving an approval

approval = await client.approvals.retrieve("appr_abc123")

print(approval.tool_name)
print(approval.arguments)
print(approval.conversation_id)

Responding to approvals

await client.approvals.respond(
    "appr_abc123",
    decision="approved",
    reason="Looks good, send it",
    modified_arguments={"recipient": "[email protected]"},
)

await client.approvals.respond(
    "appr_abc124",
    decision="denied",
    reason="Wrong recipient",
)
modified_arguments is optional and only applies to approved responses. When supplied, the tool runs with the reviewed arguments instead of the original proposed arguments.

Bulk responses

await client.approvals.bulk_respond(
    approval_ids=["appr_001", "appr_002"],
    decision="approved",
    reason="Approved as a group",
)

Stats and summaries

stats = await client.approvals.tool_stats("tool_abc123")
summary = await client.approvals.summary()

Cancelling approvals

await client.approvals.cancel("appr_abc123", reason="No longer needed")