Securing 2M+ accounts & $15B+ in assets, protected & secure·B5 Secure™ — per data-element authorization for .NET platforms

AI Agents & Agentic Identity

Agentic Identity · The Enforcement Layer

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.

.NET 10 native [Permission] / ADA · today RFC 8693 Token Exchange / OBO · H2 2026 SPIFFE SVID consumption · H2 2026 MCP tool-scope enforcement · H2 2026 CAEP / SSF risk signals · H2 2026
A user and an AI agent enter the same authorization contract. Outside your cloud, a gateway, sidecar or sub-processor makes no decision. Inside your cloud, a .NET method carries a Permission attribute and an ADA authorize call, and the decision is made at that line: per data element and fail-closed. Allowed names the released elements; denied names the withheld elements, never their values.
The shift

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?”

The old model

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
The Never Trust model

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.

The unified identity fabric

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.

01 · Provable human authorityH2 2026

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.

B5: the inherited scope is carried into the [Permission] evaluation at the call site, so an agent literally cannot invoke a method outside the delegated grant.
02 · Ephemeral agent identitiesH2 2026

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.
03 · Continuous authorizationtoday

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.
04 · Traceable auditabilitytoday

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.
Delegated-authority classes

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.

ClassWhat it isAccess ceilingB5 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.
On-Behalf-Of, in code

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.

PaymentsService.cs — TODAY · data-element ADA, in-process
// 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);
}
PaymentsService.cs — H2 2026 · agent extension (roadmap)
// 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.

Tool identity · MCP · multi-agent

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.

Tool-level identity. Each tool or capability gets a distinct identifier, so scopes split read from write and “initiate payment up to $X” from “read balance.”
MCP tool-scope enforcement. An MCP server exposes tools; B5 enforces, per call, that the calling agent’s delegated scope actually covers the tool it just invoked.
Agent-to-agent trust. When an agent spawns a sub-agent, the child inherits a strict subset of the parent’s grant — never more — carried into each downstream [Permission] check.
No privilege escalation at runtime. A planning agent cannot grant itself a tool it was not delegated; out-of-scope invocations fail closed, in-process, at the method.
Agent memory & credential hygiene. Ephemeral, single-use credentials expire with the task — nothing durable for a compromised agent context to replay.
Machine-speed decisions, provable after the fact. Every tool invocation is attributable to an agent and an originating human, captured at the execution point.
Architectural position

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 enforcementAPI edge / gateway / SaaS layerExternal service call / synced storeIn-process, at the call site
New live attack surfaceYes — operated platformYes — external service / storeNone
Customer data leaves boundaryOftenOften — data syncNever
New sub-processor for the customerYesOftenNo
.NET integrationSDK / gateway, genericSDK, genericIdiomatic attributes & middleware
Agent identity modelFirst-classResource-scopedFirst-class + in-code enforcement
Best roleDecide & detect across the estateModel the decisionsEnforce the decision where it executes
Where it earns its place

Agentic use cases, at financial-grade scope.

Banking · Payments

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.

Wealth · Custody

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.

Multi-agent workflows

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.

MCP integrations

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.

Regulated audit

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.

Fraud & risk

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.

Honest framing

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.

Scroll to Top