Scenario 01 — customer credit remediation
The dispute that pauses itself
A cardholder disputes a charge. An agent works the case end to end — reading, reasoning, drafting — until it reaches the one action that moves money.
- Task
- tsk_9f2c41
- Agent
- dispute-agent
- Identity
- workload
- Human in policy
- card-ops approver
-
09:14:02
dispute-agentworkload
Starts the case under a scoped workload identity, bound to this task.
Not a shared API key in an environment variable:
wl_dispute-opsis issued for this workload, and the credentials for the systems it touches stay at the gateway. The agent never holds them. Decision: Allow - 09:14:05 dispute-agenttool call Reads the case file and ninety days of transaction context. Scope is part of the decision: read-only, this cardholder, this case. A request for a second cardholder would be a different decision, and a denied one. Decision: Allow
- 09:14:06 policy enginemodel call Anonymizes cardholder details in the prompt before it reaches the model. Name, card number, and address are replaced with stable tokens on the way out and restored on the way back. The model reasons over the case; it never sees the customer. Decision: Allow
-
09:14:31
dispute-agenttool call
Attempts to open the fraud investigation notes on the linked account.
Denied by
deny-fraud-file@v4. Dispute handling does not include the fraud file, so the action was never authorized in the first place. The agent receives a reason and continues the case without it. Decision: Deny -
09:15:02
dispute-agenttool call
Proposes a provisional credit of $254.97 to the cardholder.
Above the unattended limit set by
credit-limit-unattended@v3. The task moves toinput-requiredand waits. The agent’s other twelve cases keep moving. Decision: Hold - 09:41:18 j.okaforcard ops · human Reviews the proposed credit and approves it. The approver sees the case, the amount, and the policy that stopped it, then decides. The approval is bound to this task and sealed into the record — it is not a message in a chat thread that someone screenshots later. Decision: Allow
- 09:41:19 dispute-agenttool call Posts the credit and closes the dispute. The agent resumes exactly where it paused. From its side the call simply had not returned yet — never blocked, never failed. Decision: Allow
Ends on the recordThe artifact the workflow produces.
- Who acted
wl_dispute-ops— dispute-agent, one workload identity, seven attributed actions.- Under whose authority
- Org
org_northwind→ card-operations policy set → human approval byj.okaforat 09:41:18, recorded against this task. - What was decided
- 5 allowed · 1 denied (
deny-fraud-file@v4) · 1 held and approved (credit-limit-unattended@v3). Each decision names the policy that produced it. - What the model saw
- Anonymized case text. The record keeps the detection and the action taken. The cardholder’s data is never copied into it.
- Integrity
- Each record is HMAC-sealed over the one before it. Alter or remove any decision and the chain stops verifying.
One task, one chain: the money-moving step, the authority behind it, and the name of the person who signed for it at 09:41:18.