ArtieHelp center
Developers · 4 min read

Errors, retries and recovery

Interpret errors, reconcile uncertain requests and recover without duplicate work.

Recover the existing request before submitting another mutation. Use the error code, request ID, current revision and saved operation key to decide whether to sign in, reconcile or continue.

On this page

Overview

A timeout does not establish that nothing happened. For a CLI mutation, the pending request journal saves the target, payload, query and key before sending:

artie request resume original-request-key --json
artie task watch TASK_UUID --wait 120 --json

Recover the same operation. Generic resume refuses person decisions; a person must use the current interactive proposal. Do not switch keys to replay a possibly successful operation. For external effects, reconcile the exact target and provider receipt before retrying.

A lost rotating refresh response is retained as uncertain in the credential store and is not automatically repeated. Sign in again using the supported login flow to recover; an active login/refresh owner must finish before another process takes over. Serialize login/logout per profile.

ConditionWhat to do
setup_required with setup URLComplete the returned workspace binding normally; don't start business commands yet.
401 authenticationRecover the intended environment/client sign-in. A different environment's token will not work.
403 denial or hidden/not-found responseCheck your permitted target/association. Do not search other users' private objects to work around it.
404 missing objectRead the returned customer explanation. Missing and restricted records may deliberately avoid exposing existence.
409 conflictRead current revision/state and reconcile the intended operation.
429 throttlingHonor Retry-After for a safe eligible request; reconcile uncertain writes first.
Provider/transport unavailablePreserve the original request and effect evidence; recover the named condition.
Unreadable extractionKeep the original file, identify the failed read/parse stage, and use supported recovery rather than reuploading by default.

Error codes are read from the canonical error.code. Some hosts wrap them in a generic outer tool error such as INVALID_ARGUMENT; that outer label is not sufficient to diagnose a canonical permission, conflict or provider failure. Preserve both layers and the request ID without private payloads.

CLI exit codes:

ExitMeaning
0Command or deterministic check succeeded
2Invalid arguments
3Authentication or setup needed
4Forbidden or hidden/not found
5Revision/idempotency conflict
6Waiting or interrupted observation
7Provider, transport or execution failure, or unknown outcome

--json puts structured output on stdout and structured errors on stderr. Login instructions and human prompts are separate. doctor reports environment, known source revision and authenticated identity; it does not certify provider health, deployment of every frontend/worker, or success of a task.

Delegated requests use shared minute-window limits: essential reads/controls use a workspace bucket up to 600 and a per-grant bucket up to 240; writes use up to 120 and 60 respectively. Other readers/bootstrap services may apply additional limits. These are maximum limits; follow the server’s actual throttle response and avoid unbounded parallel requests.

HTTP errors and CLI exit codes

HTTPMeaningRecovery
400Invalid requestRepair the arguments before execution.
401Invalid or expired authenticationRestore the intended environment login.
403/404Denied, missing or concealed recordCheck authority or follow the actual setup link.
409Revision, version or key conflictRead current state and reconcile the same operation.
429Rate limitedHonor Retry-After; reconcile uncertain writes first.
500Internal/configuration failureKeep the request ID and contact support without credentials.
503Read not readyUse bounded safe-read observation.

CLI exit codes: 0 command success; 2 invalid arguments; 3 auth/setup; 4 denied or hidden/not-found; 5 conflict; 6 waiting or interrupted observation; 7 execution/transport failure or unknown response. Success data is written to stdout; structured errors to stderr. A watch exit 0 can mean needs_you, so inspect the returned task state.

Need help with your workspace?

Contact support