HomeBlog › Offboarding Security

The Security Tasks Everyone Forgets During Offboarding

Most companies handle the obvious offboarding steps: disable the email account, collect the laptop, revoke building access. The problem is the less obvious steps. SSH keys on production servers. Personal access tokens in GitHub. OAuth grants that persist after SSO is disabled. Shared passwords in a vault that were never rotated.

These are the gaps that create security incidents. A departing employee does not need to be malicious for this to matter. Unrevoked credentials are an attack surface. If that employee's personal device is compromised six months later, the attacker inherits every credential you never cleaned up.

SSH keys

Engineers add SSH keys to servers, jump hosts, and Git providers. Over time, a single developer might have SSH keys deployed across a dozen systems. When they leave, the keys stay unless someone actively removes them.

The problem is inventory. Most companies do not maintain a central list of where each employee's SSH keys are deployed. The key is added during setup and forgotten. Six months later, nobody knows which servers have a former employee's public key in their authorized_keys file.

What to do:

Personal access tokens and API keys

GitHub personal access tokens, Jira API tokens, AWS access keys, GCP service account keys. These are long-lived credentials that often outlast the employee who created them. Unlike SSO-backed sessions, they do not expire when you disable the user's identity provider account.

The risk is significant. A GitHub personal access token with repo scope gives full read/write access to every repository the employee could access. If that token was stored in a CI/CD pipeline, a local config file, or a password manager the employee takes with them, it remains functional until explicitly revoked.

What to do:

Disabling SSO is not enough. SSO controls session-based access. Personal access tokens, API keys, and SSH keys bypass SSO entirely. Disabling someone's Okta account stops them from logging into the web UI, but any long-lived tokens they created remain valid.

OAuth grants and connected apps

Employees connect third-party apps to company services: GitHub Apps, Slack integrations, Jira OAuth connections, Google Workspace third-party access. These OAuth grants often persist after the employee's account is disabled.

A common scenario: an engineer connects a personal CI tool to the company GitHub org. They leave. The OAuth grant remains, and the tool still has access to company repositories through the departed employee's authorization.

What to do:

Shared credentials and secrets

Teams share credentials. Database passwords, API keys for third-party services, admin passwords for SaaS tools that do not support SSO. These live in password managers (1Password, Vault, LastPass) or sometimes in environment variables, config files, and Slack DMs.

When someone leaves, every shared secret they had access to should be rotated. This is the most frequently skipped step because it is the most tedious. Rotating a database password means updating every service that connects to that database. Nobody wants to do this on a Friday afternoon when someone's last day happens to be.

What to do:

Cloud infrastructure access

AWS IAM users, GCP IAM bindings, Azure RBAC assignments. Cloud providers have their own identity layers that may not be fully connected to your SSO. Even with SSO federation, some access may have been granted directly (an IAM user with console access, or a service account key downloaded to a local machine).

What to do:

Code ownership and deploy access

This is less about security and more about operational risk. If the departing employee was a CODEOWNERS entry, a required reviewer, or the only person with deploy access to a specific service, their departure creates a gap.

What to do:

Making this repeatable

The reason these tasks get skipped is not that people do not know about them. It is that they are not in the checklist. If your offboarding process is a mental list or a Google Doc that has not been updated since 2023, security tasks will be missed.

The fix is a structured checklist that includes every security task, assigned to the right person, with a due date of the employee's last day or sooner. The Engineering Offboarding template in TeamOps includes all of the above. For the broader offboarding process including HR and legal tasks, see the full offboarding checklist.

TeamOps handles this inside Jira. Free for up to 10 users.