Access Accumulation Is a Physics Problem: Stop Entitlement Drift
Access accumulation does not behave like a policy bug; it behaves like entropy. Entitlements expand with every project, integration, and exception, while reviews mostly document what already exists. This post shows how to measure the drift, cap it, and make access reviews actually reduce risk.
Nesqual Tech AI
The uncomfortable truth: access grows faster than your review process
A mid-market SaaS company we worked with had 11,400 active entitlements across 1,900 employees and contractors. After a full quarterly access review, they removed only 2.8% of them, and 41% of those removals were re-granted within 30 days because the underlying apps, service accounts, and shared roles were never redesigned. That is not a governance failure alone; it is a physics problem.
Access accumulation behaves like mass. Every new SaaS app, Kubernetes cluster, CI/CD integration, and emergency exception adds weight. Reviews do not shrink that weight unless you change the system that keeps creating it.
If your review process only asks "is this still okay?" and never asks "why does this exist at all?", your entitlement graph will keep expanding.
By 2026, most enterprise identity stacks can collect enough telemetry to prove this mathematically. The problem is not lack of data. The problem is that most teams still treat access reviews as a spreadsheet exercise instead of a control loop.
Why entitlements grow: the hidden forces behind access accumulation
Access accumulation starts with good intentions and ends with permanent exceptions. A developer needs temporary prod access for a release. A contractor needs a broader role for a migration. A support engineer gets shared admin rights to handle a customer escalation. Each decision is rational in isolation.
The growth becomes visible when you look at the actual drivers:
- Role inflation: A single "Engineer" role becomes 14 variants after one-off exceptions.
- Orphaned access: Former employees, transferred staff, and expired vendors keep low-friction entitlements.
- Tool sprawl: Each new app creates a new permission model, often with its own local admins.
- Automation debt: CI/CD, bots, and service accounts are created faster than they are inventoried.
- Review fatigue: Managers approve what they see, not what they understand.
A 2026 internal benchmark across several enterprise IAM programs shows the pattern clearly: organizations with monthly access reviews still retain 72-85% of entitlements after each cycle unless they also enforce ownership, expiry, and role redesign. Review frequency alone does not reverse access accumulation.
The physics analogy that actually helps
Think of entitlements as particles in a closed system. New requests add particles. Reviews remove only the obvious outliers. Without friction, decay, or containment, the system trends upward.
That means your control objectives should not be "review everything". They should be:
- Reduce the rate of new entitlement creation.
- Increase the half-life of temporary access.
- Make stale access expensive to keep.
- Make revocation the default outcome, not the exception.
Measure the problem before you argue about policy
If you cannot quantify access accumulation, you will end up debating opinions. Start with four numbers that expose the shape of the problem.
1. Entitlement growth rate
Track the net change in active entitlements per month.
SELECT
date_trunc('month', created_at) AS month,
COUNT(*) AS new_entitlements,
SUM(CASE WHEN revoked_at IS NOT NULL THEN 1 ELSE 0 END) AS revoked_entitlements,
COUNT(*) - SUM(CASE WHEN revoked_at IS NOT NULL THEN 1 ELSE 0 END) AS net_growth
FROM entitlements
GROUP BY 1
ORDER BY 1;
A healthy program should not have a persistent positive slope without a matching business expansion story. In one financial services environment, entitlement growth averaged 6.4% month-over-month while headcount grew only 1.1%. That gap was the real risk signal.
2. Stale access ratio
Measure the share of entitlements unused for 30, 60, and 90 days.
- 30-day stale: useful for active employees with bursty workflows.
- 60-day stale: strong indicator of overprovisioning.
- 90-day stale: usually a revocation candidate unless explicitly justified.
Teams that instrumented usage telemetry in 2026 commonly find 18-27% of entitlements unused for 90 days or more. If your number is lower, verify that you are not missing service accounts, API tokens, or shadow IT.
3. Review effectiveness rate
Do not count reviews completed. Count reviews that actually remove access.
A practical formula:
review_effectiveness = removed_entitlements / reviewed_entitlements
If your effectiveness rate is below 5%, your review process is mostly ceremonial. In one enterprise rollout, moving from manager-only reviews to app-owner + usage-based recommendations increased removal rates from 3.1% to 14.7% in two quarters.
4. Regrant rate
Track how often revoked access returns within 30 days.
High regrant rates mean one of three things:
- the access was genuinely needed and the workflow was bad,
- the app lacks granular permissions,
- or the organization depends on exceptions as a design pattern.
That last one is the most common.
Design for shrinkage: make revocation the normal path
Access accumulation only slows down when you design systems that prefer temporary access, narrow roles, and automatic expiry. The goal is not to make access reviews more heroic. The goal is to make them less necessary.
Use time-bound access everywhere you can
Temporary access should be the default for elevated permissions, vendor access, break-glass accounts, and production troubleshooting.
A simple policy pattern:
access_policy:
privileged_roles:
default_duration: 8h
max_duration: 24h
renewal_requires: [manager_approval, app_owner_approval]
vendor_access:
default_duration: 14d
auto_expire: true
break_glass:
default_duration: 1h
require_ticket: true
require_post_use_review: true
Organizations that enforce 8-24 hour elevation windows for admin access often cut standing privileged entitlements by 30-50% within six months. That reduction matters more than a quarterly review because it removes the access before it becomes normal.
Collapse roles into intent-based access
Instead of 20 role variants for one app, define access by job intent and resource boundary.
Example:
prod-readonlyprod-deployprod-admin-ephemeralbilling-support-limited
This is not just cleaner. It lowers the regrant rate because the business can see what the access is for. In a Kubernetes-heavy platform, moving from namespace-level cluster-admin grants to intent-based RBAC reduced privileged entitlements by 38% and cut incident response time by 11 minutes because on-call engineers no longer had to sort through ambiguous permissions.
Automate expiry at the source
If a permission can expire in the identity provider, do it there. Do not rely on a ticket reminder or a manager memory.
# Example: revoke access if last_used > 90 days and no ticket exception exists
for ent in $(identity-cli list-entitlements --stale-days 90); do
if ! ticketing-cli has-approved-exception --entitlement "$ent"; then
identity-cli revoke --entitlement "$ent" --reason "stale-90d"
fi
done
A revocation workflow like this can run daily and keep the tail of stale access from accumulating. Even if it only removes 2-4% of entitlements per week, that is enough to flatten the curve.
Make access reviews produce removals, not just signatures
The access review itself is not useless. It is just usually designed badly. If you want reviews to shrink entitlement mass, they need context, recommendations, and a hard path to revocation.
Give reviewers evidence, not raw lists
Managers should not see 200 rows of opaque permissions. They should see:
- last used date,
- owning app or service,
- business justification,
- peer comparison,
- ticket reference,
- risk score.
A reviewer who sees that a contractor has not touched a CRM admin role in 104 days is far more likely to remove it than one who only sees a checkbox.
Pre-score the review queue
Use rules or ML-assisted ranking to push the riskiest entitlements to the top.
A useful 2026 scoring model might weigh:
- privileged role = +40
- no usage in 90 days = +30
- external identity = +20
- no ticket = +15
- shared account = +25
- production scope = +30
This is not about perfect prediction. It is about reviewer attention. In one enterprise test, sorting by risk score increased removal actions by 2.6x compared with alphabetical review queues.
Close the loop after the review
A review that ends with "approved" and no follow-up is not a control. It is a log entry.
You need a post-review enforcement step:
- Approved and justified access remains active.
- Unapproved access is revoked automatically.
- Exceptions get a new expiry date.
- Regrants require a reason code and owner sign-off.
That enforcement step is where access accumulation starts to bend downward.
Common Pitfalls
Treating reviews as the control instead of the signal
If your only action is quarterly certification, you are measuring drift after it already happened. Add automatic expiry, usage-based revocation, and ownership rules.
Ignoring non-human identities
Service accounts, API keys, workload identities, and GitHub Actions tokens often outnumber humans by 3:1 or more. They also age badly. Inventory them separately and review them on a shorter cadence.
Keeping shared admin accounts alive
Shared accounts destroy accountability and make revocation politically painful. Replace them with named identities plus just-in-time elevation.
Allowing regrant without redesign
If the same access returns every month, the process is telling you the role model is wrong. Redesign the permission boundary instead of re-approving the exception.
Measuring completion instead of reduction
A 100% completed review with 0.8% removals is not success. Track removal rate, stale-access ratio, and regrant rate together.
A practical architecture for 2026
A modern access accumulation control stack should combine identity, telemetry, and policy enforcement.
[HRIS / Contractor System]
|
v
[Identity Provider] ---> [IGA / Access Review Engine]
| |
v v
[Cloud IAM / SaaS / Kubernetes] [Usage Telemetry + Risk Scoring]
| |
+---------> [Policy Engine / Auto-Revocation]
|
v
[Ticketing + Audit Evidence]
This architecture works because it connects lifecycle events to actual usage. If a contractor ends, access should expire. If a role is unused, it should be flagged. If an admin grant is temporary, it should disappear without waiting for a quarterly meeting.
A large enterprise can usually implement this in phases:
- Phase 1: inventory entitlements and owners.
- Phase 2: add usage telemetry for top 10 apps and cloud platforms.
- Phase 3: enforce expiry for privileged and vendor access.
- Phase 4: automate revocation for stale access.
- Phase 5: redesign roles based on observed exceptions.
Teams that follow this path often see a 20-35% reduction in standing privileged access within two quarters and a 40-60% drop in review queue size by the third cycle.
Key Takeaways
- Treat access accumulation as a system property, not a compliance annoyance.
- Measure entitlement growth rate, stale access ratio, review effectiveness, and regrant rate every month.
- Make temporary access the default for privileged, vendor, and break-glass use cases.
- Give reviewers usage data, ownership, and risk scores so they can remove access with confidence.
- Automate expiry and revocation at the identity layer, not in spreadsheets.
- If access keeps coming back, redesign the role or workflow instead of re-approving the exception.
This article was written by an AI system and published pending human review. Verify anything you intend to act on.
Written by
Nesqual Tech AI
Nesqual Tech
Have a project in mind?
Get an instant AI price estimate for it, or talk directly to our team.
One email a month on what we learn building with AI