Actions limits

There are limits in GitHub Actions which you may hit as you scale up, some may be increased by contacting support.

You may be rate limited by GitHub Actions when you scale your usage. Some limits can be increased by contacting us through the GitHub Support portal.

Unless otherwise stated, the expected behavior when a limit is reached is that the workflow/job will get cancelled.

These limits are subject to change.

Existing system limits

Limit category Limit Threshold Description Can GitHub Support increase?
Workflow execution limit Workflow run time 35 days / workflow run If a workflow run reaches this limit, the workflow run is cancelled. This period includes execution duration, and time spent on waiting and approval.
Workflow execution limit Gate approval time 30 days A workflow may wait for up to 30 days on environment approvals.
Workflow execution limit Job Matrix 256 jobs / workflow run A job matrix can generate a maximum of 256 jobs per workflow run. This limit applies to both GitHub-hosted and self-hosted runners.
Workflow execution limit Re-run 50 re-runs A workflow run can be re-run a maximum of 50 times. This limit includes both full re-runs and re-runs of a subset of jobs. Support ticket
Checks Check runs per check suite 50,000 check runs / check suite A check suite can have a maximum of 50,000 check runs. This limit applies to check runs created through the Checks API and by GitHub Actions workflow runs. When a check suite reaches this limit, additional check runs cannot be created for that check suite. Support ticket
Workflows queuing Workflow trigger event rate limit 1500 events / 10 seconds / repository Each repository is limited to events triggering a workflow run. Support ticket
Workflows queuing Workflow run queued 500 workflow runs / 10 seconds When the limit is reached, the workflow runs that were supposed to be triggered by the webhook events will be blocked and will not be queued. Reusable workflows are viewed as a single entity. For example, a run with 30 reusable workflows counts as 1 in this instance.
Workflows queuing Concurrency group queue 100 workflow runs / concurrency group When using queue: max in the concurrency section, up to 100 jobs or workflow runs can be queued per concurrency group. Runs beyond this limit will be rejected.
Self-hosted Runner registrations 1500 runners / 5 minutes / repository/org/enterprise Runners can be registered per repository/organization/enterprise. Support ticket
Self-hosted Runners per runner group 10,000 runners Runners registered at the same time per runner group.
Self-hosted Job execution time 5 days Each job in a workflow can run for up to 5 days of execution time. If a job reaches this limit, the job is terminated and fails.
Self-hosted Job queue time 24 hours A job can be in the queue for 24 hours before it is automatically cancelled.
All GitHub-hosted runners Job Concurrency Varies See Job concurrency limits for GitHub-hosted runners. Support ticket
All GitHub-hosted runners Job execution time 6 hours Each job in a workflow can run for up to 6 hours of execution time. If a job reaches this limit, the job is terminated and fails.
All GitHub-hosted runners Storage limits Varies For more information, see Storage limits for all GitHub-hosted runners.
Larger runners Per runner concurrency limit Varies by runner type Established when setting up a runner. Normally 1,000 max for Linux CPU runners, but varies by type. See Job concurrency limits for GitHub-hosted runners. Support ticket
Larger runners Static IP limits 10 IPs 10 IPs per enterprise and organization. Support ticket
Larger runners Private IP scaling for vnet injection 30% buffer You need a buffer to accommodate the maximum job concurrency you anticipate. See Private IP scaling for vnet injection on larger runners. Configurable Azure virtual network
Dependency caching Uploads per minute 200 per minute Each repository is limited to 200 cache entry uploads per minute. If this limit is exceeded, subsequent cache upload attempts will fail until the rate limit resets.
Dependency caching Downloads per minute 1500 per minute Each repository is limited to 1500 cache entry downloads per minute. If this limit is exceeded, subsequent cache download attempts will fail until the rate limit resets.
Dependency caching Deletes per minute 400 per minute Each repository is limited to 400 cache delete operations per minute. If this limit is exceeded, subsequent cache delete attempts will fail until the rate limit resets. Each request to delete caches either by key or by ID counts towards this limit.

Job concurrency limits for GitHub-hosted runners

GitHub Support can increase job concurrency limits for GitHub Actions. To request an increase, submit a support ticket.

Runner type GitHub plan Total concurrent jobs Maximum concurrent macOS jobs Maximum concurrent GPU jobs
Standard GitHub-hosted runner Free 20 5 Not applicable
Standard GitHub-hosted runner Pro 40 5 Not applicable
Standard GitHub-hosted runner Team 60 5 Not applicable
Standard GitHub-hosted runner Enterprise 500 50 Not applicable
Larger runner Team 1000 5 100
Larger runner Enterprise 1000 50 100

Note

The maximum concurrent macOS jobs is shared across standard GitHub-hosted runners and GitHub-hosted larger runners.

Storage limits for all GitHub-hosted runners

GitHub Support cannot increase storage limits for GitHub Actions.

Plan Artifact storage Minutes (per month) Cache storage
GitHub Free 500 MB 2,000 10 GB
GitHub Pro 1 GB 3,000 10 GB
GitHub Free for organizations 500 MB 2,000 10 GB
GitHub Team 2 GB 3,000 10 GB
GitHub Enterprise Cloud 50 GB 50,000 10 GB

For information about cache storage limits and how to increase them, see Usage limits and eviction policy.

Private IP scaling for vnet injection on larger runners

When using larger runners with vnet injection, you need to determine the appropriate subnet IP address range, for which we recommend adding a buffer to the maximum job concurrency you anticipate. For instance, if the network configuration's runners are set to a maximum job concurrency of 300, utilize a subnet IP address range that can accommodate at least 390 runners. Note that Azure reserves 5 IPs in every subnet (first 4 and last 1), which sets a minimum practical subnet size depending on runner requirements. Very small subnets (like /29 or smaller) may not provide enough usable addresses for your needs.

Commonly hit dependent service limits

GitHub's REST API rate limits apply to GitHub Actions users, those that are commonly hit are:

Docker Hub's rate limit for GitHub Actions