GitHub Actions limits, in one place

GitHub Actions limits cap how long a job runs, how many jobs run at once, how long a job waits in the queue and how many API calls a workflow makes. Some limits change on your own runners, and some do not.

The limits that matter most

Most teams only ever hit a few of these. Here they are as of November 2026, from GitHub's Actions limits page. GitHub changes them, so check that page before you plan around a number.

LimitGitHub-hostedSelf-hosted
Time per job6 hours5 days
Time per workflow run35 days35 days
Time in the queueNot listed24 hours, then cancelled
Jobs per matrix256256
Jobs at onceSet by your planAs many runners as you have
GITHUB_TOKEN API calls1,000 an hour per repo1,000 an hour per repo

Job and workflow time limits

A job on a GitHub-hosted runner can run for up to 6 hours. That is also the default when you don't set timeout-minutes. A job on your own runner can run for up to 5 days.

A whole workflow run can last 35 days. That includes time spent waiting for approval.

You should set your own, much shorter, timeout. A stuck job wastes time and money. Read GitHub Actions timeout-minutes to set one.

Concurrent job limits by plan

GitHub-hosted runners run only so many jobs at once. As of November 2026, standard runners allow:

  • Free: 20 jobs at once
  • Pro: 40
  • Team: 60
  • Enterprise: 500

macOS jobs have a smaller cap: 5 at once on Free, Pro and Team, and 50 on Enterprise. Extra jobs wait in the queue until a slot frees up.

Minutes are a separate limit. Each plan includes some free minutes, then you pay per minute. If you run out each month, read GitHub Actions minutes running out.

On your own runners, the matrix and plan limits matter less. What sets your pace is how many runners your machines can hold at once.

GitHub API rate limits and secondary limits

Workflows often call the GitHub API. They post comments, add labels or read releases. Those calls count against GitHub API rate limits.

  • GITHUB_TOKEN: 1,000 requests an hour per repo. Enterprise Cloud repos get more.
  • Other tokens: a personal token or a GitHub App has its own hourly budget. Check GitHub's REST API docs for today's numbers.
  • Secondary rate limit: GitHub also limits bursts. Too many calls at once, or too fast, get a 403 or 429 error even when you have budget left.

To avoid the GitHub secondary rate limit, slow down. Make calls one at a time. When you get an error, wait for the time in the retry-after header before you try again.

Which limits change on self-hosted runners

On a self-hosted runner, some GitHub Actions limitations go away. Others stay.

  • Changes: jobs at once. Your machines run as many jobs as you have runners. There is no per-minute bill from GitHub for the runner itself.
  • Changes: time per job goes from 6 hours to 5 days.
  • Stays: the matrix cap, the workflow run cap and API rate limits. GitHub still runs the queue.
  • New: a job waits at most 24 hours for a runner, then GitHub cancels it.

With Codemany, each job gets a fresh, single-use runner that registers with GitHub just in time. Each runner budgets about 4 GB of memory, 2 CPU cores and 15 GB of disk. An 8 GB Mac runs 1 job at a time, and a 16 GB Mac runs 3. To run more, add machines. GitHub errors and rate limits never stop a job that is already running.

Your own runners still need care. A machine that is off or out of disk takes no jobs, and the queue grows. Watch the 24-hour queue limit: a job that waits that long is cancelled, not run.

How to stay under them

  • Set timeouts. Use timeout-minutes on every job.
  • Cancel old runs. Use concurrency so a new push stops the old run.
  • Cut the matrix. Use exclude to drop combos you don't need.
  • Batch API calls. One call that does a lot beats many small ones.
  • Move heavy jobs. Run macOS and long jobs on your own machines. See cut GitHub Actions costs.
concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

More answers are in the Codemany FAQ.

Questions

How many jobs can run at once?

It depends on your plan for GitHub-hosted runners. Your own machines run as many jobs as you allow.

Do self-hosted runners hit API rate limits?

Runner registration uses the API. Codemany registers a just-in-time runner for each job, and GitHub errors and rate limits never stop a running job.

Is there a limit on self-hosted job time?

Yes. GitHub still ends a job after its maximum run time, which is 5 days on self-hosted runners as of November 2026.

Read next: timeout-minutes, minutes running out, self-hosted runners, GitHub Actions costs and the FAQ.

Start a 14-day trial No card needed. $20 a month for 2 machines after that.