All three actions live in the console Keys screen
(
/console/token). Creating, editing, disabling, or deleting a key
requires the Developer role or above; any role (Viewer and up) can
read the list.1. Create a key
A new key is born scoped. Rather than minting one broad credential and sharing it, give every agent or service its own key with exactly the limits it needs — that’s what keeps a compromised agent’s blast radius small (see Least-agency checklist). In the console, open Keys → New key and set:Name & environment
Name & environment
A human-readable name and a free-form
environment label
(prod, staging, dev, or anything you like) you can later filter
logs by. See Environments.Limits
Limits
Model allow-list, IP allow-list, a USD spend cap, and an expiry —
each optional, each narrowing what the key can do. See
Model limits,
IP allow-list, and
Quota cap & expiry.
Policy attachments
Policy attachments
A guardrail (
guardrail_id) and a firewall policy
(firewall_policy_id) to govern this key’s content and tool calls.
See Bind policies./v1/* relay calls use the sk-orca-… key. The console actions on
this page run on your session / access token, not the relay key.
2. Disable a key (the reversible pause)
When a key is misbehaving — a runaway loop, a leaked credential you’re still investigating, a service you’re taking offline for maintenance — you don’t have to delete it. Disabling flips the key’s status off so every request it makes is rejected, while the key, its limits, its policy attachments, and its usage history all stay intact. In the Keys list, toggle the key’s status to Disabled. To re-enable it later, toggle it back. A key can be in one of these states:| Status | Meaning |
|---|---|
Enabled | Active; requests are authorized. |
Disabled | Paused by you; requests are rejected until re-enabled. |
Expired | Past its expired_time; reached automatically. |
Exhausted | Hit its quota / spend cap; reached automatically. |
Expired and Exhausted are reached on their own — a key past its
expiry or over its
spend cap stops authorizing without
any action from you.
3. Revoke a key (permanent)
When a key is done — the agent is decommissioned, the credential is confirmed leaked, the project shipped — revoke it by deleting it. This is permanent: the credential can never authorize a request again, and a deleted key is not recoverable. Issue a fresh key for any replacement. In the Keys list, choose Delete on the key (Developer+). To clear out several at once, select them and delete as a batch.4. Re-revealing and rotating
A key’s plaintext is masked everywhere in the console after creation. A Developer+ can re-reveal an ordinary key’s plaintext on demand; re-revealing a gateway-scoped key (is_firewall_gateway) requires
Admin.
Rotation is the safe-handoff pattern: create the replacement key, move
your traffic to it, then disable (and later delete) the old one — so
there’s never a window with no working key. The full step-by-step lives
in Key rotation.
5. Who can do what
Every lifecycle action is role-gated against your active workspace:| Action | Minimum role |
|---|---|
| View the keys list | Viewer |
| Create / edit / disable / delete a key | Developer |
| Re-reveal an ordinary key’s plaintext | Developer |
Enable is_firewall_gateway, or read a gateway key’s plaintext | Admin |
6. Next steps
The token object
Every field a key carries, and what each one constrains.
Bind policies to a key
Attach a guardrail and a firewall policy so the key’s traffic is
governed.
Key rotation
The zero-downtime handoff from an old key to a new one.
Leaked key response
What to do the moment you suspect a key is exposed.
