What you authorize with an Execute agent
An Execute agent acts for you without asking each time. Before it can act, you sign a permission from your own wallet. The permission is a record in the Signo Shield contracts on the chain you pick, X Layer or Arbitrum. This page tells you what your signature allows. It also tells you what limits the agent and what can still go wrong.
New Execute setup is in early access. If your account does not have access, the builder and review page say Agent Execute is coming soon and point you to support@signo.fi. This rollout gate controls new setup; a permission that is already live continues under the terms you signed until it is paused, revoked, expires or reaches its limit.
In short
- You authorize one action on one token. You set a limit per firing, a lifetime limit and an expiry.
- The Shield contract checks every firing. If a firing breaks your permission, the whole transaction reverts and nothing moves.
- Your tokens stay in your wallet until a firing. The agent never holds them.
- The agent decides when to fire, how much to spend inside your limits, and the route. It uses AI to read your instruction. The contract checks the result.
- If the agent cannot work out a firing from your instruction, it does nothing and tells you.
- Signo normally checks your condition once an hour. New matching items can lead to another check after a four-minute cooldown. Keep going until the target is off by default. Repay from collateral runs once per trigger unless you turn it on before signing.
- Signo charges 0.1% of what each firing spends, on top of the limits you enter.
- A condition already true at setup can fire at the first check. Pressing Start after Pause re-arms the agent and can cause another firing at the next check.
- An AI app you authorize can pause or resume your agent; resuming can cause another firing within your existing permission. Only your wallet can change the permission or revoke it. Signo's staff can also pause the agent to stop an incident.
- If a newer permission replaces an older one, Settings shows the detached older permission as Permission, no agent. It stays live on chain until you revoke it, but Signo does not execute it. Revoke all includes it.
- The contracts went through 15 review passes. They have not been formally audited.
What a permission is
A permission is a record in the Shield contract. Only your wallet can create it, change it or revoke it. It names these parts:
| Part | What it means |
|---|---|
| Agent | The one address that may fire the permission. This is Signo's agent key. |
| Action | The one thing the agent may do: swap, send, deposit into a vault, withdraw from a vault or claim rewards. On Aave, the action can be supply, repay, or repay from collateral. |
| Asset | The one token that the contract may take from your wallet. A claim takes no token. |
| Per-firing limit | The most that one firing may spend before the fee. The fee comes on top. |
| Lifetime limit | The total amount you allow across firings before fees. The fee comes on top. It does not reset. |
| Expiry | After this time, the permission cannot fire. If you leave it empty, the app sets five years from now. |
| Venues | The exact contracts that the action may call. For a swap, these are the OKX DEX router and its approval contract. |
| Trigger | The part of your condition that the chain can read: a health factor, a token balance or an asset price. New Arbitrum permissions also require the sequencer to be up; see below. |
| Required result | The check that the contract applies after the action. For example, "your debt fell". |
A swap can also name up to five tokens that it may buy, for example xETH or xBTC. The agent picks one at each firing.
Both limits you enter are amounts before fees. For example, 5 per firing and 50 lifetime allows ten full firings of 5. At the current 0.1% rate, each takes 5.005 including the fee, for 50.05 in total.
If you clear a limit field, the contract stores the largest number it can hold. This means no limit. The review screen then shows Unlimited.
To change the action, token or signed condition, revoke the current agent and set up a new one. Editing an agent with a live permission keeps its signed trigger and Execute level locked.
The required result for each action
| Action | What the contract checks after the action |
|---|---|
| Swap | The value that arrives is at least the value sold, at the oracle price, less the maximum slippage you set. Or it is at least a fixed minimum that you set. For a token with no Chainlink price feed, see Swaps with no price check. |
| Send | The full amount reaches the one recipient that you signed. |
| Vault deposit | You receive at least the shares that the vault quotes, less your slippage. |
| Vault withdraw | You receive at least the amount that the vault quotes for your shares, less your slippage. |
| Aave supply | Your aToken balance rises by the amount. |
| Aave repay | Your debt falls. |
| Aave repay from collateral | Your health factor rises with each firing, up to the target you set. |
| Claim | Every declared reward reaches your wallet. |
What the contract checks and what the agent decides
The Shield contract checks these things at every firing:
- Only Signo's agent key fires, and only while the permission is live. A live permission has not expired, and it is not revoked or frozen.
- The amount spent stays inside the per-firing limit before fees. The chain counts spending plus fees against a registered lifetime cap: the lifetime amount you entered plus a fee buffer, rounded up to the token's smallest unit.
- Your wallet holds the amount and has approved it.
- The trigger is true, when the chain can read it.
- The action calls only the venues that you signed.
- The output goes to your wallet. For a send, it goes to the one recipient that you signed.
- The required result holds.
Signo's agent decides these things, off chain:
- When to fire. It normally checks hourly, with the continuation exceptions under How often it checks.
- How much to spend inside your limits. It uses AI to read your instruction, for example "a quarter of my USD₮0".
- Which route to take through the venues that you signed.
- Which token to buy, when your swap names several.
The contract does not trust these choices. It checks each firing. If any check fails, the whole firing reverts.
Conditions the chain cannot read
You can write your condition in plain English. The permission stores the part that the chain can read: a health factor, a token balance, an asset price, and arithmetic on them. The contract checks that part again at each firing.
Signo's scheduled evaluation is the only check of the rest of your condition. An example is a price change over a time window. If the chain can read none of your condition, it does not check that condition on chain. On X Layer, that means there is no on-chain trigger. On Arbitrum, newly set-up permissions still include the sequencer check below. Your signed limits, action and required result continue to apply.
Arbitrum sequencer check
New Arbitrum permissions include Arbitrum sequencer is up in the on-chain checks. The sequencer is the service that orders Arbitrum transactions. The Shield checks Chainlink's sequencer uptime feed at every firing and refuses a firing while the feed reports an outage. This applies even if none of your own condition can be read on chain.
The check blocks a firing; it does not revoke the permission or require you to raise a limit. Once the feed reports the sequencer is up, later checks can act again if the condition and all other limits allow it. There is currently no additional post-restart grace period in this check. Permissions registered before this update are unchanged; an older permission does not gain the check automatically.
Your funds stay in your wallet
Your tokens stay in your wallet until a firing. A firing is one transaction:
- The Shield takes the amount, plus the largest fee that the firing can cost.
- For a swap, a send, a vault action or a claim, the action runs in a new single-use contract (a sandbox). The sandbox can call only the venues that you signed. The Aave actions call only the Aave pool. A repay from collateral also calls the swap venue that you signed.
- The output goes to your wallet. For a send, it goes to your recipient.
- The unused part of the fee comes back to you.
If any step fails, the whole transaction reverts. Nothing moves, and you pay no fee. The agent never holds your tokens.
The approval you give
To set up the agent, your wallet approves the Shield core contract to spend the permission's token. This is a separate transaction. If your current approval is too low, the app asks you to approve the registered lifetime cap: the lifetime amount you entered plus the fee buffer. A lifetime amount of 50 at 0.1% therefore needs an approval of 50.05, rounded up if the token has fewer decimal places. The review screen shows the lifetime amount before fees and the fee rate separately.
- Only the Shield core can use this approval, and only through a permission that you signed.
- The approval is for the token, not for one permission. All your permissions on that token share it.
- If you left the lifetime limit empty, the approval is unlimited.
- Revoking a permission does not remove the approval. A new permission for the same token reuses it.
- To remove an approval that no agent uses, open Settings → Wallet permissions → Unallocated Shield token approvals.
- One agent keeps one current permission in Signo. If a newer permission replaces an older one, the older permission can remain live on chain but is detached from the agent, so Signo does not execute it. Settings lists it as Permission, no agent until you revoke it. Revoke all includes these permission rows as well as unused token approvals.
- An approval of zero stops every firing that takes that token from your wallet.
Fees
- Signo charges 0.1% (10 basis points) of the amount that each firing spends.
- The rate is fixed in your permission when you sign it. A later change to Signo's fee applies only to new permissions.
- The fee comes on top of both limits you enter. Spending plus fees counts against the registered lifetime cap, which includes the rounded-up fee buffer.
- A firing that reverts pays no fee.
- A claim takes nothing from your wallet and pays no fee.
- You pay network gas for the transactions that you sign: the approval, the setup, a change of limits and a revocation. Signo's agent key sends each firing and pays its gas.
- For a swap, OKX DEX keeps positive slippage under its own fee policy. See Fees & Credits.
How often it checks
- Signo normally checks each Execute agent once an hour. One successful execution completes that trigger by default; the exceptions below can continue sooner. Checks are not continuous.
- At setup: if the condition is already true, the agent can fire at its first check. It does not need to observe a false reading first, and the setup screen does not currently warn that the condition is already true.
- After a successful firing: a plain condition normally needs to turn false and then true again. A condition that stays true can still lead to more firings in the per-item and repay-from-collateral cases below.
- Per-item conditions: an "any X" condition, or two to six top-level parts joined by OR, can fire once for each newly matching item while the overall condition stays true. Only one item's run is open at a time. When other items are waiting, the next check follows a four-minute cooldown, not the normal hourly cadence. Each message names the item. An item that stops matching can fire again when it returns. Every firing still uses the same signed caps and lifetime budget.
- After Pause → Start: Start clears the previous condition reading and re-arms the agent. If the condition is still true, it can fire at the next check without a new crossing.
- If a check could not act: a sizing stop, insufficient balance or approval, a venue stop, or a service-wide execution pause can leave the agent waiting to try again. Once the blocker clears, it can act at a later check while the condition is still true. The message tells you what happens next.
- A condition that turns true and then false between two checks can be missed.
- If a firing reverts or fails, the agent tries once more at the next hourly check. If that also fails, the agent stops until your condition turns false and then true again.
- Repay from collateral: setup offers Keep going until the target, off by default. With it off, one execution completes that trigger and the report tells you what remains. With it on, if Aave limits a firing to part of the collateral needed to reach your target, the run can continue after a four-minute cooldown while the condition remains true. It stops when the target is reached, your limits cut a firing short, the condition clears, or the run reaches ten firings or six hours. Other stops, such as an expired permission or repeated failure, still apply. Permissions created before this option was added behave as off. This does not guarantee reaching the target; the report explains what happened.
What the firing report shows
After every successful Execute firing, Signo sends a report to Telegram and records it with the firing in Agent history. It is organized as:
- Goal: the amount or target the agent read from your instruction.
- Done: what the confirmed transaction did, with its transaction link and the latest relevant reading.
- Remaining: what is left when the job is partial, and whether a chain limit, per-execution limit, lifetime limit, balance, token approval, liquidity, slippage or Shield refusal stopped it.
- Reasoning: why the agent chose the amount it executed inside your signed limits.
- Next: whether another execution is possible and what you can do to finish the job.
Without Keep going until the target, a partial firing does not execute again for the same trigger. The report tells you what remains and may suggest changing a limit or preparing the rest for your own signature. The signing service allows at most two execution attempts for one permission in a rolling hour. If that limit delays another eligible attempt, the report gives the next available time.
When something fails
The fallback is to do nothing.
- If the agent cannot work out a firing from your instruction, it does not fire. This covers an AI error, an answer that it cannot read, an answer of zero, and a token that your permission does not allow. It also covers a token whose details it cannot read.
- If the agent cannot read a venue, or a venue changed on chain and Signo has not reviewed the change, the agent does not fire.
- If your balance, approval or lifetime limit is too low, the agent does not fire. The message tells you what you can change.
- If a firing is sent and reverts, nothing moves and you pay no fee.
You get one Telegram message for each failure, not one for each attempt, and every agent message has one button. When you can do the action yourself, Prepare it yourself opens the same action in Signo for you to review and sign in your wallet. A message with another direct action, such as Run flow or a swap offer, uses that action. With no direct action, the button is Ask Signo when Chat is the next step, otherwise Open Agents. Deletion notices use Open Agents. Each message also tells you what the agent does next. When your agent cannot act explains each message and how to fix it.
Ask Signo opens Chat with the notice as a question, answered from the docs. It does not authorize an action. Home's Needs attention item offers Ask Signo for a stopped or failed notice without a prepared plan. A successful Execute run offers Dismiss instead.
Signo also alerts its team when a firing could not be sized, reverted or failed. It logs a refused firing for the team to review.
Messages reach you on Telegram. Link Telegram before you arm an Execute agent. If you do not, you will not hear about failures. Unlinking Telegram does not stop an Execute agent. It only stops the messages.
How much it spends
The per-firing limit is a ceiling. It is not an order size.
- With an instruction such as "a quarter of my USD₮0", the agent uses AI to size the firing from your instruction and your wallet balance, inside your limits.
- With no instruction, a firing spends the full amount available, up to the per-firing limit.
- A swap with a fixed minimum always spends the full per-firing limit. If your wallet cannot fund that amount, the agent does not fire.
- When your swap names several tokens, the agent buys the one that your instruction points to. If you gave no instruction, or your instruction does not choose, the agent buys the first token in the list.
- The app refuses a swap whose tokens share a symbol. So the agent never has to guess between them.
More detail is on Agents.
Who can pause, change or delete your agent
- On the Agents page, your wallet controls changes to its Execute agents. The page can ask your wallet to sign a message that proves the wallet is yours. This message is not a transaction and costs no gas.
- An AI app you authorize in Settings → Connected apps can pause or resume an Execute agent without another wallet signature. Resume re-arms it and can cause a firing at the next check within its existing signed permission. The app cannot edit the Execute agent, change its permission or revoke it on chain. It can remove the agent only after the permission has ended; a live permission first needs Revoke and delete in Signo. Use Disconnect to revoke the AI app's account access; this does not stop the agent or revoke its permission.
- Signo's own Chat and Telegram cannot pause, change or delete an Execute agent. They send you to the Agents page.
- Signo's staff can pause any Execute agent to stop an incident. Staff cannot start it again, change it or delete it.
- Signo can also stop execution for all permissions at once, for example after a fault or a security risk. Signo cannot change or widen your permission.
Editing an agent with a live permission
Pressing Edit keeps the agent on Execute and shows the current permission read-only, including its wallet, chain, action, limits, amount spent, expiry and fee. You can rewrite the sizing instruction, and Change limits remains the separate on-chain control for the per-execution limit, lifetime limit and expiry.
The signed trigger and autonomy level stay locked. A target health factor for repay from collateral is part of that signed trigger. To change the trigger, target, action, asset or autonomy level, press Delete, complete Revoke and delete, then set up a new agent. If the permission has already ended or Signo has no record of it, the editor can offer a new permission instead.
How to pause, change limits or revoke
| You want to | Do this | On chain? |
|---|---|---|
| Pause | On the Agents page, press Pause on the agent's row. Start re-arms it: a condition still true can fire at the next check. | No. Signo stops sending firings for this agent. The permission stays live on chain. |
| Change limits | Expand the agent's row and press Change limits. You can change the per-firing limit, the lifetime limit and the expiry. | Yes. Your wallet signs the change. The same permission changes, and what it already spent still counts. |
| Revoke | Press Delete on the row, then press Revoke and delete. | Yes. Your wallet signs it. It is permanent. |
- Pause is the fastest control. But pause is a setting in Signo, not on the chain. To make sure that nothing can fire, revoke.
- The lifetime limit cannot go below what the permission already spent. If the new limit needs a larger approval, your wallet approves it first.
- When you revoke, Signo pauses the agent before your wallet opens.
- A revocation takes effect when its transaction is included in a block. A firing that is included before it still executes.
- The agent leaves your list when the revocation confirms.
- A revocation needs no approval from Signo.
Before requesting data deletion
A data-deletion request removes Signo's stored Execute records, including permission copies, proposals, runs and firings. It does not revoke the permission or the token approval on chain. This is different from Revoke and delete on the Agents page, which asks your wallet to revoke the permission first.
Before requesting deletion, revoke your permissions and wait for confirmation, then remove any token approvals you no longer need. Deleting the app's records does not remove the on-chain permission; public blockchain records remain. See Wallet privacy controls.
If the app is unavailable
You can act from any wallet tool that can send a contract call from the wallet that signed the permission:
- Call
revokeMandate(mandateId)on the Shield v1 core of your permission's chain:0xd64807a7207D62d8F3E14aC1e05dB9fD1f1500CBon X Layer,0xc9f83d96ee711C06dE80A532785d3BaEA966de97on Arbitrum. The permission id is in theMandateRegisteredevent of your setup transaction. - Or set the token's approval for that same address to zero. Then every firing that takes that token fails before anything moves. This does not stop a claim permission, because a claim takes nothing.
If Signo's agent key leaked
Signo's agent key is held in Google Cloud KMS, in a hardware security module, and never leaves it. Only Signo's production service can ask it to sign. Google does not check what the key signs, so the Shield contract's checks are what bound every firing.
A person who stole the agent key could do these things:
- Fire live permissions that name the key. Each firing must stay inside the permission's limits, venues, required result, expiry and on-chain trigger.
- Choose a bad time, amount or route that still passes those checks. On a swap with a price check, your slippage limits the loss for each firing. On a swap with no price check, only your limits bound the loss.
That person could not do these things:
- Send your tokens anywhere other than your wallet, or your signed recipient for a send.
- Call or approve a contract that your permission does not name.
- Go over a limit.
- Fire after expiry, after you revoke, or after a freeze.
- Hold your tokens, or change your permission.
The contract's enforcer role can freeze the agent key in one transaction. This stops every firing at once. You can also revoke your permission yourself.
Swaps with no price check
The chain cannot value a token that has no Chainlink price feed. You can still sign a swap of that token. The review screen tells you in one line. Then:
- The contract checks only your limits and that a token you signed arrived.
- A token that rebases can look like it arrived when nothing was bought.
- Signo refuses a route that OKX DEX rates over 15% price impact, or that has no impact figure. Signo runs this check, not the contract.
What else can go wrong
- The agent fires when you did not expect it. Signo reads a plain-English condition. The chain does not. Before you sign, read the sentence that starts with "When" on the review screen.
- The amount is not what you meant. The agent uses AI to size each firing from your instruction, inside your limits. Set the per-firing limit to the most that you would accept in one firing.
- The price is worse than the market. Your maximum slippage against the oracle price, or your fixed minimum, bounds a swap. OKX DEX builds the route.
- Nothing fires when you expected it. Checks normally run hourly, with the continuation exceptions described above. Each of these things blocks a firing: a low balance or approval, a venue under review, a stale price feed, a Signo outage, or a stop by Signo's team.
- A venue changes. Signo reads each venue before every firing. It blocks a venue that changed until a person reviews it. Signo does not operate OKX DEX or Aave.
- The contracts have a bug. The contracts are public and tested. They have not been formally audited. See Review status.
- An approval is left over. After you revoke, the approval stays until you remove it.
- A token is left in a sandbox. A route can deliver a token that the sandbox does not sweep. That token stays in the sandbox of that firing. It is still yours. Anyone can call
sendToOwneron the sandbox, and it pays only you. Signo alerts its team to this.
Review status
The Shield v1 contracts went through 15 review passes. They have not been formally audited. The code, its 499 tests, the review history and the deployed addresses are public in the signo-shield repository.
The contracts cannot be upgraded. A change is a new version, and your permission stays on the contracts that you signed.
Known limits today: X Layer and Arbitrum only, one input token per permission, and OKX DEX as the only swap venue. Execute can spend only tokens that you approve, not the chain's own coin. For a send, supply, repayment or the input side of a swap, wrap the coin first (OKB to WOKB on X Layer, ETH to WETH on Arbitrum); an attempt to spend the native coin is refused at setup and nothing is spent. When a swap buys the chain's own coin, Signo instead sets up the wrapped token as the destination: buying OKB produces WOKB and buying ETH on Arbitrum produces WETH. The review screen names that wrapped token before you sign.
Getting help
If a firing happened that you did not expect:
- Press Pause on the agent's row. Signo then stops sending firings for it.
- Revoke the permission. Press Delete, then press Revoke and delete.
- Report it. Press Report a problem on the firing in the History tab of the Agents page. This opens an email to the Signo support team with the transaction link, the agent name and the chain filled in. You can also write to support@signo.fi yourself. Include the transaction link, the agent name and your wallet address.
- If no other agent uses the token, remove the approval in Settings → Wallet permissions → Unallocated Shield token approvals.
Do not press Start just to inspect a paused agent. Start re-arms it; a condition still true can cause another firing at the next check.
Signo cannot reverse a transaction that is on chain. The full terms are in the Terms of Service, Section 2A. Security and the Shield trust document tell you how the system is secured.