agent-identity) does not allow the agent to act.
The permission receipt records who approved the agent, what it may do, how much it may spend, and when access expires.
Check ID: agent-delegation
controllerWallet is the approving account — the address that signs this step. See Agent concepts.
Setup
1
Check
neus_context → neus_agent_link2
Create
neus_agent_create. Leave out controllerWallet when the signed-in profile account should approve.3
Confirm
neus_agent_link until linked: trueSDK
controllerChainRef, agentChainRef) unless the request already includes chain or chainId.
App link
One-time user approval lets your backend create receipts without asking for a signature on every request. This is different from creating a portal in your profile for hosted checks. See Integrations.- User signs in on NEUS
- User approves the permissions once
- Your app stores the receipt ID in
qHash - Your backend calls verification with
x-neus-app— no per-request signature
app:<appId>— matches yourx-neus-appheaderorigin:<url>— restrict to your domainorigin:*— any origin
x-neus-app: your-app-id and matching site origin on verification requests. On Node, set appOrigin: 'https://yourapp.com' on NeusClient (or pass Origin via extraHeaders).
Payment limits
maxSpend is a whole-number string in token base units. For USDC (6 decimals), 25 USDC = "25000000". Use toAgentDelegationMaxSpend('25', 6) from @neus/sdk.
Fields
The protocol accepts bounded action strings in
allowedActions and deniedActions. deniedActions always wins over allowedActions.
Human approval pattern
Your application enforces the limits recorded in the permission receipt:- Check the current permission receipt before the tool call.
- Apply
deniedActionsfirst. - Pause when the policy requires human approval.
- Continue only after approval is confirmed.
agent-delegation.json.
Result
A receipt ID returned inqHash. Check it with neus_agent_link or neus_proofs_check before an action.
Revoke
expiresAt and maxSpend when money or high-risk actions are in scope.