Safeguard
Security Guides•

How long should contractor and intern access last?

Access should end on the contract or internship end date. Set expiry at grant time, cap token lifetimes, review at the midpoint. No expiry, no offboarding.

Safeguard Security Team
3 min read

Access should end on the contract or internship end date, with the expiry set when access is granted, not remembered later. Cap token lifetimes below that date, review at the midpoint, and treat any extension as a new approval. Open ended access for short term people is the common failure.

Why short term people need different handling

Interns and contractors arrive in groups, work on a defined scope, and leave on a known date. That predictability is an advantage. You know in advance when access should stop, so you can build the stop into the grant.

The risk is the opposite. Nobody owns them after the start, their manager changes, the end date slips by a week, and the account lives on for months.

Set the end date at grant

  1. Record the end date in your identity provider. Many providers support an account expiry or a scheduled deactivation.
  2. Put the same date in the access ticket. The approver sees both what and until when.
  3. Give group membership with expiry where your tooling supports it, or schedule a removal task.
  4. Make extensions a new ticket with a reason. A manager's chat message is not an extension.

Cap tokens below the end date

Personal tokens outlast accounts if you let them. GitHub's organization token policy lets owners cap maximum lifetime, with separate settings for fine-grained and classic tokens. The documentation says fine-grained tokens default to a 366 day maximum, and classic tokens have no expiry requirement by default. Tokens beyond the limit are blocked from the organization but not revoked.

For a three month internship, a 366 day default is far too long. Set the cap to something you can defend, require approval for fine-grained tokens, and restrict classic tokens unless needed.

Scope matters as much as time

DimensionStarting point for short term people
RepositoriesOnly the project they work on, at Write
EnvironmentsDevelopment and sandbox
DataSynthetic or masked
SecretsNone shared, scoped credentials if needed
DevicesCompany managed where possible, or a remote dev environment
Admin rolesNone

Midpoint review

At half time, ask the supervisor to confirm the person still needs what they hold. Contractors often finish a phase early and keep phase two access they never used.

The last week

  • Confirm the handover document exists.
  • Collect equipment.
  • Schedule the deactivation for the end of the final day.
  • Rotate anything shared they could read.
  • Keep a record of the date access ended.

If they might return

Interns who return next summer should be offboarded cleanly and onboarded again. Reusing a dormant account skips review and keeps stale permissions. GitHub keeps removed member data for three months, so a quick re-invite can restore old state. Decide deliberately whether you want that.

Quick check

Can I just remember to remove access on the last day?

Memory fails. Set the expiry when you grant access and add a ticket as a backstop.

What is a good token lifetime for an intern?

Shorter than the engagement. Pick a figure your team can enforce, and require approval.

Safeguard's policies and compliance evidence automation can help you show that expiry and review steps happen. A free scan is available at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.