Decision Stream
Live AgentOps authorisations. Every Allow, Deny, Failed, and Expired decision lands here with its rail, agent, amount, and reason — this is where you find out what your agents are actually doing.
Reading a row
- Outcome — ALLOW or DENY. A DENY means nothing was signed.
- Reason — plain English, e.g. “spend cap exceeded”. This is the field to read first when an agent is stuck.
- Agent — which agent asked. Name your agents well and this column does the triage for you.
- Rail —
casper-x402,cspr-trade, orcasper-deploy. - Amount — what was requested, in CSPR.
Decision states
- Signed — allowed and signed; a payment header was issued.
- Held — allowed, waiting on settlement evidence from the facilitator.
- Anchoring / anchored — the decision hash is being, or has been, committed on-chain to the
GuardRegistry. - Failed — the request could not be completed. Nothing was spent.
- Expired — the authorization window elapsed before use.
Debugging with the stream
Most integration problems are visible here within seconds:
- Nothing appears at all — your agent is not reaching AgentOps. Check the base URL and that the key is being sent as a bearer token.
- DENY on the first call — usually no budget assigned, no policy configured, or the rail is not permitted.
- DENY after working fine — spend cap or velocity limit reached for the epoch.
- Unexpected duplicates — your agent is generating a new idempotency key on retry. Reuse the key for the same logical request.
NOTE
Programmatic access to a single decision is available too:
getDecision(id) in the SDK, or the casper_guard_decision_status MCP tool.For a permanent, exportable record rather than a live view, go to Audit Export & Disputes.
