CircleCI has introduced terminal job dependencies, allowing teams to define jobs that run after upstream work finishes regardless of whether those jobs succeeded, failed, or were canceled. Using the `terminal` state in `requires`, you can express 'run this when upstream work is done, no matter how it ended' without duplicating config or adding fragile conditional branches. Common use cases include always tearing down ephemeral environments after tests and sending a single final notification without creating separate jobs for each outcome. The feature reduces repetitive config, clarifies workflow intent, and lowers operational risk from missed cleanup paths.
Table of contents
Why this mattersWhat terminal jobs areCommon use casesImpact in practiceGetting startedSort: