Your AI Agent Is a Privileged Identity. Treat It Like One.

The moment a system can call tools and act without a human in the loop, it stops being a feature and becomes an identity — and most programs are still provisioning it like neither.

Field Notes · 7 min read

Most agents ship the way features ship: behind a flag, wired to whatever credential was fastest to obtain, reviewed once at launch and rarely again. That's a reasonable way to ship a button. It is not a reasonable way to provision something that can read a database, send an email or move a file on its own — which is exactly what a growing share of agents can now do.

The distinction that gets missed is simple. Once a system can call tools, retain memory across steps and act without approval on every individual action, it is no longer a feature. It is an identity — one that authenticates to other systems, holds credentials, and makes decisions with real consequences. Organizations have spent two decades building discipline around exactly that kind of actor: least privilege, credential rotation, offboarding, audit trails. Almost none of it has made its way to agents yet.

The pattern we keep finding

It looks the same across most environments we assess. An agent framework needs access to a handful of systems, so someone issues a single API key scoped broadly enough to cover all of them — scoping it per-task would mean more engineering work, and the deadline doesn't allow for it. That key lands in an environment variable or a config file. It doesn't rotate. It gets reused across every tool the agent touches, because minting a separate credential per tool felt like overkill at the time.

Nobody owns revoking it. When the project changes hands, or the integration gets quietly deprecated, or the team that built it moves on, the credential keeps working — because no one was ever assigned to notice that it shouldn't.

None of these are reckless decisions in isolation. Each one is the path of least resistance under a deadline, and each one is individually defensible. The problem is that they compound: a broad grant, held in a static secret, reused everywhere, owned by no one, outliving the thing it was created for. By the time anyone looks, the agent has quietly become one of the most powerful principals in the estate, and the fastest to compromise.

An agent that can act on its own is not a feature you shipped. It's an identity you created — whether or not anyone signed off on provisioning it.

"Privileged" is not a metaphor here

It is tempting to treat the comparison to a privileged account as a figure of speech. It isn't. A human administrator is dangerous precisely because their authority can be borrowed — phish the person, and you inherit everything their account can do. An agent collapses that attack into a single step, because the thing exercising the authority is a component that reads untrusted input and can be argued with. There is no separate human to phish; the operator and the credential live in the same process, and that operator takes instructions from whatever text it was handed.

So an agent is not merely like a privileged identity. It is a privileged identity with a persuadable operator built in — one that never sleeps, never grows suspicious, and acts at machine speed across every system its credential reaches. That is why the scope of the credential matters so much more than it would for a conventional service account running fixed code. The authority you grant is not what the agent will use on its best day; it is what someone who successfully steers the agent gets to use on its worst.

AI agentone broad keystatic · reused · unrotatedemail · sendfile storedatabase · readpaymentsadmin APIhighlighted: needed now · plain: reachable anyway
The task needs one grant; the credential hands over five. The four it never needed are the blast radius of a stolen or steered key.

What treating it like an identity actually means

  • Least-privilege scoping per tool and per action — not one broad credential covering everything the agent might ever need to touch.
  • Short-lived, rotating credentials in place of a static key that's valid until someone remembers to revoke it — ideally runtime-issued tokens bound to a workload identity and gone within minutes.
  • Explicit approval gates for anything above a defined risk threshold — moving money, deleting data, sending external communication — so the agent proposes and a human or a policy engine confirms.
  • Full audit logging of what the agent did, with which credential, acting on whose behalf, so the trail exists before you need it, not after.
  • A real offboarding path — a named owner responsible for revoking access when the agent, the project or the integration is retired.

There is nothing experimental on that list. Every item is something identity and access teams already do, every day, for human administrators and for the service accounts that run batch jobs. The only new thing is the principal it has to be applied to. An agent does not need a bespoke security model invented from scratch; it needs the model that already exists, pointed at an actor that slipped into production without passing through it.

Why this keeps falling through the gap

It's rarely a technical gap. It's an organizational one. Identity and access teams don't yet think of agents as something in their remit — they weren't built by anyone on that team, and they don't show up in the usual provisioning workflow. AI and platform teams, meanwhile, don't think of IAM as their job — they're focused on getting the agent to work, not on modeling it as a principal in an access control system. The agent ends up belonging to no one's threat model, provisioned once under deadline pressure and never revisited.

That gap widens as the fleet grows. One agent provisioned carelessly is a contained risk; a dozen, each wired up by a different team under its own deadline, is a privileged-access estate that no single person can enumerate, let alone govern. The failure mode is not dramatic. It is quiet, cumulative, and invisible until an incident forces someone to ask the question nobody owned: what is this thing actually allowed to do, and who decided that?

What we look at first

Closing the gap doesn't require rebuilding the agent. It requires applying identity discipline to something that was already granted one, in practice, the first time it was given a credential and let loose on a task. That's the assessment we run before anything else on an agentic security engagement: not whether the agent works, but what it's actually allowed to do, under whose name, with which credential, and what happens the day it tries to do more.

The questions are deliberately boring, because boring is what has been missing. How many agent identities exist? Who owns each one? What can each reach, and how much of that does its task actually require? When was its credential issued, and when will it stop working on its own? And when something goes wrong, can a log entry be traced to one specific agent, or does the trail end at a shared key that five of them pass around? A deployment that can answer those questions has provisioned an identity. One that can't has merely created a powerful principal and hoped nobody notices before it does.

Facing something like this in your own environment?