Cap the agent.Keep the keys.
Give your AI agent a spending limit, not your private key. Set a cap, see what it spent, revoke in one tap.
- Enforced by Squads v4
- Public audit log
- One-tx kill switch
Example limit · Mainnet
ActiveAgnt…7Qx2k
Last transfer —
This agent can send up to 50 USDC per day, only to these 2 addresses.
/ 50.00 USDC
Resets in
--:--:--
- Transfer → Venu…h3K9a−2.50—
- Transfer → Venu…h3K9a−2.50—
- Blocked · Over cap · 25.00 > 17.50 left−25.00—
Squads Protocol v4 on Solana Mainnet, read from chain: loading. SOL/USD unavailable.
The problem
Agents get all or nothing.
Today you hand an AI agent a full private key that can drain everything, or a session key whose real limits are hard to check. Neither lets you say "this much, to these places, stop when I say so."
Full private key.
The agent can move every token in the wallet. One bug and it is all gone.
Limit: none
Opaque session key.
Some limits exist, but you cannot read them back in plain words or check them on-chain.
Limit: unclear
Reinlock limit.
A cap, a token and an address list, written as one sentence and enforced by the Squads program.
Limit: 50 USDC / day
How it works
Three steps. One signature.
- 01
Create a vault.
Connect your wallet. Reinlock creates a Squads v4 vault where you are the only member and config authority. Funds sit in the vault, not with the agent.
Vault8xKq…Mv2PdControlled · threshold 1 - 02
Set the limits.
Pick SOL or USDC, a daily or lifetime cap, and optionally the only addresses it may pay. Read it back as one sentence before you sign.
50.00USDC - 03
Hand over a limited key.
The agent keeps its own keypair and spends only through its limit. Over the cap, wrong token or wrong address: the program rejects it.
Blocked · over cap · 25.00 > 17.50 left
Candid
What the chain enforces, and what it doesn't.
Enforced on-chain by Squads v4
Cap: the agent cannot send more than the remaining amount.
Token: each limit covers exactly one mint.
Destinations: if you list addresses, only those can receive.
Revoke: once removed, the agent's next transfer fails.
Not enforced on-chain
Expiry: Squads limits have no native expiry. Reinlock records your date in an on-chain memo and prompts you to revoke; removal needs your signature.
Swaps and DeFi: v1 covers transfers only.
Your agent's judgement: the cap bounds the damage from bugs or bad decisions inside it; it does not judge them.
What you get
See it, cap it, cut it.
Spend meter.
Amount sent out versus your cap, read live from chain, with the next reset time. Not profit and loss.
/ 50.00 USDC
ExampleKill switch.
Revoke every limit on a vault in a single transaction.
Public audit log.
Every limit, transfer, revoke and failed attempt, parsed from on-chain history. Shareable, no wallet needed.
Passkey check.
An optional local confirmation on your device before your wallet signs. Not an on-chain signature.
Opens in Telegram.
The dashboard and revoke flow as a mini-app web page that opens inside Telegram. Not a bot.
3-line SDK.
Your agent calls transfer() and gets a typed error when it hits the cap.
For agent builders
Three lines in your agent.
Import the in-repo SDK, point it at your vault and the agent's keypair, and send. Over-cap calls throw ReinlockCapError.
const rl = await Reinlock.fromVault(conn, VAULT, agent);
console.log("left:", await rl.remaining(USDC));
await rl.transfer({ mint: USDC, to: VENUE, amount: 5_000_000n });
Built on Squads Protocol v4. Reinlock itself is unaudited.
Reinlock deploys no program of its own. Vaults and limits are accounts of the audited Squads v4 multisig. There is no server holding keys and no database: everything you see is read from chain or kept in your browser.
Check any vault.
Paste a vault or multisig address to open its public audit log.
Start with a small cap.
Every signing step says which network it signs on and what it will do, before your wallet opens.