Teams AI Governance
AI Governance

Who owns the API key?

Everyone on the team is using AI. Nobody is sure which credentials they're using, whose name the account is under, or what happens when someone leaves. This is the governance problem teams don't talk about until it becomes urgent.

AI access at most companies is an accident waiting to happen.

It starts with one person creating an API key. Then a second person needs access, so they get the key too. Then a contractor needs it. Then someone pastes it into a shared .env file in the repo. Then that person leaves.

At no point did anyone say this was fine. It just happened, incrementally, because there was no structured alternative.

The engineer

The key is in the .env.local. Everyone has a copy.

It was the path of least resistance. Now it's in six engineers' home directories, maybe a few editor config files, probably the CI logs from that one incident in March.

The contractor

They finished the project four months ago. The key still works.

Nobody thought to revoke it. There's no list of who has which keys. The contractor probably still has access and either doesn't know it or doesn't care.

The security team

Someone asks: can you show me who has access to the AI APIs?

The honest answer is no. There's a billing dashboard that shows usage, but nothing that maps requests to identities, and no way to know which keys are still live.

The offboarding checklist

There's no line item for AI credentials.

The IT runbook covers email, GitHub, Slack, AWS. It has not been updated for the reality that engineers now have personal access to a dozen AI provider accounts.

What happens when someone asks you to prove control?

Not "what do you think is probably true." Prove it. With a timestamp and a name.

Which engineers currently have access to your Anthropic API? unknown
When did the contractor who left in February last make a request? no record
Who made the 4am request that spiked your bill last month? no record
How many active tokens exist right now? unknown
Can you revoke a single engineer's access in under a minute? no

One key at the proxy. One token per person.

Tenure sits between your engineers and the AI provider. Your org's real API key lives in one place. Every engineer authenticates through their own personal access token. Access is per-identity from the start.

🔑

Personal access tokens

Every engineer gets their own PAT. Their token is theirs. Their requests are attributed to them. Revoking one person's access doesn't require rotating a shared key or touching anyone else's setup.

PAT per user
🌐

Central proxy

The actual provider API key lives in one place: the Tenure deployment inside your cluster. Engineers never see it. It never lives in a .env file. It never leaves your infrastructure.

Zero credential scatter

SCIM deprovisioning

Tenure integrates with your identity provider via SCIM. When you deprovision an engineer in Okta, Azure AD, or Google Workspace, their Tenure access is revoked automatically. No manual step. No gap.

Automatic offboarding
📋

Full audit trail

Every request through the proxy is logged with identity, timestamp, and last_used_at per token. Stale tokens are visible. Active sessions are visible. Nothing is inferred from billing data.

last_used_at per token

Every request. Every identity. Every timestamp.

The audit log isn't something you construct after an incident. It's written as requests happen. When someone asks who made a request at 4am, you open the log and show them.

Timestamp Identity Action Status
2025-06-07 04:13:22
marcus.chen
proxy.request
active
2025-06-07 09:41:05
priya.nair
proxy.request
active
2025-06-07 10:02:48
priya.nair
token.issued
issued
2025-06-07 11:15:33
j.contractor (ext)
token.revoked
revoked
2025-06-07 14:27:11
dev.team (scim)
scim.deprovision
auto
2025-06-07 16:55:09
marcus.chen
proxy.request
active

One step in your IdP. Zero manual cleanup.

The offboarding gap exists because AI credentials were granted outside the identity system. Tenure closes that gap by making your IdP the source of truth for access.

HR
Trigger

Engineer is offboarded in your IdP

One step in Okta, Azure AD, or Google Workspace. The same step that revokes their email and GitHub access.

Automatic

SCIM pushes a deprovision event to Tenure

The identity provider calls Tenure's SCIM endpoint. No webhook configuration. No cron job. No manual step from your engineering team.

Automatic

All PATs for that identity are revoked

Every personal access token associated with the user is invalidated immediately. Existing sessions are terminated. The audit log records the event with the SCIM caller as the actor.

📋
Result

Provable. Timestamped. Done.

The audit log shows exactly when access was revoked, by which mechanism, and confirms zero successful requests after that timestamp. You can show this to anyone who asks.

See which tokens are dormant before they become a liability.

last_used_at is stored on every PAT. Admins can see, at a glance, which tokens haven't been used in weeks or months. Stale tokens can be rotated or revoked on a schedule, not reactively after an incident.

Token name Owner Last used Scope
tok_mc_vscode_01 marcus.chen 2 hours ago proxy:read
tok_pn_cursor_01 priya.nair today proxy:read
tok_ak_ci_agent alex.kim 47 days ago proxy:read
tok_jc_vscode_01 j.contractor (ext) never (revoked) none
tok_tr_shared_dev tom.r 61 days ago proxy:read

AI access that your security team can actually audit.

Deploy Tenure inside your cluster. Connect your identity provider. Every engineer gets their own PAT, every request is attributed, and offboarding is one step in your IdP.

Helm chart · OIDC / SCIM · MIT licensed · No call-home telemetry