First-class identity for every AI agent — enforced in your code, not at someone else’s edge.
AI agents act at machine speed, spawn sub-agents, and call tools that move money. Today, B5 Secure enforces per-action [Permission]/ADA authorization in-process — at the exact .NET line where the action executes, inside your own cloud — for every principal, including AI agents. The agent-native identity layer (OBO delegation, ephemeral scoped credentials, SPIFFE SVID consumption, CAEP/SSF risk signals) ships H2 2026. The enforcement point is here now; the agent-identity fabric lands on top of it.
Session-based trust was built for humans who log in once. Agents broke it.
The identity model the enterprise runs on assumes a principal authenticates at the front door, receives a session, and is trusted for its duration. That assumption survived two decades because humans are slow, singular, and supervised. An AI agent is none of those things. It is provisioned in milliseconds, fans out into a tree of sub-agents and tool calls, and reaches the method that authorizes a wire transfer thousands of times an hour — long after any login decision was made. The question is no longer “who logged in?” It is “is this action, by this agent, on behalf of this human, allowed — right now, at the call site?”
Authenticate once → trust the session
- Identity verified at the edge, then assumed for the session lifetime
- Agents wear shared, static service accounts — no per-agent attribution
- Authorization is coarse RBAC, decided far from where the action runs
- The gateway said “yes”; the code that moves money forgot to re-check
- Audit records the login, not the thousand actions that followed
Continuously verify → continuously authorize → continuously enforce
- Every agent is a distinct, ephemeral principal with its own identity
- Authority is delegated from a provable human via On-Behalf-Of token exchange
- Each action is evaluated at the call site, with attributes and live risk signals
- Enforcement is bound to the method itself — there is no “forgot to check” gap
- Every agent action logs the agent and the originating human, in-process
B5’s contribution is where the fabric is enforced: in-process, in .NET, at the line of code. The platforms decide. B5 enforces — at the point the agent actually invokes the tool.
Humans, services, and AI agents — one model, enforced in your application tier.
A unified identity model requires treating an AI agent as an autonomous, first-class principal whose ephemeral actions are continuously traced back to provable human authority and executed with scope-limited, time-bound credentials. Four components, each mapped to where B5 enforces it.
On-Behalf-Of delegation
Agents derive authority from the human or service that spawned them via OAuth 2.0 Token Exchange (RFC 8693), with the agent’s and human’s authority expressed in the act / may_act claims. The agent inherits a scoped, time-bound subset of permissions — never a standing grant of its own.
Just-in-time, single-use credentials
No static API keys. Short-lived, SPIFFE-compatible identities (SVIDs) that expire when the task completes. Tool-level identity splits read from write — “read balance” is a different principal than “initiate payment up to $X.”
B5: consumes the SPIFFE / workload identity and binds it to the in-process authorization context for the life of the action.Per-action runtime decisions
Authorization moves past login into per-action, intent- and attribute-based evaluation at the exact moment a tool or API is called — with live CAEP/SSF risk signals admitted as policy inputs (H2 2026) and near-real-time session revocation.
B5: the [Permission] check is that runtime plane, executing in-process on every call — no network round trip on the hot path.Agent identity + originating human
Every agent-initiated transaction logs both the agent identity and the human it acted for — satisfying SOX/HIPAA-style attribution and answering the only question that matters after an incident: who, ultimately, authorized this?
B5: because enforcement happens in-process, the audit record is captured at the precise execution point — the highest-fidelity place to log it.Not every agent should carry the same ceiling.
B5 models three delegated-authority classifications as distinct principal types feeding the same attribute-based policy evaluation. The class sets the ceiling; the call site enforces it.
| Class | What it is | Access ceiling | B5 enforcement |
|---|---|---|---|
| Human-Delegated assistant | Acts directly for a present, identifiable human — a copilot drafting a transaction the human will confirm. | Inherits a scoped, time-bound subset of the human’s permissions; high-impact actions require step-up confirmation. | OBO scope flows into [Permission]; step-up modeled as a policy attribute. |
| Machine-Bound automation | A workflow agent bound to a service identity, running a defined process without a human in the immediate loop. | Narrow, pre-declared permission set; bound to specific records or value limits; no privilege expansion at runtime. | Service identity bound to discrete method permissions; ceilings expressed as data-scoped permits. |
| Fully Autonomous agent | Plans and acts across steps and sub-agents toward a goal, choosing its own tool invocations. | Lowest standing ceiling; every consequential action re-evaluated against live risk; default-deny on anything outside the grant. | Per-action [Permission] evaluation with CAEP/SSF inputs; out-of-scope calls fail closed. |
The delegated scope reaches the method — or the method refuses to run.
Control planes decide at the edge; the action still executes deep inside your code. B5 binds the authorization decision to the method that does the work via a declarative attribute. Today, that decision is a per-action [Permission]/ADA check evaluated at the call site — no gateway-said-yes-but-the-code-forgot-to-check gap, and no network hop on the hot path. On the H2 2026 agent layer, an agent’s On-Behalf-Of token narrows that same check to the delegated scope.
// TODAY — per-action [Permission] + data-element ADA, enforced in-process // at the exact call site, for every principal including AI agents. [Permission("payments.initiate")] public async Task<PaymentResult> InitiatePaymentAsync(PaymentRequest req) { // Reached only if the caller carries payments.initiate AND the // ADA data-element check passes for req.AccountId. return await _ledger.PostAsync(req); }
// H2 2026 — Agent extension: OBO-delegated ceiling (RFC 8693) // + live CAEP/SSF risk, layered on the same in-process enforcement point. [Permission("payments.initiate", MaxAmount = "delegated")] // delegated ceiling — H2 2026 public async Task<PaymentResult> InitiatePaymentAsync(PaymentRequest req) { // Reached only if the OBO scope covers payments.initiate AND // req.Amount <= the delegated ceiling AND live risk signals permit. return await _ledger.PostAsync(req); }
Continuous authority is only as strong as its last enforcement point. B5 is that point — the Policy Enforcement Point that compiles into your application.
Every tool is an identity. Every invocation earns its access.
As agents reach the world through the Model Context Protocol and through tool-calling frameworks, the unit of authorization becomes the tool invocation itself — the natural unit in .NET, where each tool maps to a discrete method with a discrete permission.
Complementary, not competitive. The platforms decide. B5 enforces.
Use a control plane to decide and detect across your estate. Use an external authorization engine to model decisions. Use B5 to enforce the decision where it executes — in your .NET tier, inside your boundary.
| Control planes SecureAuth · Ping · CrowdStrike | External FGA OpenFGA · Okta FGA · Oso | B5 Secure | |
|---|---|---|---|
| Locus of enforcement | API edge / gateway / SaaS layer | External service call / synced store | In-process, at the call site |
| New live attack surface | Yes — operated platform | Yes — external service / store | None |
| Customer data leaves boundary | Often | Often — data sync | Never |
| New sub-processor for the customer | Yes | Often | No |
| .NET integration | SDK / gateway, generic | SDK, generic | Idiomatic attributes & middleware |
| Agent identity model | First-class | Resource-scoped | First-class + in-code enforcement |
| Best role | Decide & detect across the estate | Model the decisions | Enforce the decision where it executes |
Agentic use cases, at financial-grade scope.
Agent-initiated transfers with a hard ceiling
A copilot drafts a payment on behalf of a relationship manager. The OBO grant caps the amount; B5 refuses any call above the delegated ceiling at the method that posts to the ledger.
Autonomous reconciliation, read-only by default
A machine-bound agent reconciles positions across accounts. It holds “accounts.read” and nothing more — a leaked agent context cannot move a single asset.
Sub-agents that can only narrow, never widen
A planning agent delegates to specialized sub-agents. Each child inherits a strict subset of scope; no sub-agent can invoke a tool the parent was never granted.
Tool servers with per-call authorization
An MCP server exposes balance, statement, and payment tools. B5 enforces, per invocation, that the agent’s live scope covers exactly the tool it called.
Provable attribution after machine-speed action
Thousands of agent actions per hour, each logged with agent identity and originating human at the execution point — the record an examiner actually needs.
Live risk signals as policy inputs
CAEP/SSF events feed the per-action decision; a risk spike revokes an active agent session in near-real-time, closing the gap between a decision and its enforcement.
B5 is the enforcement substrate — the best-in-class PEP, not the whole fabric.
What B5 is, and what it is not.
B5 does not replace an enterprise IdP, cross-estate detection, or multi-hop orchestration — and does not claim to. B5 is the enforcement substrate and the embeddable identity/authorization primitives for the .NET application tier, and the Policy Enforcement Point that orchestration and decision layers rely on to actually stop an out-of-scope agent action. It slots into reference architectures alongside — not against — Entra, SPIFFE, and a Tier-1 control plane where one exists. Stating this plainly is what makes B5 credible to sophisticated buyers: the decision and detection layers are necessary, but they are only as strong as the last point that enforces them. That point is your code. B5 makes it declarative, provable, and impossible to forget.
Never Trust isn’t a posture you buy. It’s a primitive you compile in.
Bring your agentic architecture to a B5 architect. We’ll map your humans, services, and AI agents to in-process enforcement — and show you the Trust Center a library, not a platform, gets to publish.