Your rules live onchain, not in the chat

An AI that can move money needs limits it can't argue with. Pluqo puts them in a policy module on your own smart account, so a prompt injection can only ask. Execution needs your signature and a policy check, every time.

Your policyexample
Per transaction
0.1 ETH
Per day
0.5 ETH
Swaps and mints
Ask me
Token launches
Blocked
Blocked tokens
2 addresses
Session keys
Expire in 30 days

Changing any line needs your wallet. Raising a cap waits 24 hours.

Who can do what

Four parties touch every request. Only one of them can move your money: you.

PartWhat it holdsCan readCan proposeCan approve a write
Your assistant
Claude, ChatGPT, Cursor
NothingYesYesNo
Pluqo server
The MCP endpoint
A session key per assistant. It signs proposals, never approvalsYesYesNo
Policy module
Contract on your smart account
Your limits and listsn/aNoNo. Blocks anything outside policy, even if you sign
You
Your wallet
The owner keyYesYesYes, every write

How a write gets signed

Your account is an ERC-4337 smart account. The policy is an ERC-7579 module on it. Two signatures and one check, every time.

01

Propose

Your assistant calls a write tool. The Pluqo server builds a UserOperation and signs it with that assistant's session key. That key can only propose.

02

Preview

Safety Guard scans the target. The request lands in your app with amounts, route, fees, chain and what is left today.

03

Co-sign

You sign the same operation with your owner key. Without both signatures it is invalid.

04

Check

At validation the module checks caps, tool rules, blocked tokens, pause and key expiry. Any miss reverts with a named code.

What stops a tricked owner signature from removing the module?

Removing the module or raising a cap is an owner action the app shows in plain words, and it only takes effect after a 24 hour delay. Lowering a cap or pausing is instant. So one bad signature can't quietly lift your limits.

Can my own owner key go around the module?

No. The module is the validator of your smart account, so even a transaction you sign alone passes through it and meets the same caps. Moving more than a cap allows means raising the cap or starting an exit, and both wait 24 hours, counted onchain. Full rules in Docs

Try to break the limit

Move the sliders. When a request goes over your per trade limit or what is left today, the app runs the same check as the module and stops it before you are asked to sign. Anything that slipped past would still be rejected by the module at validation.

Daily limit0.50 ETH
Already spent today0.20 ETH
Per trade limit0.30 ETH
Your AI asks to swap0.25 ETH

Changing the limit itself needs a signature from your wallet. A message in the chat can't do it.

Claude wants topluqo.swap
Swap 0.25 ETH to GLUB

Safety Guard: a second look, not a guarantee

Every token and contract is scanned before a quote reaches you. High-risk results are blocked by default.

Owner can mintSupply can be inflated after you buy.
Blacklist functionYour address could be blocked from selling.
Honeypot patternBuying works, selling quietly fails or is taxed.
Upgradeable proxyThe code can change after you check it.
Unlocked liquidityLiquidity can be pulled at any time.
Concentrated supplyA few wallets hold most of the tokens.

What we defend against, and what we don't

Pluqo shaking its head
AttackWhat stops itWhat it can still do
Prompt injection
A page or token name tells your AI to drain the wallet
Caps, tool rules and blocked tokens live in the module, not the chatAsk you to sign a bad trade inside your caps. Read every preview.
Malicious token metadata
Instructions hidden in a name or description
Shown quoted, as data, next to the contract addressLook convincing. Check the address.
Leaked access key
Someone copies the key from your Cursor or Claude Desktop config
The key only lets an assistant propose. It expires on schedule, rotating it revokes it at once, and Pause stops everythingSpam you with requests until you pause.
Pluqo server breach
Someone takes over our server and its session keys
Session keys only propose. Every write still needs your owner signature and passes the moduleFlood you with fake-looking requests. Pause, then rotate keys.
Tricked owner signature
You approve something you didn't read
Raising caps or removing the module waits 24 hoursSpend inside today's caps. That is why caps start small.

Contracts and audits

Every official address is listed here and nowhere else. Deposits from Ethereum are signed on Ethereum, outside the policy module. Bridging out of Robinhood Chain is a normal write: it passes the module and counts toward your caps.

ContractNetworkAddressAudit
Policy moduleMainnet, chain 4663Published at deployReport linked here
Smart account factoryMainnet, chain 4663Published at deployReport linked here
$PLUQO tokenMainnet, chain 4663Published at deployReport linked here

Found something? Tell us first

Report bugs privately first. We confirm within 48 hours and credit you in the changelog once it is fixed.

Status

  • Source code: public with the first release.
  • Audit: independent review before any contract holds funds.
  • Bug bounty: opens with the audit report.
  • Contact: a security address is published with the first release, signed by the team key.