What a KushBitx Preflight answer looks like
A stored example, not a live check: a 1 USDC transfer from our own wallet to an address it has dealt with before, with expectedRecipient, checked on 2026-11-08 at Base block 54683062. Shortened. There is no input box here: a real check costs 0.005 USDC (or 5 credits).
{
"reportVersion": "1.1",
"service": "preflight",
"checkedAt": "2026-11-08T08:36:34.358Z",
"expiresAt": "2026-11-08T08:37:34.358Z",
"transactionDigest": "0xb67c74e07040bf7eeaef751c293fd4f127f4f7b8916c6e2ede112632b8288825",
"chainId": 8453,
"onchainBlock": 54683062,
"transactionType": "erc20_transfer",
"verdict": "ALLOW",
"riskLevel": "low",
"reasonCodes": [],
"checksPerformed": [
"simulation",
"calldata_decode",
"destination",
"recipient",
"token",
"sender",
"effects"
],
"checksUnavailable": [],
"riskSignals": [
{
"code": "UPGRADEABLE_PROXY",
"severity": "medium",
"message": "Proxy architecture can allow implementation changes"
}
],
"addressPoisoning": {
"status": "complete",
"historyScanned": 1,
"incomingScanned": 40,
"historyTruncated": false,
"knownRecipient": true,
"knownAs": "paid_the_sender"
},
"effects": {
"simulated": true,
"transfers": [
{
"asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"from": "0x0d68028d06af13379c872fee032568b4be712f22",
"to": "0xd2db751a2fdba554706fb535438d81d3a0b42979",
"amount": "1000000"
}
]
},
"notChecked": [
"prompt_injection: Preflight checks the transaction, not the instructions that produced it. Bound what an agent can pay with Protected SpendGuard, a server-side policy the model cannot change."
],
"limitations": [
"No protected policy was given, so spending limits were not checked. Free SpendGuard is advisory only; use Protected SpendGuard for an enforcement boundary.",
"Advisory result, not financial advice and not a guarantee of safety. Simulation uses current chain state."
]
}Sign only if verdict is ALLOW and transactionDigest matches your exact transaction before expiresAt (SDK canSign).