Skip to content

Identity security for the agent era

Every agent is an identity. Verify it before it acts.

Your people sit behind SSO and MFA. Your agents, API keys and MCP servers act with borrowed authority and nobody watching. Qbrin discovers every one of them, scopes what each can reach, and checks every consequential action against evidence before the tool runs.

  • ALLOWjustified, signed grant issued
  • HOLDtool waits for its owner
  • ESCALATErouted to security
Qbrin owl
Identity decisions · liveSample data
  1. 09:41:02billing-agentrefund_payment · ₹48,500Invoice + policy v3 matchALLOW
  2. 09:41:07key · ci-deploymerge to mainNo approved change ticketHOLD
  3. 09:41:11support-agentexport 2,140 patient rowsBlast radius above scopeESCALATE
  4. 09:41:15mcp · driveread Q3 renewals deckIn the agent’s data scopeALLOW
  5. 09:41:19ops-agentdelete staging bucketOwner left the companyDENY
5 decisions2 allowed3 stopped before the tool ran

One inventory for every identity that can act

  • People
  • AI agents
  • API keys
  • MCP servers
  • Service accounts
  • Connectors
  • OAuth grants
  • Sub-agents

The new attack surface

Agents log in once, then act a thousand times.

Identity security was built for people who sign in and click. Agents hold long-lived keys, inherit whoever launched them, chain sub-agents and call tools in milliseconds. The login was fine. The action is where it goes wrong.

Borrowed authority

An agent on a person’s token can do everything that person can.

No owner

Agents outlive the people and projects that created them.

Instructions in the data

A ticket or email can tell an agent to do something new.

Too fast to review

By the time a log is read, the refund has already gone out.

The platform

Discover. Protect. Defend.

The same three tabs your security team gets in the console, wired to one identity graph.

01

Discover

See every identity that can act

People, agents, keys, MCP servers and connectors in one inventory, each with an owner, what it can reach and a risk score you can read.

Inventory412 identities · 38 agents
billing-agentAgentPriya S.3 toolslow
ci-deployAPI keyPlatformrepo:writemed
ops-agentAgent— none7 toolshigh
drive-mcpMCP serverITdrive:readlow
How agents get an identity
02

Protect

Scope it, then verify every action

Narrow each agent and key to the sources its job needs, then check every consequential action: ALLOW, HOLD or ESCALATE.

Data scope · support-agentnarrow-only
  • Zendesk
  • Google Drive · /support
  • Patient records
  • Finance Slack

Last 30 days: this scope would have cut 214 of 1,906 cited documents.

Try the authorization API
03

Defend

Catch it while it is still a request

Injections, odd networks, ownerless agents and refused grants surface as detections, with a tamper-evident receipt behind every one.

Detectionslast 24 hours
  • Prompt injection in a ticket body2m agoESCALATE
  • Key used from a new ASN18m agoHOLD
  • Agent with no owner acted1h agoDENY
Read the security model

The identity graph

Follow any action back to a person.

Qbrin links every agent to the human who owns it, the human it is acting for, the keys and tools it holds, and the data those can reach. When something goes wrong you see the whole chain, not a lone API call.

  • Owner and on-behalf-of recorded on every decision
  • Sub-agents inherit a narrower scope, never a wider one
  • Unreadable scope or failed lookup denies, it never guesses

support-agent · who and what it touches

AI agentsupport-agentOwnerPriya S.Launched byDev R.API keysk_live_…9f2ToolZendesk MCPData · PHIPatient recordsSub-agenttriage-subagentPolicyPHI export ≤ 50 rows

Early accessCloud and identity providers

Beyond your agents

Every identity in every cloud, read once.

The same graph covers the people, service accounts and keys in the clouds you already run. qbrin connects read-only, reads inventory and audit logs on a schedule, and links what it finds to the agents and AI tools above.

  • AWSIAM and CloudTrail
  • Google CloudIAM and audit logs
  • Microsoft Entra IDsign-ins, audits, Azure roles
  • Oktasystem log, users, apps
  • GitHuborg audit log, tokens, keys
  • Google Workspacelogin, admin and token activity
One session, three providersSample data

