{
"request_id": "req_1842",
"principal_id": "org_acme",
"agent_id": "invoice_agent",
"mandate_id": "md_vendor_1842",
"action": {
"type": "stablecoin.transfer",
"rail": "base-mainnet",
"asset": "USDC",
"amount": "24800.00",
"recipient": "0x71A4...9C2E"
},
"payload_hash": "0x6f2a...b901"
}Agentic payment security
Let agents act.Never let themself-authorize.
VulSight verifies every proposed payment against the customer mandate, live state, and exact transaction before the signer can execute.
- Mandate checks
- Payload binding
- Customer held keys
VulSight Authorization
Execution boundaryTransaction request
Vendor payout
- Agent
- invoice-agent
- Rail
- Base
- Mandate
- md_vendor_1842
- Proposal
- Mandate
- Inspect
- Decision
Authorized0xA882...11E7
Requested0x71A4...9C2E
DENY
Recipient mutation denied- Reason
- recipient.allowlist_mismatch
- Evidence
- evt_7f42c9
Policy decision
One request. One decision. One evidence record.
Every proposal receives an explicit outcome, a reason code, a scoped authorization when allowed, and an evidence ID for review.
{
"decision": "DENY",
"reason_code": "recipient.allowlist_mismatch",
"authorization_id": null,
"evidence_id": "evt_7f42c9",
"retryable": false,
"next_action": "return_to_principal"
}Authorization path
From proposed action to authorized execution.
The agent can propose. Policy can decide. Only the customer signer can execute an approved payload.
01 Normalize
Intent becomes a typed request
The agent submits one supported action with a fixed rail, asset, recipient, amount, and expiry.02 Verify
Mandate and live state are checked
VulSight evaluates policy, destination, route, allowance, and economic conditions outside the model.03 Enforce
Approval binds to one payload
The customer signer accepts only the authorized payload, then settlement and retry state are reconciled.
Exact payload authorization
Approval stays bound to the transaction.
Natural-language approval is too elastic for irreversible writes. VulSight produces a scoped authorization envelope for the exact economic fields and payload the signer receives.
Any change to the recipient, asset, amount, network, expiry, or payload requires a new authorization.
Authorization envelope / Payload bound
vs-auth-7f42c9- Action
- stablecoin.transfer
- Network
- base-mainnet
- Asset
- USDC
- Amount
- 24,800.00
- Recipient
- 0x71A4...9C2E
- Policy
- vendor-payments/v3.4
- Payload hash
- 0x6f2a...b901
- Expires
- 15 min after authorization
Authority separation
Each system gets one job.
Keys, policy administration, approval, recovery, and emergency controls stay outside the agent runtime.
Agent proposes
The model submits a typed action, but never receives a raw key, reusable credential, or direct path to a payment rail.
Policy decides
Rules outside the model evaluate the mandate, live state, and exact transaction with a deterministic result.
Customer signer executes
The signer validates a scoped authorization against the payload it receives. Any mutation requires a new decision.
Agent payment security pilot
Pilot one payment flow before enforcement.
Start with one agent, one transaction type, and one signer. VulSight maps the authority path, replays adversarial cases without moving funds, and defines the controls required for safe execution.
- 01
Map
Trace one agent, one action, one rail, one signer, and every route that can reach execution.
- 02
Replay
Run adversarial workflow traces in shadow mode without moving customer funds.
- 03
Decide
Define the controls required to enforce safely, redesign the flow, or keep execution manual.
