{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/github-actions-concurrency-pending-queue-cancellation/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/",
        "slug": "github-actions-concurrency-pending-queue-cancellation",
        "url": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/github-actions-concurrency-pending-queue-cancellation/"
        },
        "title": "Choose the GitHub Actions pending-queue behavior before serializing deployments",
        "summary": "One-at-a-time execution and keeping every waiting release are separate concurrency decisions.",
        "format": {
            "slug": "guide",
            "name": "Guide"
        },
        "priority": {
            "slug": "info",
            "name": "Information"
        },
        "featured": false,
        "image": {
            "theme": "cyber-defense",
            "label": "Cyber defense",
            "alt": "Layered glass and metal cyber-defense structure with controlled blue and gold signal paths.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "cybersecurity",
                "name": "Cybersecurity",
                "url": "https://update.dsesecurity.com/topic/cybersecurity/"
            },
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-10-20T18:14:24+00:00",
        "modified_at": "2026-10-20T18:34:30+00:00",
        "reviewed_on": "2026-10-20",
        "reading_minutes": 2,
        "word_count": 279,
        "potentially_affected": "This describes Actions concurrency groups, not an application transaction or rollback mechanism. Current workflow syntax and service limits must be reviewed for the intended deployment design.",
        "dse_recommendation": "DSE recommends deciding whether an obsolete waiting release should be replaced or every release must be processed.",
        "primary_source": {
            "name": "GitHub — Control the concurrency of workflows and jobs",
            "url": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency",
            "published_on": null,
            "authority": "docs.github.com"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<p>One-at-a-time execution and keeping every waiting release are separate concurrency decisions.</p>\n<h2>Source facts</h2>\n<p>GitHub Actions permits one running job or workflow per concurrency group. With the default single pending queue, a newly queued run replaces the prior pending run. The optional queue: max setting allows multiple pending runs, up to the documented limit. It cannot be combined with cancel-in-progress: true. Group names are case-insensitive, and ordering follows when jobs begin waiting rather than original dispatch time.</p>\n<p>Source: <a href=\"https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency\">GitHub — Control the concurrency of workflows and jobs</a>.</p>\n<h2>Applicability</h2>\n<p>This describes Actions concurrency groups, not an application transaction or rollback mechanism. Current workflow syntax and service limits must be reviewed for the intended deployment design.</p>\n<h2>DSE recommendation</h2>\n<p>DSE recommends deciding whether an obsolete waiting release should be replaced or every release must be processed. Name groups deliberately so unrelated workflows cannot collide. Treat cancellation of an executing deployment as a separate decision with a recovery procedure. Document which release identity the deployment should accept after a queue delay and recheck its approval and artifact before making changes. State whether every waiting release is required or only the latest desired state should deploy. Keep that choice with the concurrency group and cancellation setting, and ask the release owner to define how an older approved artifact should be handled after waiting.</p>\n<h2>Verification</h2>\n<p>Proposed verification: run several harmless deployment simulations in one group and inspect running, pending, canceled and completed states. Compare the chosen queue behavior with the approved release policy. Exercise a safe cancellation scenario separately and retain the exact group configuration and observed sequence, including any ordering difference from dispatch times.</p>\n<h2>Official reference</h2>\n<p><a href=\"https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency\">GitHub — Control the concurrency of workflows and jobs</a>. Reviewed October 20, 2026.</p>",
        "content_text": "One-at-a-time execution and keeping every waiting release are separate concurrency decisions.\nSource facts\nGitHub Actions permits one running job or workflow per concurrency group. With the default single pending queue, a newly queued run replaces the prior pending run. The optional queue: max setting allows multiple pending runs, up to the documented limit. It cannot be combined with cancel-in-progress: true. Group names are case-insensitive, and ordering follows when jobs begin waiting rather than original dispatch time.\nSource: GitHub — Control the concurrency of workflows and jobs.\nApplicability\nThis describes Actions concurrency groups, not an application transaction or rollback mechanism. Current workflow syntax and service limits must be reviewed for the intended deployment design.\nDSE recommendation\nDSE recommends deciding whether an obsolete waiting release should be replaced or every release must be processed. Name groups deliberately so unrelated workflows cannot collide. Treat cancellation of an executing deployment as a separate decision with a recovery procedure. Document which release identity the deployment should accept after a queue delay and recheck its approval and artifact before making changes. State whether every waiting release is required or only the latest desired state should deploy. Keep that choice with the concurrency group and cancellation setting, and ask the release owner to define how an older approved artifact should be handled after waiting.\nVerification\nProposed verification: run several harmless deployment simulations in one group and inspect running, pending, canceled and completed states. Compare the chosen queue behavior with the approved release policy. Exercise a safe cancellation scenario separately and retain the exact group configuration and observed sequence, including any ordering difference from dispatch times.\nOfficial reference\nGitHub — Control the concurrency of workflows and jobs. Reviewed October 20, 2026.",
        "content_markdown": "One-at-a-time execution and keeping every waiting release are separate concurrency decisions.\n\n## Source facts\n\nGitHub Actions permits one running job or workflow per concurrency group. With the default single pending queue, a newly queued run replaces the prior pending run. The optional queue: max setting allows multiple pending runs, up to the documented limit. It cannot be combined with cancel-in-progress: true. Group names are case-insensitive, and ordering follows when jobs begin waiting rather than original dispatch time.\n\nSource: [GitHub — Control the concurrency of workflows and jobs](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency).\n\n## Applicability\n\nThis describes Actions concurrency groups, not an application transaction or rollback mechanism. Current workflow syntax and service limits must be reviewed for the intended deployment design.\n\n## DSE recommendation\n\nDSE recommends deciding whether an obsolete waiting release should be replaced or every release must be processed. Name groups deliberately so unrelated workflows cannot collide. Treat cancellation of an executing deployment as a separate decision with a recovery procedure. Document which release identity the deployment should accept after a queue delay and recheck its approval and artifact before making changes. State whether every waiting release is required or only the latest desired state should deploy. Keep that choice with the concurrency group and cancellation setting, and ask the release owner to define how an older approved artifact should be handled after waiting.\n\n## Verification\n\nProposed verification: run several harmless deployment simulations in one group and inspect running, pending, canceled and completed states. Compare the chosen queue behavior with the approved release policy. Exercise a safe cancellation scenario separately and retain the exact group configuration and observed sequence, including any ordering difference from dispatch times.\n\n## Official reference\n\n[GitHub — Control the concurrency of workflows and jobs](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency). Reviewed October 20, 2026."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/",
                "url": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-10-20"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "Cybersecurity",
                        "item": "https://update.dsesecurity.com/topic/cybersecurity/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 3,
                        "name": "Choose the GitHub Actions pending-queue behavior before serializing deployments",
                        "item": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/#article",
                "identifier": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/",
                "url": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/",
                "headline": "Choose the GitHub Actions pending-queue behavior before serializing deployments",
                "description": "One-at-a-time execution and keeping every waiting release are separate concurrency decisions.",
                "abstract": "One-at-a-time execution and keeping every waiting release are separate concurrency decisions.",
                "articleBody": "One-at-a-time execution and keeping every waiting release are separate concurrency decisions.\nSource facts\nGitHub Actions permits one running job or workflow per concurrency group. With the default single pending queue, a newly queued run replaces the prior pending run. The optional queue: max setting allows multiple pending runs, up to the documented limit. It cannot be combined with cancel-in-progress: true. Group names are case-insensitive, and ordering follows when jobs begin waiting rather than original dispatch time.\nSource: GitHub — Control the concurrency of workflows and jobs.\nApplicability\nThis describes Actions concurrency groups, not an application transaction or rollback mechanism. Current workflow syntax and service limits must be reviewed for the intended deployment design.\nDSE recommendation\nDSE recommends deciding whether an obsolete waiting release should be replaced or every release must be processed. Name groups deliberately so unrelated workflows cannot collide. Treat cancellation of an executing deployment as a separate decision with a recovery procedure. Document which release identity the deployment should accept after a queue delay and recheck its approval and artifact before making changes. State whether every waiting release is required or only the latest desired state should deploy. Keep that choice with the concurrency group and cancellation setting, and ask the release owner to define how an older approved artifact should be handled after waiting.\nVerification\nProposed verification: run several harmless deployment simulations in one group and inspect running, pending, canceled and completed states. Compare the chosen queue behavior with the approved release policy. Exercise a safe cancellation scenario separately and retain the exact group configuration and observed sequence, including any ordering difference from dispatch times.\nOfficial reference\nGitHub — Control the concurrency of workflows and jobs. Reviewed October 20, 2026.",
                "datePublished": "2026-10-20T18:14:24+00:00",
                "dateModified": "2026-10-20T18:34:30+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/github-actions-concurrency-pending-queue-cancellation/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/cyber-defense-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Choose the GitHub Actions pending-queue behavior before serializing deployments"
                },
                "articleSection": [
                    "Cybersecurity",
                    "IT"
                ],
                "keywords": [
                    "Cybersecurity",
                    "IT",
                    "Guide",
                    "Information priority"
                ],
                "genre": "Guide",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "Cybersecurity",
                        "url": "https://update.dsesecurity.com/topic/cybersecurity/"
                    },
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    }
                ],
                "wordCount": 279,
                "timeRequired": "PT2M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "GitHub — Control the concurrency of workflows and jobs",
                    "url": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency"
                }
            }
        ]
    }
}