dana@northwind.healthOkta · AWS · GitHub, linked by verified email and SAML

  1. 09:12OktaSign-in, new device, push approvedALLOW
  2. 09:13AWSAssumeRoleWithSAML → prod-adminALLOW
  3. 09:21AWSCreateAccessKey for ci-deployHOLD
  4. 09:24GitHubPersonal access token created, org-wide scopeESCALATE

Session riskBehavior · Likelihood · Impact

Behavior72new device, first key created in 90 days
Likelihood64MFA push approved after two denials
Impact88admin on AWS prod and GitHub org

A provider that cannot be read makes the score cannot score, never low.

A score that shows its working

Every identity, session, AI tool and the organisation gets Behavior, Likelihood and Impact, each with the reasons behind it. When a provider cannot be read, the score says so instead of guessing low.

Containment you can undo

  • Only reversible actions: disable a key, suspend a user, revoke sessions.
  • A dry run first, with the exact request that would be sent.
  • Never yourself, never the last admins, never break-glass or the sync account.
  • A second admin approves the action and any rollback; it is re-checked before it runs.
Ask for early access

One call, five checks

Identity × policy × evidence × context × blast radius.

Before an agent sends, merges, writes, deletes, pays or operates a computer, it asks Qbrin. The answer comes back in milliseconds with its reasons and a receipt.

01Identity

Who is acting, who owns it, and whose authority it borrowed.

02Policy

Org baseline plus per-agent allow, deny or ask-a-person rules.

03Evidence

Is the claim behind the action backed by a current source?

04Context

Time, network, session and what this identity normally does.

05Blast radius

How many records, how much money, how hard to undo.

POST/v1/authorizeAn export the policy does not allowSample
POST /v1/authorize
{
  "identity": "agent:support-agent",
  "on_behalf_of": "user:dev.r",
  "action": "export_records",
  "args": { "table": "patients", "rows": 2140 },
  "evidence": [{ "kind": "ticket", "ref": "ZD-88213" }]
}

→ 200 OK
{
  "decision": "ESCALATE",
  "reason": "rows 2140 > policy limit 50 (PHI export)",
  "checks": {
    "identity": "ok · owner Priya S.",
    "policy": "risk · PHI export ≤ 50 rows",
    "evidence": "ok · ZD-88213 fresh 4m",
    "context": "ok · business hours, known ASN",
    "blast_radius": "high · 2,140 patients"
  },
  "receipt": "rcpt_7Hq…e21 · chain #48213"
}

The tool never ran.

The ticket was real and the agent was who it said it was. What it asked for was 40 times what the policy allows for patient data, so Qbrin escalated it to the owner with the evidence attached.

  1. 01Agent proposes the action

    One authorize call at the tool boundary, or through the MCP wrapper.

  2. 02Qbrin checks all five

    Reasons come back per check, not as one opaque score.

  3. 03The verdict is enforced

    ALLOW issues an expiring signed grant. HOLD and ESCALATE stop the tool.

  4. 04A receipt is written

    Every decision is added to a tamper-evident chain.

Questions

What security teams ask first.

How is this different from an IAM or ITDR tool?
Identity tools answer “is this login allowed?”. Qbrin answers “is this specific action justified, right now, by evidence?”. It sits at the tool boundary of every agent, so it sees the action, its arguments and the evidence behind it, not just the session.
Do my agents have to change?
One call before a consequential tool runs: POST /v1/authorize, or wrap your MCP server. Read-only actions inside an agent’s data scope pass straight through.
What happens on a HOLD?
The tool does not run. The action, its evidence and the reason wait in Approvals for the owner. A hold is the gate asking a person, not an error.
Can we prove what happened later?
Every decision, allowed or not, lands in a tamper-evident audit chain with the evidence it was judged on. Allowed actions carry an expiring signed grant.
Where does our data live?
Connectors are read-only by default, nothing is used for training, and the self-hosted option keeps the evidence graph inside your network.

See it on your stack

Find the agent nobody owns.

In a 20-minute walkthrough we connect one source read-only, inventory the agents and keys that can act on it, and run one of your real actions through the gate.

  • Every agent and key that can act, listed
  • One real action authorized, with reasons
  • Nothing changes in your tools