Skip to main content
Lifecycle errors and environment errors are separate layers.

Lifecycle errors

Environment errors

Provider-shaped endpoints preserve the environment’s HTTP status and response body. A GitHub 422 remains a GitHub 422. Do not convert it into a generic Archal retry.

Retry rules

  • Add an idempotency key to every create request
  • Retry GET and HEAD with bounded exponential backoff
  • Retry a mutation only when its provider operation is idempotent
  • Cap attempts and request timeouts
  • Stop polling on a terminal lifecycle state
  • Preserve request IDs, response bodies, and teardown errors in test output
The TypeScript client retries a small set of transient statuses. If waiting for a newly created session fails, it attempts cleanup and preserves the original readiness error; a cleanup error is not returned separately. If your workflow must confirm cleanup, use startSession, then call awaitSessionReady and destroySession explicitly in your own try/finally boundary. TRIAL_CREDITS_EXHAUSTED is terminal for new sandbox creation during the current self-serve launch. Stop retrying the create request. The one-time trial credit does not renew, and paid continuation is not yet available. Treat the legacy CREDIT_FLOOR_NOT_MET and INSUFFICIENT_ENVIRONMENT_RUNTIME_CREDITS codes the same way. Do not retry them as transient failures or run billing setup commands.