Risks
Nothing here is safe by design. These are the ways money can be lost or stuck, as far as we know them.
- A stolen agent key can move up to that agent's auto limit per UTC day with no approval, and double that across UTC midnight, until you freeze it.
- An allowance is separate from the limits. The limits say what an agent may ask for; the allowance says what the desk may pull from your wallet. Keep it no larger than the budget.
- This contract is new and can have faults. Start with a small test amount.
- A threshold limits one payment, not the day. The auto limit caps what moves without approval in a UTC day, so payments split below the threshold wait for you once they reach it. A stolen key can still move up to that per day, and double across UTC midnight.
- Setting the auto limit equal to the daily budget opens splitting again: payments below the threshold can then spend the whole day with no approval.
- What if an agent key is stolen?
- Freeze first, then rotate: a freeze is one small transaction that nothing can block, and a rotation has to close whatever the thief has queued. Whoever holds the key can move up to that agent's auto limit per UTC day with no approval, and double that across UTC midnight, in budgeted tokens, to approved providers, until you freeze the agent, freeze the fleet or rotate the key. Past that it can only queue requests for you to read. The limits bound the loss. They do not prevent it.
- Does the approval threshold protect the whole day?
- No. A threshold limits one payment, not the day. The auto limit is what caps the day: once payments split below the threshold reach it, the next one waits for you. Setting the auto limit equal to the daily budget opens splitting again: payments below the threshold can then spend the whole day with no approval. Treat the auto limit as the amount you accept losing in a day with no approval, and set it with that in mind.
- Does rotating a key clear what the old key asked for?
- Yes. Rotating stops the old key and closes every open request of that agent as rejected, up to the 32 an agent can hold. Honest requests close too, so the agent has to ask again with the new key. It does not reset today's spending, it does not revoke an allowance, and a key used by another agent stays alive there until you rotate it on that agent as well.
- What is the difference between an allowance and a limit?
- They are two separate things. A limit lives in the desk and says what one agent may spend. An allowance lives in the token and says what the desk may pull from your wallet in total. Several agents share one allowance. If a fault were ever found in the desk, the allowance is the most that could be taken, so keep it no larger than the budget and revoke it when you stop.
- Do Remove budget and Retire revoke my allowance?
- No. Both change the desk's rules for that agent. The allowance lives in the token and stays as it is until you revoke it. When you stop using a token with the desk, revoke it.
- Can a day's limit be passed around midnight?
- The window is the UTC day and it resets at 00:00 UTC. A key can spend a full day's auto limit just before midnight and another just after it, and the same holds for the daily budget. Plan for two days' limits as the most that can go in a short time.
- Has the contract been checked by anyone else?
- It has its own tests, including tokens built to misbehave and runs against real tokens on a fork of the chain. No outside firm has reviewed it. Treat it as new code and only put at risk what you can lose.
- Can the desk get stuck holding my tokens?
- It does not hold tokens. A payment moves straight from your wallet to the provider inside one call, or the call is undone. Tokens someone sends directly to the desk address have no way out: there is no admin and no sweep function, so never send tokens to it.
- What about tokens that can block addresses or pause?
- Tokens on this chain can blocklist or pause, and stock tokens do. If a token refuses, the payment fails and nothing moves. An open request stays open until it expires, so an approval can start failing after the request was made. Your tokens stay in your wallet.
- Do tokens with a transfer fee work?
- No. The desk measures both balances around every payment and undoes it unless exactly the amount left your wallet and exactly the amount arrived.
- Does the desk know whether the work was done?
- No. It checks who is paying, whom, how much and whether the rules allow it. It cannot see the job, judge the result or get money back from a provider. A job id is only a label the agent chooses.
- Is a refused payment recorded?
- A refused payment reverts, so it leaves nothing on the chain and costs the agent's gas only. It is not in the reports. The sample client returns the reason to the agent, and your agent has to log it if you want a record.