Somewhere inside your stack, a non-human identity had an API token with more power than it should. It wasn’t protected the way your human accounts are. It wasn’t rotating. It wasn’t monitored closely enough. Invisible credentials, left to run forever. In that moment, you realize API tokens are the real keys to your systems—and some of them never expire.
API tokens for non-human identities are used everywhere: automation scripts, CI/CD pipelines, backend services, integration bots, IoT devices. They authenticate code, not people. And yet, access controls for them are often weaker, audits are less strict, and lifecycle management is manual or inconsistent. This is the silent attack surface—persistent, trusted, unguarded.
The first step is visibility. Without an inventory of every API token in use, tied to the non-human identity it belongs to, you are blind. Most teams can’t answer: Which services are running with tokens? What scopes do they have? When do they expire? Who can revoke them?
Rotation should be policy, not an afterthought. API tokens for non-human identities must have enforced lifetimes, automation for renewal, and revocation built into workflows. Machines are predictable; your system for managing their identities should be too.