What changed
We overhauled how CircleCI handles workflow cancellation to eliminate two long-standing issues: jobs that flip from canceled to success, and jobs that keep showing a spinner after they’ve actually finished.
Background
Previously, when a workflow was canceled, CircleCI would eagerly mark all jobs as canceled — before those jobs had actually stopped running. This caused two visible problems:
Status flipping: A job marked canceled may have already finished running. The actual confirmation would then arrive with the actual status and overwrite the result. Users would see jobs flip canceled → success.
Phantom spinners: Jobs were marked canceled and archived before receiving confirmation and an end timestamp. The UI interprets a job with a start time but no end time as still running, so completed jobs kept spinning indefinitely.
The fix
CircleCI no longer marks jobs canceled until they’ve actually stopped. Instead:
It records a “canceling” inten
It sends cancel signals only to jobs that are pending or running.
It waits for each job to confirm it has stopped before recording the final status.
Downstream blocked jobs are left untouched and transition to skipped / not_run through the normal state engine, as expected.
Impact
Canceled jobs with a terminal end time: ~51% → 99%+
No more canceled → success status flips
No more phantom spinners for jobs that have already finished
What’s next
We’re migrating the single-job cancel path to the same defer-to-:job-ended model. This closes the remaining gap where individually canceled jobs can still report a start time but no end time.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | How can I mark a deploy as "canceled" when its workflow got canceled? | 0 | 6.17 | 03-08-2026 |
| 2 | Hosted MCP server now available | 0 | 6.31 | 14-09-2026 |
| 3 | API Change: Pipeline Error Response Format Update | 0 | 9.16 | 21-09-2026 |
| 4 | Native GitHub Actions YAML Workflow Support — Preview | 0 | 6.81 | 22-09-2026 |
| 5 | OAuth 2.0 API Access with Dynamic Client Registration | 0 | 9.68 | 12-08-2026 |
| 6 | Enable auto-cancel but exclude branches | 0 | 14.16 | 07-08-2026 |
| 7 | New CLI flag: circleci run get --failure-report | 0 | 7.17 | 31-07-2026 |
| 8 | Native Slack integration is now generally available | 0 | 4.4 | 10-08-2026 |
| 9 | Fix failing workflows with Claude Code, directly from the CircleCI UI | 0 | 15.94 | 06-08-2026 |