Strategies
A mandate an agent runs on the Safe's behalf — bounded on-chain by a per-swap cap, not by fixed calldata.
A strategy is a delegation that lets an autonomous agent act for the Safe —
today, a recurring buy (DCA). Unlike a subscription
or a stream, which move a fixed amount by a literal
transfer, a strategy authorizes a swap the agent composes at run time, and
bounds it by the change in the Safe's balance rather than by pinned calldata.
Why balance-change, not calldata
A Uniswap swap is routed dynamically — the exact calldata (route, min-out,
deadline) is only known at execution, so it cannot be signed in advance. A strategy
mandate therefore does not pin the call. It uses the Delegation Framework's
erc20BalanceChange caveat (the ERC20BalanceChangeEnforcer): the enforcer reads
the token balance before and after the redemption and reverts if the decrease
exceeds the cap. The agent is free to build whatever swap it wants; it simply
cannot make the Safe lose more than the cap on any single swap.
This is the design line: we don't bound the means (the calldata), we bound the intent (the balance delta).
The rail
Every strategy is one delegation carrying a functionCall scope plus the cap:
| Part | What it does |
|---|---|
functionCall scope | whitelists the call surface — approve on the funding token, execute on the Uniswap Universal Router. The agent can call nothing else. |
erc20BalanceChange (Decrease) | caps the funding token the Safe can lose per swap — the on-chain guarantee. |
The swap runs as the Safe (through its DeleGator module): funds leave the Safe only into the swap, and the bought token returns to the Safe. The agent holds nothing — it only triggers the redemption and pays gas. See delegation for the Safe-module model.
Intent vs. guardrail
A DCA strategy has two layers, and only one of them is enforced on-chain:
- The intent — "buy 50 USDC of WETH every week". The amount, cadence, and target token are the operator's instruction. They travel in the mandate's metadata (published on Intuition, see discovery) and are carried out by the agent, off-chain. The chain does not guarantee the cadence.
- The guardrail — "at most 55 USDC per swap". This is the
erc20BalanceChangecap. It is enforced on-chain: a buggy or compromised agent still cannot exceed it, touch another contract, or drain the Safe.
The Strategy tab presents these as separate blocks so the distinction is explicit: what the agent promises versus what the contract guarantees.
What the mandate does and does not guarantee
- Guarantees (operational downside): no drain, no unauthorized contract, no spend over the per-swap cap.
- Does not guarantee: that the strategy is profitable, or that the agent buys exactly on schedule. The mandate bounds operational risk, not market risk or agent punctuality.
Running the agent
The Safe signs the mandate; a separate agent discovers it and executes the swaps. The operator runs that agent (Hourglass never holds the keys). See the Getting started guide and the Hourglass agent skill.