DUPLICATE CHARGE
Retry -> duplicate
Same charge ran twice.
Between your agent and real actions.
We stop retries, loops, and bad tool calls.
Small failures become real actions.
Same charge ran twice.
$480 burned before anyone noticed.
18,204 rows exported.
Replace the direct call. Keep the control layer.
# direct call
result = stripe.charge(amount=100)
# route through onceonly
result = client.ai.run_tool(
agent_id="billing-agent",
tool="stripe.charge",
args={"amount": 100},
spend_usd=0.5,
)
Checks tool scope.
Dedups retries.
Blocks over budget.
Forwards approved calls.
pip install onceonly-sdk
Get API Key →
The work runs once. Other agents poll, then read the same result.
The first agent gets the lock and starts the run.
The same job returns polling instead of running again.
After completion, waiting agents can read the same result.
Executed, blocked, and dedup outcomes leave a trace you can inspect later.
The call ran after checks passed.
The repeat was skipped before execution.
The call stopped with a reason.
Define what the agent can do before it runs.
Only approved tools can run.
Risky tools stay blocked.
Calls stop before they exceed limits.
Three places agents can do real damage.
Start with the Python SDK, set your first policy, and route every tool call through OnceOnly.
pip install onceonly-sdk