Joiner · Mover · Leaver

Offboard so access actually ends.

Disabling someone in your IdP doesn't end their access in apps that keep their own authority. Passage runs the two-step leaver — remove the seat and revoke the OAuth grant/token — and won't let the run close while a token is still live. Every account, license, group, and laptop, in one tracked run, proven and audit-ready.

Seat and OAuth-token revocation Residual-token closure gate Hashed access-ended proof
leaver · run #PA-2287 Executing
JO
Jane OkaforEngineering · last day today 5:00pm
Disable Entra accountaccountEnabled=false
GitHub · remove seatDELETE memberships
GitHub · revoke OAuth grant + tokensresidual kill
Reclaim licenses · remove groups−3 seats · $111/mo
🔒 Closure gate blocks: seat removed, OAuth token still live sha256 · 9f3c…b41a

Join

Create accounts, grant least-privilege access, assign a device — from a role template.

Move

Role or department change: grant the new access and revoke the old — the step most tools forget.

Leave

Disable the account, remove every SaaS seat and revoke its OAuth tokens, reclaim licenses, demand the laptop back — and prove access actually ended.

SOC 2 CC6.x evidence HIPAA §164.308(a)(3) NIST 800-171 / CMMC ISO 27001 A.5.18 🔒 Tokens encrypted, never in the browser 🇨🇦 PIPEDA · data-residency pinning

What a glorified checklist can't do

At the price of a checklist app, Passage gives an SMB real deprovisioning, device return, and an audit trail an assessor will accept.

Deprovisioning that actually ends access

For every non-federated SaaS app, the leaver removes the seat AND revokes the OAuth grant/token — because disabling the IdP alone leaves working tokens behind. Access ends only when both halves are done.

Edge vs BambooHR & Okta
🔎

Finds the shadow OAuth apps

OAuth-grant discovery queries each app for the user's actual grants — surfacing self-authorized apps and personal tokens no template anticipated, so a shadow integration doesn't keep access after you "offboarded" them.

Nobody else surfaces this
🛡️

A leaver can't close with access live

The closure gate hard-blocks if a seat was removed but its OAuth token is still live — plus device return and every critical step. Closing emits hashed, tamper-evident proof that access was ended, not just that the IdP was disabled.

Nobody else closes this loop
💰

Reclaims licenses & proves the savings

Every paid seat the role carried becomes a reclaimable license; the evidence rolls up the monthly/annual dollars freed. Plus device return enforced via Cairn — no SSO tax, no impl fee, BYO-key AI.

The market wedge

The 4:55pm-on-a-Friday problem

27%

of cloud breaches in 2024 involved misuse of dormant credentials — many tied to orphaned accounts that offboarding never disabled. The HR action ("Jane is leaving Friday") and the IT action ("disable Jane's accounts") live in separate systems, on separate timelines. That gap is where former-employee access lingers.

Passage runs the leaver as a single tracked run: accountEnabled=falserevokeSignInSessions → for each SaaS app, remove seat + revoke OAuth token → reclaim licenses → device return → evidence. A critical step can't be skipped — and the closure gate won't let the run finish while a seat was removed but its OAuth token is still live.

Disabling the IdP doesn't end access. We do.

Roughly 40% of departed employees keep access to at least one app — because non-federated SaaS keeps its own authority, and any OAuth grant the user authorized keeps issuing working tokens long after the IdP disable.

Two halves, both critical

To truly end access in a non-federated app — GitHub, Salesforce, Atlassian, Zoom, Slack — a leaver needs both: seat removal (no interactive login) and OAuth grant/token revocation (no programmatic access via already-issued tokens). Role templates emit both for every app the role used.

Discovery finds the shadow apps

A template only assumes which grants a person holds. Discovery queries each app for the user's actual authorized grants — surfacing a personal automation tool or API token no template planned to revoke. A discovered grant is flagged covered or uncovered so nothing slips through.

Proof access actually ended

An "Access ended" panel shows, per app, seat removed ✓ + OAuth token revoked ✓ → access ended, or flags residual access risk. The result, with each call's method/endpoint and before/after, is written into the closed run's hashed evidence as saasAccessEnded.

Passage builds and orchestrates the provider-correct calls and captures the evidence; in this build the live connector calls are simulated behind a boundary (the API shapes are wire-accurate, the live execution is on the roadmap). Discovery returns realistic fixtures, including a planted shadow grant, rather than querying live. See the two-step deprovisioning docs.

Offboarding that proves itself

One completed run, evidence across every framework — collected once, satisfies many.

HIPAA

§164.308(a)(3)(ii)(C) termination procedures — the access-removal proof your Security Officer needs.

SOC 2

CC6.2 / CC6.3 — logical access provisioned and de-provisioned, with timestamped action logs.

NIST 800-171 / CMMC

3.1.1 / 3.5.6 account management and least privilege — straight into your Bastion SSP & SPRS narrative.

NIST CSF 2.0

PR.AA identity & access — posture flips green in Sightline with Passage as the evidence source.

ISO 27001

A.5.18 access rights & A.5.11 return of assets — device-return enforcement on the record.

Portable evidence

Hash-anchored, signed, exportable. Take it with you — no renewal-escalation lock-in.

