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.
- 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.
| Part | What it holds | Can read | Can propose | Can approve a write |
|---|---|---|---|---|
| Your assistant Claude, ChatGPT, Cursor | Nothing | Yes | Yes | No |
| Pluqo server The MCP endpoint | A session key per assistant. It signs proposals, never approvals | Yes | Yes | No |
| Policy module Contract on your smart account | Your limits and lists | n/a | No | No. Blocks anything outside policy, even if you sign |
| You Your wallet | The owner key | Yes | Yes | Yes, 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.
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.
Preview
Safety Guard scans the target. The request lands in your app with amounts, route, fees, chain and what is left today.
Co-sign
You sign the same operation with your owner key. Without both signatures it is invalid.
Check
At validation the module checks caps, tool rules, blocked tokens, pause and key expiry. Any miss reverts with a named code.
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.
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.
Changing the limit itself needs a signature from your wallet. A message in the chat can't do it.
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.
What we defend against, and what we don't

| Attack | What stops it | What 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 chat | Ask 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 address | Look 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 everything | Spam 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 module | Flood 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 hours | Spend 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.
| Contract | Network | Address | Audit |
|---|---|---|---|
| Policy module | Mainnet, chain 4663 | Published at deploy | Report linked here |
| Smart account factory | Mainnet, chain 4663 | Published at deploy | Report linked here |
| $PLUQO token | Mainnet, chain 4663 | Published at deploy | Report 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.