Synopsis
Every API error uses a JSON Problem Details response. Each response carries a stable error code and documentation URL. Use the error code for program logic. Use the request identifier when you contact support.Example with output
{
"docs_uri": "https://docs.agentsfleet.net/api-reference/error-codes#UZ-AGT-009",
"title": "Fleet not found",
"detail": "No fleet with id '0198a7ba-2c1d-7f08-8a45-3e9b6d2f1c70' in this workspace.",
"error_code": "UZ-AGT-009",
"request_id": "0198a7b5-3c8d-7e41-9a2b-6f1d4c7e8a05",
"user_message": "We couldn't find that Fleet. Check the workspace and fleet identifier."
}
Options
The error format has no client option. Every response contains the first five fields below. A conflict response also containscurrent_state. Some errors contain user_message.
| Field | Effect | Default | Unit or range |
|---|---|---|---|
docs_uri | Links to this error. | Included | URL |
title | Gives a stable short label. | Included | Text |
detail | Explains this failure. | Included | Text that varies by request |
error_code | Identifies the failure for client logic. | Included | Registered code below |
request_id | Identifies the request for support. | Included | Server-generated value |
current_state | Names the state that blocked a change. | Omitted | Included on HTTP 409 responses |
user_message | Gives text safe to show to a user. | Omitted | Included when the error defines one |
Errors
Find the code shown in your response. Each row gives the cause and next action. Rows marked Retired preserve old links; their HTTP column shows the former status. Use the current response or event details when diagnosing a new failure.Identifiers
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-UUIDV7-009 | 400 | Invalid identifier shape | The identifier is not a valid version 7 universally unique identifier (UUID). Use identifiers returned by agentsfleet. |
Service failures
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-INTERNAL-001 | 503 | Service unavailable | A required service is unavailable. Try again shortly. |
UZ-INTERNAL-002 | 500 | Request failed | We couldn’t finish that request. Try again shortly. |
UZ-INTERNAL-003 | 500 | Unknown error | The request could not finish. Retry it, then report the error code and request identifier if it continues. |
Request
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-REQ-001 | 400 | Invalid request | That request wasn’t valid. Double-check the values you entered and try again. |
UZ-REQ-002 | 413 | Payload too large | Request body exceeds the maximum allowed size. |
Workspaces
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-WORKSPACE-001 | 409 | Workspace name already exists | A workspace with that name already exists. Check the refreshed list or choose another name. |
Authentication
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-AUTH-001 | 403 | Forbidden | You need operator access for that. Ask a tenant operator or admin to manage API keys. |
UZ-AUTH-002 | 401 | Unauthorized | Authentication required. Provide a valid Bearer token. |
UZ-AUTH-003 | 401 | Token expired | Your authentication token has expired. Re-authenticate. |
UZ-AUTH-004 | 503 | Authentication service unavailable | Authentication service is temporarily unavailable. Retry shortly. |
UZ-AUTH-005 | 404 | Session not found | Session was not found. It may have expired or been invalidated. |
UZ-AUTH-006 | 401 | Session expired | Your session has expired. Please sign in again. |
UZ-AUTH-011 | 400 | Verification code did not match | The 6-digit code does not match the one shown in your browser. Re-enter it and try again. |
UZ-AUTH-012 | 410 | Login session already consumed | This login session has already been consumed. Start over with agentsfleet login. |
UZ-AUTH-013 | 410 | Login session aborted | This login session was aborted: too many wrong codes, a cancel, or a newer session. Start over with agentsfleet login. |
UZ-AUTH-014 | 409 | Login session not approved | This login session is not approved yet. Approve it in your browser, then submit the code. |
UZ-AUTH-015 | 409 | Login session already approved | This login session has already been approved. Do not call /approve a second time. |
UZ-AUTH-016 | 400 | Invalid command-line public key | The supplied public_key is malformed. Expect base64url-encoded P-256 SubjectPublicKeyInfo. |
UZ-AUTH-017 | 400 | Invalid token name | token_name must contain 1 to 64 characters from space through tilde. |
UZ-AUTH-018 | 400 | Invalid verification code shape | verification_code must contain exactly 6 decimal digits. |
UZ-AUTH-019 | 400 | Invalid ciphertext | ciphertext is missing or empty. Expect a base64url-encoded AES-256-GCM output. |
UZ-AUTH-020 | 400 | Invalid nonce | nonce is missing, empty, or the wrong length. Expect a base64url-encoded 12-byte value. |
UZ-AUTH-022 | 403 | Insufficient scope | You need an additional scope for that. Ask an agentsfleet admin to grant the scope this action requires. |
UZ-AUTH-023 | 401 | Command-line credential revoked | This credential was revoked by a logout or by a newer login from this machine. Run agentsfleet login to get a new one. |
UZ-AUTH-024 | 404 | Command-line credential not found | You have no live credential with that identifier. It may be revoked, or it may not be yours. |
UZ-AUTH-025 | 401 | Credential exchange failed | Login could not exchange the browser session for a durable credential, so nothing was saved. The session likely expired. Run agentsfleet login again. |
UZ-AUTH-026 | 403 | Owner only | Only the account owner can store secrets, connect integrations, or manage members. Ask the owner to make this change. |
Invites and members
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-INV-001 | 404 | Invite not found | The invite expired after 7 days, was revoked, or was already accepted. Ask the owner for a new invite if it expired or was revoked. Someone who already joined is a member; the owner must remove them before inviting them again. |
UZ-INV-002 | 403 | Invite is for another address | Sign in with the email address the invite was sent to, then open the invite again. |
UZ-INV-003 | 409 | Already invited or a member | The address has a pending invite or already belongs to the account. Revoke the pending invite to send a new one, or remove the member. |
UZ-INV-004 | 409 | Account needs an owner | An account keeps at least one owner. The last owner cannot be removed. |
UZ-INV-005 | 503 | Invite email could not be sent | Email is not set up, or the mail relay refused or did not answer. The invite is still valid. Copy the invite link and send it yourself, or send again later. |
API
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-API-001 | 429 | Too many requests | The API is at its request limit. Wait for the Retry-After delay, then retry. |
UZ-API-002 | 503 | Activity stream capacity reached | The API is at its activity-stream limit. Close unused dashboard tabs or retry shortly. |
Webhooks
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-WH-001 | 404 | Fleet not found for webhook | The fleet or webhook source is missing. Copy the current URL from the fleet’s webhook_urls. |
UZ-WH-002 | 400 | Malformed webhook | Webhook payload could not be parsed. Check Content-Type and body. |
UZ-WH-010 | 401 | Invalid webhook signature | The webhook signature did not verify. The stored signing secret must match the one configured upstream. |
UZ-WH-011 | 401 | Stale webhook timestamp | The signed timestamp differs by more than 5 minutes. Correct the sender clock before retrying. |
UZ-WH-020 | 401 | Webhook credential not configured | The trigger has no usable signing secret. Store the sender’s signing value in the named JSON secret’s webhook_secret field. Svix uses its whsec_ value in that field too; see webhooks. |
UZ-WH-021 | 200 | Connector installation is not mapped | The App installation has no workspace connection. Reconnect it, then redeliver. App deliveries return HTTP 200 with this code in ignored. |
UZ-WH-022 | 200 | No fleet subscription matched | No active fleet matched the repository and event with an approved integration grant. Fix its subscription or grant. App deliveries return HTTP 200 with this code in ignored. |
UZ-WH-030 | 413 | Webhook payload too large | The webhook body exceeds the 1 MiB limit. Reduce the payload size. |
Slack
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-SLK-010 | 401 | Invalid Slack signature | Retired. A Slack delivery whose signature does not verify now returns UZ-WH-010, like every other signed delivery. |
UZ-SLK-011 | 401 | Stale Slack timestamp | Retired. A Slack delivery more than 5 minutes old now returns UZ-WH-011. |
UZ-SLK-020 | 200 | Slack team not installed | Retired. A mention from a Slack team with no connector install returns 200 with {"ignored": "team_not_mapped"} and starts no run. Connect Slack again from Settings → Integrations. |
UZ-SLK-022 | 502 | Slack token exchange failed | Retired. Slack connection failures use UZ-CONN-006. Restart the connection from the dashboard. |
UZ-SLK-030 | 502 | Slack answer post failed | Retired. Inspect event details and the Slack connection when an answer cannot be posted. |
Tools
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-TOOL-005 | 400 | Unknown tool | Retired. The runner refuses unknown or unavailable tools. Check the tool list and update the runner. |
Fleets
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-AGT-003 | 424 | Fleet credential missing | A required credential is not in the vault. Add it with: agentsfleet secret create <NAME> |
UZ-AGT-004 | 500 | Fleet unavailable | Retired. Check the fleet state and the event details for the current failure. |
UZ-AGT-006 | 409 | Fleet name already exists | A fleet already uses this name. Review the draft under a different --name to keep it. Deleting the existing fleet permanently removes its events, sessions, schedules, grants, and memory; only do that if you intend to remove it. |
UZ-AGT-008 | 400 | Invalid fleet config | That fleet’s config isn’t valid. Check the trigger, tools, credentials, and budget fields, then try again. |
UZ-AGT-009 | 404 | Fleet not found | The fleet is missing from this workspace, or a lifecycle update targets a killed fleet after its version checks pass. |
UZ-AGT-010 | 409 | Fleet state transition not allowed | That action isn’t available for this Fleet right now — check its current status and try again. |
UZ-AGT-012 | 409 | Fleet is paused | This Fleet is paused. Resume it before sending new work. |
UZ-AGT-013 | 500 | Fleet install rolled back | We couldn’t finish setting up your fleet. Nothing was created — try again. |
UZ-AGT-014 | 412 | Fleet source is stale | Someone else edited this Fleet’s source since you opened it. Reload to see their change, then re-apply your edit. |
UZ-AGT-015 | 404 | Event not found | We couldn’t find that event. It may have aged out, or the identifier doesn’t match one on this Fleet. |
UZ-AGT-016 | 409 | Operation already used | This operation_id was used with a different message or sender; workspace API keys count as one sender. Retry the original request unchanged, or use a new operation_id for a new message. The response carries current_state: "admitted". |
UZ-AGT-017 | 404 | Tool call not found | No full output was kept for this call on this event, or the call is outside this workspace. Use the call identifier shown in the thread. Its saved preview may still contain the first and last lines. |
Schedules
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-SCHED-001 | 422 | Invalid schedule | Retired. Invalid schedule fields now return UZ-REQ-001. Use a five-field cron expression and a supported timezone. |
UZ-SCHED-002 | 404 | Schedule not found | No schedule matches this identifier for the selected Fleet. |
UZ-SCHED-003 | 409 | Schedule limit reached | A Fleet can hold at most 32 schedules. Remove one before creating another. |
UZ-SCHED-004 | 502 | Schedule provider unavailable | Retired. A saved schedule carries its synchronization state even when registration fails. Check the diagnostic, then run agentsfleet schedule sync <FLEET_ID> <SCHEDULE_ID>. |
UZ-SCHED-005 | 401 | Invalid schedule signature | Retired. Use the authentication error in the current schedule-delivery response. |
UZ-SCHED-006 | 409 | Schedule update busy | Another schedule mutation holds the synchronization lease. Retry after the reported delay. |
UZ-SCHED-007 | 503 | Schedule service unavailable | Retired. Ask the operator to enable scheduling when the saved schedule reports missing service configuration. |
UZ-SCHED-008 | 409 | Schedule source already exists | A schedule already uses this source key for the selected Fleet. Pick a different source or update the existing schedule. |
UZ-SCHED-009 | 409 | Fleet schedule cap reached | A fleet can create at most 16 schedules itself. Remove one of its own schedules before creating another. |
UZ-SCHED-010 | 403 | Schedule not created by the fleet | A fleet can change or delete only the schedules it created. A person created this one. Change it from the schedules page or agentsfleet schedule. |
UZ-SCHED-011 | 409 | Schedule cannot run now | The schedule is paused or being removed, or the current run was started by a schedule. The response names the state in current_state. |
Drafts and setup
These codes answer private drafts, Save, Apply, and Library publication.| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-AUTHOR-001 | 404 | Setup resource not found | The draft or fleet is missing or outside your access. A Library entry may be missing, belong to another account, or be a platform entry you cannot change. Use a resource available to you. |
UZ-AUTHOR-002 | 409 | Setup state conflict | Finish or stop the current work before changing setup. The response names the state in current_state. |
UZ-AUTHOR-003 | 412 | Setup version changed | This setup changed. Fetch the current resource and retry with its ETag in If-Match. |
UZ-AUTHOR-004 | 428 | Setup version required | Send the resource ETag in If-Match. |
UZ-AUTHOR-005 | 409 | Operation key conflict | That operation key already belongs to a different request. Reuse a key only for the same request from the same person. |
UZ-AUTHOR-006 | 409 | Setup review changed | This setup changed. Review it before saving. The response carries the fresh review_digest. |
UZ-AUTHOR-007 | 402 | Authoring balance insufficient | The workspace balance cannot cover this authoring request. The workspace owner adds credit, or the request waits for earlier usage to settle. |
UZ-AUTHOR-008 | 409 | Authoring model unavailable | The selected model is missing, disabled, or ineligible, or its credential was rejected. Replace the credential or choose another available authoring model. |
UZ-AUTHOR-009 | 409 | Setup policy changed | This setup needs a new review. Review the current setup before continuing. |
UZ-AUTHOR-010 | 422 | Authoring context too large | This request exceeds the authoring model’s context limit. Shorten the request or choose a model with a larger window. |
UZ-AUTHOR-011 | 400 | Invalid setup cursor | Reload this list to continue. A cursor works only with the same person, filters, and page size. |
UZ-AUTHOR-012 | 409 | Authoring lease lost | This authoring attempt can no longer update the draft. Refresh the draft before sending another message. |
UZ-AUTHOR-013 | 410 | Setup resource purged | This setup was deleted. Start a new operation. |
UZ-AUTHOR-014 | 502 | Authoring provider failed | The authoring provider could not finish this request. Send the message again. |
UZ-AUTHOR-015 | 409 | Authoring usage unresolved | An earlier attempt still has unresolved provider usage. Choose Stop authoring on that reply before sending a new message. Its reserved balance can still limit new work until accounting finishes. |
UZ-AUTHOR-016 | 504 | Authoring attempt timed out | This attempt timed out after its provider accounting resolved. Send a new message to retry. |
Secrets
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-VAULT-001 | 400 | Secret data must be a non-empty JSON object | That secret needs at least one field. Enter it as a JSON object with one or more keys — not a bare string or list. |
UZ-VAULT-002 | 400 | Secret data too large | That secret is too large. Keep it under 4 KiB. Trim or shorten the fields. |
UZ-VAULT-003 | 404 | Secret not found | We couldn’t find that secret. It may have already been deleted — refresh the list. |
UZ-VAULT-004 | 409 | Secret still referenced by model entries | This key is used by one or more models in your registry. Remove those entries first, then delete the key. |
UZ-VAULT-005 | 409 | Secret name already taken | A secret with that name already exists. Rename this one, or open the existing secret and replace its value. |
Model providers
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-PROVIDER-001 | 400 | secret_ref required when mode=self_managed | Pick a secret to activate. Choose a stored secret before switching to a self-managed model. |
UZ-PROVIDER-002 | 400 | Secret not found | We couldn’t find that secret. Store it under Secrets & ENVs, then try again. |
UZ-PROVIDER-003 | 400 | Secret JSON missing required field | That secret is missing required fields. It needs a provider set (and an API key for a named provider) — edit it under Secrets & ENVs and add them. |
UZ-PROVIDER-004 | 400 | Model not in library | That model isn’t in our library yet. Pick a listed model, or ask us to add support for it. |
UZ-PROVIDER-005 | 400 | Custom endpoint base_url invalid or unsafe | That endpoint URL isn’t allowed. Use a public https URL for your custom endpoint. |
UZ-PROVIDER-006 | 404 | Library model not found | We couldn’t find that model in the library. Refresh the list and try again. |
UZ-PROVIDER-007 | 409 | Library model is the active platform default | This model is the active platform default — point the default at another model before deleting it. |
UZ-PROVIDER-008 | 409 | Library model already exists | That model is already in the library. Edit the existing entry instead of adding a duplicate. |
UZ-PROVIDER-009 | 500 | Platform model key not configured | Platform defaults aren’t set up on this deployment yet. Keep your current provider for now, or contact support. |
UZ-PROVIDER-010 | 500 | Tenant has no primary workspace | Something’s off with your account setup. Contact support with the request id below. |
UZ-PROVIDER-011 | 400 | Source workspace not found | That workspace doesn’t exist. Pick one from your workspace list and try again. |
Tenant models
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-MODELS-001 | 409 | Cannot delete the active model entry | This is your active model — switch to a different one first, then remove this entry. |
UZ-MODELS-002 | 404 | Referenced secret not found | We couldn’t find that key. Store it under Secrets & ENVs first, or pick an existing key. |
UZ-MODELS-003 | 409 | Model entry already exists | You already have this model registered with that key. Edit the existing entry instead. |
UZ-MODELS-004 | 404 | Model entry not found | We couldn’t find that model entry. It may have already been removed — refresh the list. |
Dashboard preferences
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-PREFS-001 | 400 | Unknown preference key | That setting doesn’t exist. Reload the page and try again. |
UZ-PREFS-002 | 400 | Preference value too large | The preference value exceeds 1 KiB. Reduce it before saving again. |
Library listings
Model catalogue reads use the codes below. Keeplimit within 1 to 100 and use the previous page’s next_cursor.
Start again from the first page after changing a filter.
The Fleet library uses UZ-AUTHOR-011 for malformed or mismatched cursors.
Its list routes are /v1/workspaces/{workspace_id}/fleet-libraries and /v1/workspaces/{workspace_id}/fleet-libraries/owned.
Removing a Library entry answers UZ-AUTHOR-001 when the entry is not one your account owns.
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-LIBRARY-001 | 400 | Pagination cursor is malformed | That page link is no longer valid. Go back to the first page and try again. |
UZ-LIBRARY-002 | 400 | Pagination cursor does not match this request | The filters changed since that page was loaded. Start again from the first page. |
UZ-LIBRARY-003 | 400 | Pagination or filter input out of bounds | Use limit from 1 to 100 and filters no longer than 128 bytes. |
UZ-LIBRARY-004 | 503 | Catalogue version unavailable | Retired. Retry the catalogue read and use the error code in the current response. |
UZ-LIBRARY-005 | 500 | Response exceeded its size ceiling | Retired. Report the current response code and request identifier if a catalogue page cannot be built. |
UZ-LIBRARY-006 | 503 | Data service temporarily unavailable | We couldn’t reach the database. Try again shortly. |
UZ-LIBRARY-008 | 409 | Credential was deleted while it was being referenced | Retired. Refresh the model list and choose a secret that still exists. |
Startup
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-STARTUP-001 | 500 | Required settings missing | The service cannot start because required settings are missing. An operator must add them before retrying startup. |
UZ-STARTUP-002 | 500 | Settings could not load | Retired. Read the startup error, correct the named setting, and restart the service. |
UZ-STARTUP-003 | 500 | Data service unavailable | The service cannot start because a required data service is unreachable. An operator must restore access before retrying startup. |
UZ-STARTUP-004 | 500 | Event service unavailable | The service cannot start because its event service is unreachable. An operator must restore access before retrying startup. |
UZ-STARTUP-005 | 500 | Stored data is not ready | The service cannot start because stored data is not ready. An operator must finish the data update before retrying startup. |
UZ-STARTUP-006 | 500 | Service could not start | Retired. Read the startup error and check available host memory before restarting. |
Runners
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-RUN-001 | 401 | Invalid runner token | The Bearer runner_token is missing, malformed, or not recognized. Re-register the runner. |
UZ-RUN-005 | 409 | Stale fencing token | The lease was reclaimed by a newer holder. This report is rejected; the current holder’s result wins. |
UZ-RUN-006 | 404 | Lease not found | No active lease matches this lease_id for the presenting runner; it may have expired, been reclaimed, or never existed. |
UZ-RUN-009 | 401 | Runner admin state blocks access | This runner is cordoned, draining, drained, or revoked and cannot call the runner plane. Re-enroll the host to mint a fresh runner token. |
UZ-RUN-010 | 409 | Lease exceeded max runtime | The lease reached its maximum runtime and cannot renew. The runner stops the child and reports any result. |
UZ-RUN-011 | 409 | Lease lost | The lease moved to another runner before renewal. The former runner must stop its child. |
UZ-RUN-012 | 402 | Lease renewal blocked: no credits | The tenant balance cannot cover another run slice. The lease does not renew, and the run stops cleanly. |
UZ-RUN-013 | 400 | Renew body malformed | The runner reports retired usage fields, so its lease cannot renew. Upgrade agentsfleet-runner together with agentsfleetd. |
UZ-RUN-014 | 404 | Runner not found | We couldn’t find that runner. It may have been removed — refresh the list. |
UZ-RUN-015 | 402 | Lease renewal blocked: fleet budget exhausted | The fleet reached its daily_nanos or monthly_nanos limit from its reviewed setup, so the run stops. The tenant balance is fine; this is the fleet’s own budget. |
UZ-RUN-016 | 409 | Active runner must be revoked before deletion | This runner is still live. Revoke it first, then delete it. |
UZ-RUN-018 | 409 | Self-test refused: runner is revoked | A revoked runner cannot receive a self-test. Enroll a replacement runner. |
UZ-RUN-019 | 409 | Event has no thread to message | The run came from an API steer, a webhook, or a schedule, so no thread is waiting. Say it in the run’s answer instead. |
UZ-RUN-020 | 409 | Run message limit reached | A run can post at most 8 messages before it answers. Put the rest in the run’s answer. |
Runs
These earlier run codes are retired. Current event details record a namedfailure_class and a diagnostic cause.
See Troubleshoot a fleet for recovery.
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-EXEC-003 | 500 | Run timed out | Retired. The run exceeded its time limit. Check the current event’s failure_class, such as timeout_kill. |
UZ-EXEC-004 | 500 | Run memory limit reached | Retired. The run reached its memory limit. Check the current event’s failure_class, such as oom_kill. |
UZ-EXEC-005 | 500 | Run resource limit reached | Retired. The run reached another resource limit. Check the current event’s failure_class, such as resource_kill. |
UZ-EXEC-006 | 500 | Runner connection lost | Retired. The runner lost its connection to the child process. Check the current event’s failure_class, such as transport_loss. |
UZ-EXEC-007 | 500 | Run lease expired | Retired. The run’s lease expired. Check the current event’s failure_class, such as lease_expired. |
UZ-EXEC-008 | 500 | Run stopped during renewal | Retired. Lease renewal was refused. Check the current event’s failure_class, such as renewal_terminate. |
UZ-EXEC-009 | 500 | Runner security check failed | Retired. The host could not enforce the assigned security policy. Check the current event’s failure_class, such as startup_posture. |
UZ-EXEC-010 | 500 | Run crashed | Retired. The runner process failed. Check the current event’s failure_class, such as runner_crash. |
UZ-EXEC-011 | 403 | Landlock policy deny | Retired. Filesystem isolation refused an operation. Check the current event’s failure_class, such as landlock_deny. |
UZ-EXEC-012 | 500 | Runner fleet init failed | Retired. The runner could not prepare the run. Check the current event’s failure_class, such as startup_posture. |
UZ-EXEC-013 | 500 | Runner fleet run failed | Retired. The runner could not finish the run. Check the current event’s failure_class, such as runner_crash. |
UZ-EXEC-014 | 400 | Run settings invalid | Retired. The assigned run settings were unusable. Check the current event’s failure_class, such as startup_posture. |
UZ-EXEC-015 | 402 | Run stopped: fleet limit reached | Retired. The run reached its spending limit. Check the current event’s failure_class, such as budget_breach. |
UZ-EXEC-016 | 401 | Runner token rejected | Retired. The runner token was rejected. Re-enroll the host instead of retrying its old token. |
UZ-EXEC-017 | 409 | Assignment exceeds host capability | Retired. The host could not enforce the assigned policy; fix the host or choose a suitable runner. Check the current event’s failure_class, such as startup_posture. |
Approvals
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-APPROVAL-001 | 400 | Approval parse failed | Retired. Invalid Definition fields now return UZ-REQ-001. Check the field named in the detail. |
UZ-APPROVAL-002 | 404 | Approval not found | That approval action wasn’t found. It may have already timed out or been resolved elsewhere. |
UZ-APPROVAL-003 | 401 | Approval invalid signature | Retired. Invalid callback signatures now use UZ-WH-010. Check the signing secret. |
UZ-APPROVAL-004 | 503 | Approval service unavailable | Retired. Report the current service error and request identifier when approvals are unavailable. |
UZ-APPROVAL-005 | 400 | Approval condition invalid | Retired. Invalid approval conditions now fail Definition validation with UZ-REQ-001. |
UZ-APPROVAL-006 | 409 | Approval already resolved | Someone already resolved this. Refresh to see the outcome and who resolved it. |
Memory
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-MEM-002 | 404 | Fleet not found for memory op | The fleet_id does not exist or is not in this workspace. Verify both. |
UZ-MEM-003 | 503 | Saved memory unavailable | Saved memory is unavailable. The fleet uses temporary workspace memory until the service recovers. |
UZ-MEM-004 | 404 | Memory entry not found | That memory entry is already gone — the fleet isn’t holding anything under that key. |
API keys
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-APIKEY-001 | 401 | Invalid API key | Retired. Use the current authentication code. A revoked API key returns UZ-APIKEY-004. |
UZ-APIKEY-003 | 404 | API key not found | We couldn’t find that API key. It may have already been deleted — refresh the list. |
UZ-APIKEY-004 | 401 | API key has been revoked | This key was revoked and can no longer authenticate. Mint a replacement with: POST /v1/api-keys |
UZ-APIKEY-005 | 409 | Key name already exists in this tenant | An API key with that name already exists. Pick a different name for this tenant. |
UZ-APIKEY-006 | 409 | API key is already revoked | That API key is already revoked. Refresh the list to see its current state. |
UZ-APIKEY-007 | 409 | active cannot be set to true; mint a new key instead | A revoked key can’t be reactivated. Mint a new key instead. |
UZ-APIKEY-008 | 409 | Active API key must be revoked before deletion | This key is still active. Revoke it first, then delete it. |
Repository repair
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-REPAIR-010 | 403 | Write mint requires an approved gate | Retired. Repository writes use the fleet’s integration grant. A missing approved grant returns UZ-GRANT-001. |
UZ-REPAIR-011 | 403 | Fleet binding changed since approval | Retired. Repository access follows the fleet’s current Definition. Keep repositories limited to the repositories it needs. |
UZ-REPAIR-012 | 200 | Duplicate repair link refused | Retired. The webhook path no longer records repair links through this check. Repository access uses fleet integration grants. |
UZ-REPAIR-013 | 403 | Write request allowance exhausted | Retired. The per-approval request allowance was removed. Set budget.daily_nanos to limit the fleet’s daily spending. |
UZ-REPAIR-014 | 200 | Repair provenance refused | Retired. The webhook path no longer checks repair provenance against a per-run write approval. Review the fleet’s integration grant instead. |
Integration grants
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-GRANT-001 | 403 | No integration grant for service | This fleet has no approved grant for the target service. Check it with GET /v1/workspaces/{ws}/fleets/{id}/integration-grants and resolve its approval. |
UZ-GRANT-002 | 404 | Integration grant not found | We couldn’t find that grant request. It may have already been resolved — refresh the list. |
UZ-GRANT-003 | 409 | Grant already resolved | Retired. An already-resolved approval uses UZ-APPROVAL-006. Refresh to see the decision. |
Credentials
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-CRED-001 | 404 | Integration not connected | That integration isn’t connected. Connect it from the Integrations page, then try again. |
UZ-CRED-002 | 503 | Credential broker not configured | The on-demand credential broker is not configured on this deployment. An operator must set it up before runners can mint credentials. |
GitHub
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-GH-001 | 409 | GitHub App reconnect required | The GitHub App installation was uninstalled or revoked, so no token can be minted. A token request is also refused with this code when the github secret names an installation this workspace did not connect. Reconnect GitHub from the dashboard. |
UZ-GH-002 | 502 | GitHub token mint failed | GitHub did not return an installation token. Retry shortly; if it continues, check GitHub status and the App configuration. |
Connectors
| Code | HTTP | Title | Meaning and action |
|---|---|---|---|
UZ-CONN-001 | 503 | Connector not configured | This connector isn’t set up yet. Contact your operator to enable it. |
UZ-CONN-002 | 400 | Invalid connect state | That connection attempt expired or was already used. Start connecting again from the dashboard. |
UZ-CONN-003 | 502 | Connector vendor call exceeded its deadline | We couldn’t reach that service right now. Try again shortly. |
UZ-CONN-004 | 404 | Unknown connector provider | We don’t recognize that connector. Check the available connectors on the dashboard. |
UZ-CONN-006 | 502 | Connector OAuth exchange failed | That connection didn’t go through, or a Zoho Desk, Jira, or Linear secret asked to refresh at an address its connect flow never wrote. That refresh is refused unsent. Connect again from the dashboard rather than editing the secret by hand. |
UZ-CONN-007 | 500 | Connector catalog lookup failed | Retired. Refresh the connector list. If it still fails, report the current error code and request identifier. |
UZ-CONN-008 | 403 | Connector installation ownership not verified | We couldn’t verify that this GitHub installation belongs to you. Sign in with the owning GitHub account and try again. |
UZ-CONN-009 | 502 | Connector installation listing failed | GitHub wouldn’t tell us which installations you can reach. Try connecting again from the dashboard. |