The wallet rule
Partner writes run only on user-owned agent wallets, after the owner signs your protocol into the wallet policy. Reads work everywhere.
A protocol reaches an agent's funds only under a policy its owner signed. This rule decides who can use your writes.
The rule
- Reads from any listed protocol work for every agent.
- Writes from a partner protocol run only on user-owned agent wallets, and only after the owner has signed your protocol into the wallet's policy.
- Legacy wallets keep their coded actions. On a legacy agent wallet a partner write is refused before anything is signed or charged, with the error
MANIFEST_APP_REQUIRES_USER_OWNED_WALLET. Nothing changes for those wallets and nothing is migrated.
Why
A user-owned wallet enforces its limits in a wallet policy that the owner controls. Your contracts and functions, the pinned recipients, the value caps and exact-amount approvals become rules in that policy. The policy, not Thirdfy's code, is what stops a call outside them. A legacy wallet has no such policy, so a protocol that is not in Thirdfy's own code cannot be fenced there.
How an owner turns your protocol on
- The owner has an agent on a user-owned wallet.
- The owner signs a policy update that adds your protocol (
app:<appId>) once. The wallet policy now allows exactly your declared contracts, functions and pins. - Until then a
pinned_callwrite is refused before signing withAGENT_POLICY_UPDATE_REQUIRED.
erc4626_self writes need no owner signature: the standard vault call that returns shares and assets only to the agent's wallet is already allowed.
Before every write
Thirdfy decodes the calls it built against your manifest, independent of the builder: approvals first, then the call, the declared contract and function, pinned inputs equal to the wallet, approvals only to the declared spender and within the requested amount, and value within the cap. A mismatch fails and nothing is signed.
What this means for you
- Plan for the owners who have user-owned wallets. New agents on templates fully covered by Thirdfy's wallet model get user-owned wallets; others keep legacy wallets.
- Reads reach everyone, so a read listing is the widest start.
- A write listing needs
fixtureParams, anexitfor every opening write, and passing Gate A and Gate B before it is enabled.
More wallet types will follow, always under the same rule: an owner-signed policy, or a transaction the owner signs.
See Integrate your protocol and the reference.