The spreadsheet shows up two weeks before the audit. Forty-three apps, two hundred and thirty users, twelve thousand individual entitlements. Twenty-eight managers get an email. Most reply "looks good" within an hour. A handful raise a flag. The IT team chases down the rest, exports CSVs from admin panels nobody else has logged into in years, and assembles the evidence packet by Friday.
The auditor leaves. The next quarter, the spreadsheet shows up again.
Most companies call this an access review. The auditor calls it adequate. The reviewers, if pressed, call it what it is: a quarterly performance of governance that doesn't change much. The orphaned account from last June is still there. The contractor who left in March kept their SAP access until someone noticed. Nobody is lying. The process just wasn't built to actually find these things.
What "with teeth" means
A review with teeth produces three things the spreadsheet review cannot.
Specific decisions. Not "looks good" across a hundred entitlements. A reviewer sees what a person actually does in an app, has a baseline to compare against, and approves or removes per entitlement. The decision is meaningful because the context is meaningful.
Actions that fire. The approve or remove decision translates into a revocation in the app. Not a follow-up Jira ticket. Not an IT manager logging into thirteen admin panels at midnight. The action happens.
Evidence that assembles itself. The full timeline, with timestamps, with the reviewer's identity, with the policy that triggered the review, with the action and its outcome. Exportable. Mapped to SOC 2 CC6.2, ISO 27001 A.5.18, HIPAA §164.308(a)(4). When the auditor asks, you click export, not "give me until Tuesday."
If a review produces all three, it bites. If only the first one fires (decisions with no follow-through), it's theater. Worse is the third one alone: evidence that says reviews happened, without proving they meant anything. That's the configuration most companies have right now.
Why most access reviews fail
The structural reason is that the tooling was built around the audit, not around the work.
The scale problem. A growing company with 800 people on 40 apps generates tens of thousands of entitlements. The honest way to review that volume is per-entitlement, per-quarter, with context. Nothing about the typical access-review workflow makes that possible. The reviewer gets a flat list, no context about what the entitlement does, no signal about whether the person uses it, and a deadline. The rational behavior in that situation is to rubber-stamp. The system is producing the rubber stamps.
The evidence problem. Evidence in most companies is scattered. The CSV from Okta with group memberships. The Slack thread where someone mentioned an exception. The Jira ticket that documented a contractor's elevated access. The screenshot the IT team took to prove the offboarding ran. None of it is structured. None of it ties to a policy. The week-before-audit work is reconstructing a story from artifacts that were never written to be evidence.
Both problems compound. Scale produces rubber-stamp decisions, which produce evidence that says reviews happened without proving they meant anything. Auditors catch this. So do internal compliance teams who care about the outcome.
What it takes to make a review bite
Four conditions. All four, or you're closer to theater than governance.
One source of truth for access
The HRIS knows who works there, in what role, in what status. SSO knows who can authenticate. Iden knows what each person can actually do, per app, per resource. When a review starts, it pulls from one place. Not five.
Reviewer routing tied to ownership
The right person to review someone's GitHub repository access is their engineering manager, not the IT team. The right person to review a finance-system grant is whoever owns that system, not the people-manager. The mapping has to live in the system, and it has to update when ownership changes. Otherwise reviewer routing decays into "whoever was in that role two years ago."
Decisions that translate to action
"Remove" in the reviewer view means the access is removed. Not flagged for removal. Not added to a Jira queue. Removed. The mechanism that handled provisioning handles deprovisioning at the same granularity. Channel-level, repository-level, project-level, wherever the original grant sat.
Continuous evidence assembly
The evidence isn't built the week before the audit. It's built every time a review action runs, in a structured format that maps to the control. SOC 2 CC6.2 (logical access provisioning), CC6.3 (deprovisioning). ISO 27001 A.5.18 (access rights review). HIPAA termination procedures. The mapping is in the system. The export is one click.
Patterns that break access reviews
Five failure modes, named so you can spot them.
The rubber stamp. Manager opens the review, sees thirty entitlements, has no context for what most of them do, and approves all of them in ninety seconds. This is the default outcome of any review that doesn't give reviewers anything to look at besides a flat list.
The spreadsheet. Reviews run by exporting access lists from each app into a CSV, consolidating manually, sending to managers as Excel files, collecting replies, reconciling, and then doing revocations by hand back in each app. Multiple steps, multiple handoffs, multiple places for the chain to break.
Group-level only. The review says "is this person still in the Engineers group?" Manager: "yes." But the person has eight individual repo grants, three database roles, and an admin permission in the staging environment that no group represents. None of those get touched.
The reviewer who left. The reviewer for an entitlement is hardcoded as a specific person. That person quit two quarters ago. The review keeps going to their old email. Nothing happens. Nobody notices until the auditor asks who reviewed what.
The exception that became the rule. Someone needed elevated access for one project. It got approved with a note. The note didn't have an expiry. Two years later the elevated access is still there and nobody remembers why.
What a working quarterly cycle looks like
The HRIS, SSO, and connected apps push their current state into one system. The system assembles per-reviewer views: for each person they manage or each system they own, here's what was granted, when, by whom, and what's actually being used. Reviewers approve or remove per entitlement. Removals fire automatically across the relevant apps within minutes. Exceptions are captured with an expiry. The audit trail writes itself in the format the auditor will ask for.
At the end of the cycle, the IT manager runs an export. That is the evidence packet. The next cycle inherits the state of the last one, so reviewers only see what changed and what's overdue, not the full list again. Most teams move from quarterly to continuous within a few cycles. The same mechanics support either.
Where Iden fits
Iden is built around this model. The HRIS feeds joiner-mover-leaver. SSO and Iden together produce the entitlement view per person, per app, per resource. Reviewer routing follows ownership. Decisions translate to action through the same provisioning layer that handled the original grant. Audit evidence lands in your GRC platform (Drata, Vanta, Secureframe) automatically, mapped to the relevant controls.
"Access reviews finally have teeth. Employees, security, GRC, auditors. Everyone's happy."
Director of IT, 580-employee fintech
The teeth aren't a metaphor. The gap is between a process that collects signatures and one that produces revocations. That's the gap this layer closes.