IntegrAuth Academy
Identity, security and practical AI — free, from zero. Byte-sized lessons, real diagrams, hands-on labs, zero fluff. Two programs, each with its own exam and certificate.
English is hard? Your browser can translate this page into Tamil, Telugu, Kannada, Malayalam or Hindi. Tech words stay in English so you learn the real names.
How?
- Chrome on phone: ⋮ menu → Translate
- Chrome on computer: right-click → Translate to …
- Edge: the translate icon in the address bar
Human-in-the-loop approvals — CIBA & RAR
An AI agent that can spend money should never spend it alone. Human-in-the-loop means the agent proposes and a person decides, on a channel the agent does not control. Your goal: add a human approval to risky agent actions.
- Reads can run free. Writes wait for a person.
- The IdP asks the person on their phone, not the agent.
- The approval text must show the exact deal.
- The agent gets one narrow token, for that action only.
Reads run free, writes wait
You told an assistant, "Keep my subscription topped up." Days later, Kai, your AI agent, wants to buy a ₹500 add-on. Reading your balance can run. But writes go back to the person who pays. Writes are purchases, plan changes and payments. Three easy shortcuts all fail.
🚫 Full autonomy
The agent holds standing permission to spend. One prompt injection or one bug can cost real money.
🪟 A blocking pop-up
This assumes you watch the agent's screen. Agents run in the background, on servers, at 3 a.m.
📧 A code typed back
A one-time code is easy to phish. And the agent becomes the middleman for the secret.
The right shape: ask the IdP
The agent's request goes to your IdP (identity provider: the system that issues your logins and tokens). The IdP reaches you on a channel the agent cannot touch, such as your enrolled phone. Only a "yes" from there lets the action go ahead. This standard is CIBA (Client-Initiated Backchannel Authentication). It approves with a push message and no browser redirect. The agent waits by asking the token endpoint again and again. This is polling.
The binding message: approve what you see
People get tired of approvals (approval fatigue). A vague prompt such as "Approve login?" can trick them into approving an attacker. So the request carries a binding message. It is a short, readable text about the deal, like BUY-4821 · 5 GB add-on · ₹500. It shows on the page and on the phone. If they match, approve. If not, deny. You approve a specific deal, not a mood.
RAR: details for machines
RAR (Rich Authorization Requests) adds a structured authorization_details object to the request. It holds a type, an amount, a currency, a recipient and a reference. The binding message informs the human. The authorization_details object informs policy and audit. Rules can act on the amount, and machines can read the record of what was agreed.
A shop sends you a UPI collect request. Your own phone shows the shop name and the amount. Nothing moves until you enter your PIN there. The shop that asks for the money can never approve it for you.
At midnight Kai starts a CIBA request. Maya's phone buzzes: "BUY-4821 · ₹500". It matches what Kai showed her, so she taps ✓. Kai gets one narrow token, buys the add-on and holds nothing else.
Custody: where the pending approval lives
While the approval is pending, everything sensitive stays on the server. That means the request id and, later, the token. The page holds only an opaque handle, a random label with no meaning. The browser polls "any news?" and shows the status. It cannot replay or finish the grant. The agent finally gets a credential scoped to the approved action, not the user's whole session. MCP governance decides that an action is a write and pauses it. CIBA is how that pause reaches a human at scale.
Go deeper: CIBA modes, RAR standard, custom push app
- CIBA is an OpenID Foundation standard. It also allows a ping or a push when the answer is ready. The lab uses polling.
- RAR is RFC 9396.
- To show rich, free-form deal details on the phone, you need a custom push authenticator. Stock authenticator apps show only one fixed layout. Building that phone app is its own lesson: see building a custom push authenticator.
🧪 Interactive lab — enable JavaScript to play with this one.
Designing approvals for risky agent writes? Talk to our team about wiring CIBA and RAR into your stack.