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 proofs without asking for a signature on every request. This is different from creating a listing in your profile for hosted verification. See Integrations.- User signs in on NEUS
- User approves the permissions once
- Your app stores the proof 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.
When scope: "payments:x402" and allowedPaymentTypes: ["x402"] are set, the agent can settle metered API calls via x402 without a NEUS account. The calling application enforces the maxSpend cap client-side before signing each payment. The protocol does not decrement maxSpend server-side. When the cap is exhausted, the application stops signing payments and the agent is refused. See x402 pay-per-call for the full settlement flow.
Fields
The protocol accepts bounded action strings in
allowedActions and deniedActions. deniedActions always wins over allowedActions. Use permissions only for app-link scope tags (app:<id>, origin:<url>).
Human approval pattern
Your application enforces the limits recorded in the permission proof:- Check the current permission proof before the tool call.
- Apply
deniedActionsfirst. - Pause when the policy requires human approval.
- Continue only after approval is confirmed.
agent-delegation.json.
Result
A proof 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.