Every agent is controlled by one NEAR account, called the owner account. That account installs the agent’s policy on-chain and is the only one that can change it. What the owner account is depends on how the owner signs: EVM and passkey owners don’t need a NEAR wallet or any NEAR tokens. They keep signing with the wallet or passkey they already use.
New agents currently take NEAR or passkey owners. EVM owners are gated: unless the deployment has turned them on, agent_create with an EVM owner is refused with owner_type_unsupported (400). Check supported_owner_types in GET /v1/network before you offer EVM sign-up. Existing EVM-owned agents are not affected and keep working.
The owner account is a different thing from the agent’s wallet. The agent has its own wallet and its own NEAR Intents account, which holds its funds. The owner account only controls the agent’s rules. GET /v1/agents/{agent_id} returns both: owner_account and wallet.

What to pass as the owner

You always pass the owner’s public key, never just an address. For a NEAR owner, that’s one of their account’s keys. An EVM address or a 0s account on its own doesn’t prove which key controls it, so the API doesn’t accept one as an owner.
  • public_key must be an ed25519 full-access key on that account. A key that is missing from the account or is a function-call key is refused with owner_key_not_full_access (403).
  • Owner requests are signed with this same key. A signature from a different key on the same account is refused: signer_mismatch (409) for a signed message, policy_delegate_owner_mismatch (403) for a delegate action. See Errors.

EVM and passkey owners: 0s accounts

For EVM and passkey owners, the API derives a NEAR account from the owner’s public key. These accounts start with 0s, followed by 40 hex characters.
1

The account is computed from the public key

The account is a small wallet contract on NEAR with a deterministic address (NEP-616). The address is a hash of the wallet code plus the owner’s public key, so anyone can compute it, and the same key always gives the same account.
2

The API creates it on the first signature

When the owner signs agent_create, the API checks the signature, then creates the account on NEAR in the same sponsored transaction that installs the policy, if it doesn’t exist yet. The API pays the gas and storage. See Gas.
3

Only the owner's key can use it

The account accepts only requests signed by the owner’s key: EIP-712 signatures for EVM, WebAuthn signatures for passkeys. Neither you nor the Agent API can sign for it. See Signing Standards.

If the account already exists

The same key always maps to the same 0s account, so the account may already be on NEAR, for example because the owner already uses this wallet for another agent. In that case, the API checks that the account runs the expected wallet code and uses it as it is. It doesn’t create it again. If an account exists at that address with different code, agent_create fails with wallet_code_mismatch.

Find the owner account

GET /v1/agents/{agent_id} returns the owner account in owner_account. It’s null until the agent is ACTIVE:
For NEAR owners, owner_account.account_id is the owner’s own account.

Keys can’t change

The owner account is fixed when the agent is created:
  • For EVM and passkey owners, a different key means a different 0s account. If the owner switches wallets or loses their passkey, the agent stays controlled by the old key.
  • For NEAR owners, the agent stays tied to the account and key given at creation.
There is no way to change an agent’s owner or recover a lost key. Tell owners to keep access to the wallet or passkey they sign with, and to withdraw funds before they switch.

Errors