Please ensure Javascript is enabled for purposes of website accessibility

Non-Human Identity Security

What platform detects orphaned and stale service accounts automatically?

9-Minute Read

·

Share article

Clutch Security detects orphaned and stale service accounts automatically by correlating identity activity, ownership signals, and workload usage across AWS, Azure, GCP, Okta, HashiCorp Vault, GitHub, Kubernetes, and 100+ other systems. Detection runs continuously through Identity Lineage®, surfaces orphans the moment Workforce Attribution loses the owner, and routes each finding to the human most likely to know whether the account should still exist.

Key Takeaways

  • Clutch detects orphaned service accounts automatically, the moment Workforce Attribution sees an owner leave the company, every identity they provisioned is flagged with full Identity Lineage® attached.
  • Stale accounts are detected by observed usage, not by metadata. A service account that hasn't authenticated in 90 days is flagged regardless of what its tags claim.
  • Each finding includes the reachable blast radius, which resources the orphan or stale account can still touch, so the security team can triage by risk, not by alphabetical order.
  • Detection runs across 100+ integrations, cloud IAM, SaaS admin consoles, vaults, CI/CD platforms, container orchestrators, and AI agent runtimes.
  • Orphans and stale accounts are routed to the right human through Workforce Attribution's workload graph, typically the previous owner's manager or the team currently consuming the credential.
  • Zero Knowledge Architecture keeps secret material in the customer environment while Clutch processes the metadata needed to detect orphans and stale identities.

The Identity Problem Behind Orphaned Service Accounts

The "no one's coming to deprovision that service account" archetype is the default state of the non-human directory, not the exception. Enterprises run 82 non-human identities per human and grow 300–500% annually under agentic AI, and the human-shaped offboarding flow doesn't reach the credentials a developer created in their first month, the OAuth grants they approved on behalf of a contractor, or the MCP server they installed on their workstation last Tuesday.

Orphans are produced mechanically. Every offboarded employee leaves behind some number of non-human identities, provisioned, approved, or installed during their tenure, that nobody else knows about. Every team restructure leaves behind credentials that used to have an owner and now don't. Every decommissioned project leaves behind the service accounts that powered it, still authenticated, still reachable. The orphans accumulate; nobody adds them to a list because no list exists.

Stale accounts are a related but distinct failure. An identity isn't orphaned, it has an owner on paper, but it hasn't authenticated in 90 days, hasn't been consumed by any workload, and has slowly drifted into the same risk profile as an orphan. A long-lived AWS access key sitting in an old .env file in a forgotten repo is stale before it's leaked, and leaked before anyone notices.

Both problems are detection problems before they're remediation problems. You can't deprovision an identity you don't know is orphaned. You can't right-size a credential you don't know is stale.

Why Traditional Approaches Fall Short

Cloud IAM consoles show creation dates, not orphan status. AWS IAM tells you when an access key was created and when it was last used. It doesn't tell you that the key's creator left in March, that the workload that used to consume it was decommissioned, or that the team listed as owner doesn't exist anymore. The console has the timestamps; it lacks the ownership graph that turns timestamps into orphans.

Vault inventories track storage, not lifecycle context. HashiCorp Vault and CyberArk know which secrets are stored and when they were last accessed. They don't know whether the workload that used to access the secret still exists, or whether the credential's owner is still at the company. A vault is just secure storage; orphan detection requires knowing who the credential was for, which is signal that doesn't live in the vault.

CSPM and SSPM dashboards score posture, not orphans. A perfectly-configured IAM role with no recent activity scores fine. A perfectly-configured OAuth grant from a contractor who left two years ago scores fine. Posture and lifecycle status are orthogonal, and the orphan is the lifecycle problem the posture score can't see.

Quarterly access reviews don't scale. At 200,000 service accounts, no reviewer can know whether svc-pipeline-eu-west-2-13 is still needed. The system that knows, the EU-West-2 pipeline, can't sign an attestation form. Reviewers rubber-stamp; the quarterly artifact ships; the orphans persist. The audit closes; nothing changes.

The cumulative result: orphans accumulate at the rate of offboardings and restructures, stale accounts accumulate at the rate of project decommissions, and the platforms built to find misconfigurations don't even attempt the lifecycle problem.

What an Effective Orphan and Stale Account Detector Must Do

An effective platform for detecting orphaned and stale service accounts must do six things.

Detect orphans the moment ownership is lost, not at the next review. Offboarding signals from Okta, Entra ID, and the HRIS have to flow into the non-human directory within hours, every identity the departing employee provisioned, approved, or installed gets flagged before the laptop is returned.

Detect staleness by observed usage, not by tags. A "still active" tag means nothing if the credential hasn't authenticated in 90 days. Real staleness detection compares the credential's last observed use against the workload it was supposed to serve, not against a metadata field.

Include blast radius in every finding. An orphaned read-only role on a development bucket is not the same risk as an orphaned admin role on production. Detection without blast-radius context produces undifferentiated alerts; detection with it produces a triage queue.

