Pipeline & Jobs

Job states and what they mean

Reference for every job state: pending, queued, running, completed, failed, and more.

Updated March 3, 2026

Every Zapat job moves through a defined set of states. Here is a complete reference for what each state means and what you can do in that state.

pending

The job has been created in the database after a webhook event was received, but has not yet been sent to the dispatch queue. This state is typically transient — the job moves to "queued" within a second or two.

queued

The job has been placed in the queue and is waiting for a compute slot to become available. If you have multiple jobs running simultaneously and have hit your concurrency limit, new jobs wait here until a slot opens.

running

The agent is actively working on the job. You can watch real-time progress in the Pipeline view. Running jobs typically complete within 5–15 minutes. If a job has been running for more than 45 minutes (configurable), the maintenance system marks it as failed.

completed

The job finished successfully. The job detail view shows the final cost, token usage, execution duration, and a link to the resulting PR or comment on GitHub.

failed

The job encountered an error that could not be recovered from. The error code and message are shown in the job detail view. Common error codes: TIMEOUT (agent took too long), API_ERROR (AI model issue), BUDGET_EXCEEDED (job cost exceeded safety limit), GIT_CLONE_FAILED (repository access problem), VALIDATION_ERROR (bad input), NO_OUTPUT (agent produced no result).

Tip

To retry a failed job, remove and re-add the trigger label on the GitHub issue. This creates a fresh job. You can also add more context to the issue description before re-triggering.

deferred

The job was temporarily delayed due to capacity constraints (too many concurrent jobs) or API rate limits. The system will automatically retry deferred jobs once the constraint clears — typically within 60 minutes.

abandoned

The job was given up after repeated failures. This happens when a job exceeds the maximum retry count or when the failure reason is unrecoverable (for example, the repository was deleted or access was revoked). The abandon reason is recorded in the job detail view.

cancelled

The job was cancelled, typically because a duplicate job was detected for the same issue or PR. Zapat prevents duplicate jobs from running concurrently on the same issue — if you add a label while a job is already running, the new job is cancelled immediately.

Was this article helpful?