Non-Human Identity Audit

Audit your non-human identities in minutes

Upload an export of service accounts, API keys, tokens and app registrations. You'll see which are stale, unowned or over-privileged, which keys are older than 90 days, and which AI agents hold admin scopes, mapped to the OWASP Non-Human Identities Top 10.

Your inventory stays in your browser. The file is read on your computer without uploading its contents. The page may request static files from this site and, if analytics are enabled, contact the configured analytics services. Export names and metadata only, never secret values.

Exports it recognises

Any other CSV with a header row works too: columns such as name, owner, privilege, last used, last rotated and expires are matched by name, and you can change the mapping. Step-by-step export instructions.

What it finds

The OWASP Non-Human Identities Top 10

RiskWhat to fix
NHI1 Improper offboardingGive every identity a named owner; disable identities unused beyond your limit, then delete them after a grace period.
NHI2 Secret leakageKeep secrets only in a secrets manager and scan code, CI logs, tickets and chat for leaked ones.
NHI3 Vulnerable third-party NHIReview OAuth apps, integrations and delegated access; remove unused ones and cut scopes to read-only where possible.
NHI4 Insecure authenticationReplace passwords and static keys with short-lived tokens or workload identity federation.
NHI5 Overprivileged NHIReplace admin, owner, wildcard and tenant-wide scopes with the narrowest permission that works.
NHI6 Insecure cloud deployment configurationsUse OIDC federation from CI/CD to your clouds instead of stored static credentials.
NHI7 Long-lived secretsSet an expiry on every secret and rotate static keys within your rotation limit.
NHI8 Environment isolationUse separate identities and secrets for development, staging and production.
NHI9 NHI reuseGive each application or agent its own identity so one compromise doesn't spread.
NHI10 Human use of NHIStop people using service identities; give them personal accounts with MFA and just-in-time access.

AI agents are non-human identities too

Every AI agent that reads email, queries a database or calls an API acts through a credential. Give each agent its own identity, a named owner and the narrowest scopes its job needs. For a least-privilege checklist and a tool that compares granted and needed permissions, use Agent Permission Audit.

Questions

Is my data uploaded?

No. The file is read in your browser without uploading its contents. The page may request static files from this site. Export names and metadata only; never include secret values.

Which exports are recognised?

AWS IAM credential reports, Microsoft Entra ID app registrations, Okta API tokens, GitHub fine-grained tokens for an organization, Google Cloud service account keys and Google Workspace domain-wide delegation, as CSV or as the JSON the API returns. Any other CSV works too: columns are matched by name and you can change the mapping.

What counts as stale, over-privileged or an old key?

Stale: not used within the limit you choose (90 days by default) or never used. Over-privileged: admin, owner, wildcard or tenant-wide scopes, such as Directory.ReadWrite.All, full Gmail access or organization member administration. Old key: a key or secret older than your rotation limit (90 days by default).

How are AI agents recognised?

By name or type: identities whose name or type mentions an agent, bot, copilot, assistant, GPT, LLM or an AI provider. Holding admin scopes as an agent is reported separately because an agent acts on instructions it reads.

How is the score calculated?

It's the share of identities with no high or critical finding. An identity with only medium findings counts as 0.4 of a problem; static credentials alone don't lower the score.

Sources