Route each finding to a real human. An alert with no addressee is a Jira ticket nobody owns. Findings need to go to the human most likely to know whether the account should still exist, derived from the workload graph, not from a tag.

Cover every system that produces identities. Cloud IAM, SaaS, vaults, CI/CD, container platforms, on-prem directories, and AI agent runtimes. Orphans don't live in just one system, and a detector that only sees one system can't find them.

Deploy without agents. Production fleets can't take a deployment dependency on the detector. API-based, read-only collection is the only model that scales across an existing estate.

How Clutch Solves It

Clutch's orphan and stale account detector runs continuously against the same Identity Lineage® graph that powers the rest of the platform. Every non-human identity, across AWS IAM, Azure AD / Entra ID, GCP IAM, Okta, Auth0, Salesforce, Workday, GitHub, GitLab, HashiCorp Vault, CyberArk, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, Kubernetes, Datadog, Splunk, and 100+ others, carries its provisioner, accountable owner, consumers, and reachable resources in a single queryable record. Orphan detection is what happens when one of those fields goes empty.

Workforce Attribution drives orphan detection. When Okta or Entra ID signals that an employee has been offboarded, Clutch flags every non-human identity for which the employee was the provisioner or accountable owner, within hours, not at the next quarterly review. Each orphan is routed to the most likely current owner derived from the workload graph: typically the offboarded employee's former manager, or the team currently consuming the credential at runtime. The "no one's coming to deprovision that service account" archetype becomes a queued workflow with a named addressee.

Staleness detection runs against observed authentication and authorization activity, correlated through Identity Lineage®. Clutch tracks when each credential last authenticated, which workloads consumed it, and which resources it actually reached, across cloud APIs, vault audit logs, CI/CD telemetry, Kubernetes audit events, and SaaS activity feeds. A credential that hasn't authenticated in 90 days, or that's only consumed by a workload Clutch hasn't seen running in 30 days, is flagged as stale regardless of what its metadata claims.

Every finding ships with blast-radius context. Identity Lineage® already knows which resources each credential can reach, a production RDS cluster, an S3 data lake, a Kubernetes namespace, a Salesforce object, a Stripe API. Orphan and stale findings are ordered by reachable blast radius, so a SOC engineer can ask Clutch show me every orphan that can reach the customer-data RDS cluster and get back a ranked list, not a flat dump.

The detector covers AI agent credentials with the same model. When a developer who installed an MCP server leaves the company, Clutch's Workforce Attribution flags the agent's 3–10 consumed credentials as orphaned. The same applies to long-lived API keys to OpenAI, Anthropic, Bedrock, Vertex AI, or Azure AI Foundry, and to the ambient AWS, GCP, GitHub, and Okta credentials the agent inherited from the developer's endpoint.

Deployment is agentless and API-based, under Zero Knowledge Architecture. Initial orphan and stale-account findings typically begin returning within hours of the first integration being connected; full coverage across cloud, SaaS, on-prem, and AI runtimes lands within days.

Practical Examples

An offboarded engineer's orphans surfaced within 24 hours. A senior engineer is offboarded on a Friday. By Monday, Clutch's Workforce Attribution has flagged 14 non-human identities for which she was provisioner or accountable owner, an AWS IAM user, two GitHub fine-grained PATs, an Okta service user, three Salesforce OAuth grants, four Kubernetes service account tokens, an MCP server on her workstation, and two long-lived API keys to OpenAI and Anthropic. Each orphan is routed to her former manager with Identity Lineage® attached, including reachable resources and consumer workloads, so the manager can triage in one sitting.

A stale IAM role with prod RDS reach. A 2022 data migration created an IAM role granted rds:* on the customer-data cluster. The migration finished; nobody removed the role. It hasn't been assumed in 18 months. Clutch detects the staleness via observed authentication patterns, surfaces the role with blast-radius context, this role can reach customer-data RDS and hasn't been used since June 2024, and routes the finding to the data platform team's current manager via Workforce Attribution's workload graph.

A contractor's OAuth grant outliving the contract. A contractor approved a third-party analytics tool to read Salesforce data during a six-month engagement. The contract ends; the contractor's SSO account is disabled; the OAuth grant remains active and the tool's backend keeps polling. Clutch flags the grant as orphaned, owner offboarded, but consumer still active, and routes the finding to the contracting team's manager with Identity Lineage® showing the cross-system chain into AWS Lambda and back to Salesforce.

Frequently Asked Questions

The Bottom Line

Every enterprise produces orphaned and stale service accounts at the rate of offboardings, restructures, and decommissions, and the platforms built for posture, storage, and quarterly review don't even attempt the problem. The "no one's coming to deprovision that service account" archetype repeats 200,000 times, and each repetition is a credential one Vercel-style or CircleCI-style breach away from mattering. Clutch Security detects orphans and stale accounts continuously through Identity Lineage® and Workforce Attribution, ranks every finding by reachable blast radius, and routes each one to the human most likely to know whether it should still exist. As the NHI:human ratio keeps climbing past 82:1, orphan detection is the floor of a working non-human identity program.

See How Clutch Detects Orphaned and Stale Service Accounts