Key stores
| Store | Prefix | Used by | Scope |
|---|---|---|---|
| Organization Keys | tg_ | Runtime agent/sensor, MCP/AI assistants, direct API integrations | Full organization access — treat like an admin credential |
| IDE Keys | tgide_ | VS Code and JetBrains extensions | Authenticate a developer’s IDE; back the device footprint and AI-spend views |
| CI/CD Keys | tgci_ | The TigerGate CLI in pipelines | Submit scans, upload results, evaluate the quality gate (scan, upload, quality_gate) |
The MCP / AI Assistant sub-tab is a connection guide, not a separate key store. AI assistants (Claude, Cursor, VS Code) authenticate to the MCP server with an Organization key (
tg_…) — mint one on the Organization Keys tab, then paste it into a client snippet.Keys are region-scoped
Every key belongs to the region whose dashboard minted it. Regions are independent, so a key issued in one is rejected by every other — there is no key that works across regions. This matters because the failure is a plain401, indistinguishable from a wrong or revoked key. If a key you just created is rejected:
Check which region minted it
The dashboard you created the key on is its region.
app.tigergate.dev is us1; every other region uses its own host.tigergate regions plus the error text is usually enough to spot the mismatch.
Create a key
Open the right sub-tab
Go to Settings → Organization → API Keys and select Organization Keys, IDE Keys, or CI/CD Keys.
Create the key
Click Create Key (or Create IDE Key / Create CI Key). Give it a descriptive name — e.g.
acme-prod-dc1, gha-ci-prod, alice-laptop. IDE and CI/CD keys also let you pick an expiration.Expiry
Expiry options depend on the store:| Store | Expiration choices |
|---|---|
| Organization Keys | No expiration (created without an expiry from the dashboard) |
| IDE Keys | No expiration, 30, 90, 180, or 365 days |
| CI/CD Keys | No expiration, 30, 60, 90, 180, or 365 days |
expires_at passes, requests are rejected with 401.
Revocation
| Store | How | Effect |
|---|---|---|
| Organization Keys | Revoke, rotate, or delete | Revoke marks the key dead and it stops authenticating immediately. Rotate issues a new secret in place, so integrations keep the same key entry. Delete removes it outright |
| IDE Keys | Delete from the key list | The key is removed; every IDE device using it is signed out until a new key is pasted |
| CI/CD Keys | Revoke from the key table | The key is marked revoked and stops authenticating |
--set backend.apiKey=… for the sensor, or the relevant .env), roll out (docker compose up -d / kubectl rollout restart), then delete the old key.
Storage
Only a SHA-256 hash of the key is stored, plus a short prefix to identify it in the dashboard list. Authentication hashes the presented key and looks up that hash — there is never a plaintext comparison. Pass an Organization key viaAuthorization: Bearer tg_… or the X-API-Key header — never in a query string, where it would land in access logs.