Personal security account
Set up a smart account for one person where any transfer you did not mean can be cancelled while it is still waiting to settle.
Where: Discover → Personal security, then Policies and On-chain access · You need: a daily wallet and a hardware (cold) wallet, both on Sepolia, with test ETH in the daily wallet
Goal
Your daily wallet can start a transfer, but nothing leaves the account until a time lock has passed and you approve it with a second wallet. If a phishing site or a compromised browser starts a transfer, you see it in Approvals as Blocked and cancel it before it can execute.
Who is involved
Owner (approves or cancels)
Hardware wallet
0x3B9d…A41e
Requester (starts transfers)
Daily browser wallet
0x8C4e…21bB
Broadcaster (submits signed transactions)
A separate hot wallet
0x5E60…c7D1
Recovery (takes ownership in an emergency)
A second cold wallet or a trusted person
0xF01c…9aB4
Time: about 30 minutes on Sepolia.
Before you start
Get Sepolia test ETH into the wallet that will deploy (the owner wallet pays gas for the deploy).
Decide your time lock. One day is a good default: long enough to notice a transfer, short enough for daily use.
Owner and Recovery must be different addresses. Broadcasters must also be different from the owner.
Phase 1: Deploy the account
Open Discover and choose Personal security. Select Set up Personal Security.
In Deploy Smart Account, enter an Account name (for example
Personal Vault). The Network is read from your connected wallet. Select Continue.On Protocol Security, set:
Owner: your hardware wallet address.
Broadcaster addresses: your separate hot wallet. Use + Add another only if you want more than one.
Recovery: your cold-wallet or trusted-party address.
Time-lock
1and UnitDays.
Leave Advanced as it is. Select Deploy Smart Account and confirm in your wallet.

The account lands as a Vault. It can receive assets but cannot send anything yet. That is the intended starting state (why).
Phase 2: Check Security
Inside the account, open Policies → Security.
Confirm Owner, Recovery, Time lock (
1d) and Broadcasters are what you set.If you skipped Recovery at deploy, select Set recovery now and sign.

Phase 3: Confirm the transfer actions
Open Policies → Actions.
Confirm
NATIVE_TRANSFER(__bloxchain_native_transfer__()) is listed. It is registered on every account at deploy, so there is nothing to add.If you hold ERC-20 tokens, confirm
ERC20_TRANSFER(transfer(address,uint256)) is listed too. It is registered at deploy as well.Both rows read Flow incomplete. That is expected on a new account: the functions exist, but no role may use them and no recipient is allowed yet. Permissions, gates and the allowlist are the next three phases.
Add action is only for functions of your own, such as mint(address,uint256) on a token you govern. You do not need it here.
Phase 4: Create a requester role
Open On-chain access → Roles and select Create role.
Role name
Daily Requester, Max wallets1. Save and sign.Open the new role and select Manage role signers. Add your daily wallet
0x8C4e…21bB.
Keep the Owner role on your hardware wallet. It does not need a custom role: the owner approves and cancels delayed requests.
Phase 5: Assign permissions and gates
Back in Policies → Actions, open
NATIVE_TRANSFERand select Manage permissions.On the Delayed release tab, at the Request step select Assign role and choose
Daily Requester. Leave the Approval steps with Owner. Do not assign anything on the Signed approval or One signature tabs.Review and sign. Repeat for
ERC20_TRANSFERif you hold tokens.Open Policies → Gates. Under Needs attention, select Edit, grant the gate for
Daily Requester, then confirm in Update gates and sign.
Phase 6: Allowlist recipients
Open Policies → Allowed recipients and select Add recipient.
Add the addresses you actually pay: your exchange deposit address, a friend, your other wallet. Sign the batch.
An empty list means no transfer can be requested at all. Only allowlisted addresses appear in the Recipient picker of a new request.
Phase 7: Test it with the daily wallet
Send a little Sepolia ETH to the account (Assets → Receive).
Connect the daily wallet. Select New request → Transfer, pick the native asset, a small Amount, and an allowlisted Recipient. Select Submit request (the Wallet path) and confirm.
Open Approvals. The row shows Blocked 1d in the State column. This is the window in which you would notice a transfer you did not start.

Now practise cancelling. Switch to the hardware wallet, open the row, and in Approve request select Cancel. Confirm in your wallet. The request moves to History as Cancelled.

Repeat step 2 with the daily wallet. For the test you can shorten the wait: in Security → Change time lock set
15Minutes, sign, and wait. When the row reads Ready, open it with the hardware wallet and select Approve. The transfer executes and appears in History as Executed.Set the time lock back to
1Daysbefore you fund the account for real.
Checklist
Related
Last updated
Was this helpful?