Works with your stack — not another tool to run

Passage isn't a separate system your team has to remember. It syncs with your HRIS, is triggered by HR events, drives your identity provider to disable accounts and revoke sessions, ends access in your non-federated SaaS (seat + OAuth-token revoke), and opens and closes tickets in your ticketing system — then tells your team in Slack. One run, across the tools you already pay for.

🧑‍💼

HR / HRIS

A hire or term-date in Workday or BambooHR auto-drafts the joiner or leaver run — the HR action and the IT action finally on one timeline.

Triggered by HR events
🔑

Identity (IDP)

Microsoft 365 / Entra, Google Workspace, Okta, JumpCloud — provider-correct disable, session-revoke, license and group steps. JumpCloud app access handled through group membership, the right way.

Real deprovisioning
🎫

Ticketing (ITSM)

Opens a deprovisioning ticket in ServiceNow or Jira Service Management when the run starts, and closes it with the evidence attached when the run completes.

Opens & closes tickets
🔐

Non-federated SaaS

GitHub, Salesforce, Atlassian, Zoom, Slack keep their own authority — so Passage removes the seat and revokes the OAuth grant/token, and surfaces shadow grants. Notify in Slack; a generic webhook covers the long tail.

Ends access for real
Workday BambooHR Microsoft 365 / Entra ID Google Workspace Okta JumpCloud ServiceNow Jira Service Management Slack GitHub Salesforce Atlassian Zoom Cairn — device lifecycle Generic webhook / API

Built for the person who runs offboarding at 4:55 on a Friday

IT managers, MSP leads, and fractional CISOs who have to prove the door closed.

"We used to offboard off a spreadsheet and pray the assessor didn't ask for proof. Now the run produces the evidence and the laptop can't fall through the cracks."

IT Manager50-person SaaS · early access

"The closure gate is the whole thing. A leaver run literally can't finish until the critical deprovisioning is done or waived with a reason. That's the control I was faking in a checklist."

MSP Lead22 client tenants · early access

"Same offboarding evidence satisfied our SOC 2 and our 800-171 line items. Collected once, reused across frameworks — that alone paid for it."

Fractional CISODefense supplier · early access

Early-access voices — representative of our design-partner program. Named case studies on the way.

Per managed employee. No platform fee, no SSO tax.

Annual billing −15%. The free tier actually disables accounts.

Free

$0

Local-first / privacy-first

  • 1 connected tenant
  • M365 or Google
  • Unlimited manual-step runs
  • 5 automated runs/mo
  • CSV evidence export

Team

$13/user/mo

Compliance-driven

  • HRIS trigger ingestion
  • App connectors
  • SLA timers + escalation
  • Manager self-service
  • BYO-key AI features

MSP

$6/user/mo

Volume, annual

  • Multi-tenant console
  • Per-client branding
  • Cross-client reporting
  • Consolidated billing

More, for less than the incumbents

The same $6–$13 band — but device return, portable evidence, and no SSO tax are included, not extra. Compared at a typical 100-managed-user team.

Capability Passage
Pro / Team
Rippling (IT) Okta Lifecycle BambooHR + IT
Entry price for real JML $7.50–$13/user/mo · no base ~$8 base+ $7–$8 device/app modules $4 add-onbut requires ~$14 base (SSO tax) $17 Pro+ IT-onboarding add-on
Implementation feeNone$2k–$20k+Pro services common5–15% of annual
Free tier that actually disables accountsYesNoNoNo
Real deprovisioning (disable + revoke sessions)YesYesYesChecklist only
Ends access in non-federated SaaS (seat + OAuth token revoke)Yes — both halvesUnevenFederated onlyNo
OAuth-grant discovery — finds shadow appsYesNoNoNo
Residual-token closure gateYes — hard blockNoNoNo
Human-task orchestration in the same runYesPartialNoYes (no real provisioning)
Device-return enforced as a closure gateYes (Cairn)Device mgmt, not gatedNoNo
Mover diff — revoke stale access on role changeYesRole-basedPartialNo
Hash-anchored, portable audit evidenceYes — exportableLogs in-platformLogs in-platformNo
Cross-framework compliance push (SOC 2 / HIPAA / 800-171)Yes — built inNoNoNo
No SSO tax / no platform feeYesPlatform feeSSO taxHR platform required
MSP multi-tenant consoleYes — $6/userLimitedEnterpriseNo
$0

No implementation fee

Rippling charges $2k–$20k+ and BambooHR 5–15% of annual to onboard. Passage is self-serve from the free tier.

~$14

No SSO-tax base

Okta's $4 Lifecycle add-on rides on a ~$14/user Core base. Passage's $7.50 Pro has no base to buy first.

Included

Device + evidence

Device-return enforcement and portable audit evidence are in the price — not separate modules or unavailable at all.

Competitor pricing reflects publicly reported 2026 list pricing (PeopleManagingPeople, AccessOwl, costbench) and stacks modules/base fees as documented; vendor pricing changes — verify current terms directly. Full comparison & sources →

Nobody keeps access they shouldn't.

Run your first offboarding in minutes — local-first, no card, no implementation call.

Start free