Keys and limits for agents
Give each agent or CI job its own key. A key label helps you recognize a job; the real security boundary comes from scopes, restrictions and the key hierarchy. The Full preset deliberately excludes keys:manage. Do not give an agent the account owner's console session.
Restrict the job
| Field | Effect |
|---|---|
computer_ids[] |
The key works only on these computers (this also limits access-token minting and SSH-key pushes) |
private_image_ids[] |
Private image IDs this key may list, inspect, use as create sources, or delete, subject to endpoint scopes. For a computer-restricted key, omission means no private-image access. For an unrestricted key, omission means all of the account's private images. An explicit empty list means none. Public images remain usable subject to existing scopes |
metadata_selector |
For example {"env":"ci"}: the key sees and creates only computers with these labels |
ip_allowlist[] |
CIDRs the key, and access tokens it mints, may be used from |
expires_at |
A future UTC time, at most 365 days ahead. Omitted on a root key means no expiry; a child key inherits its parent's effective deadline and cannot extend it |
max_running_cost_per_hour_usd |
Refuses (403 key_cost_limit) any create, start, resume, PATCH mode=always_on, resize or snapshot that would push the hourly cost of the computers this key controls above the limit |
A restricted PATCH must satisfy computer_ids and metadata_selector against both the existing computer and the proposed result; otherwise it returns 403 key_restricted and changes nothing. A computer created by a key, or one that a key subjects to a cost-increasing action, is attributed to that key and every parent key. Every applicable budget is enforced together. Attribution survives relabeling, key rotation, expiry and revocation, and lasts until the computer is deleted. Creating a child key cannot reset or multiply a parent's budget.
Restriction limits: computer_ids and private_image_ids up to 100 unique IDs each; ip_allowlist up to 32 distinct CIDRs of at most 64 characters; metadata_selector up to 16 keys (key length up to 64, value length up to 256); and the restriction JSON in total at most 16,384 bytes. Oversized or duplicate collections return 400 invalid_request before anything is written.
Issuance and cost
There are at most 100 active keys and 100 issuances in a rolling 24-hour period, including child keys and console issuance. The active-key cap is a 403 refusal; the issuance budget is a 429 with Retry-After. Revocation remains available at the cap. An exact replay does not consume another issuance.
The Agent preset grants computers:read, computers:exec, computers:keepalive and events:read; normally bind it to specific computer_ids. CI can create and manage permitted computers and snapshots but has no computer-delete, billing or key-management permission. Access scopes can narrow data actions further.
When you rotate a key, only the new secret is shown at issuance. Read Authentication for the complete subset rule and Pricing for account-level spend limits, which are independent of a key's hourly cost limit.
Dory is in development; these pages describe the planned service and may change. Questions: support@computeengines.com.