actions / actions/runner

Unable to Unregister self-hosted runner through the ./config.sh script

Open
#4,017 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C#
Stars
6.3k
Forks
1.4k
Avg merge
1d 16h
Merged PRs (30d)
24

Description

Describe the bug

After configuring a self-hosted runner, I am unable to un-configure the runner through the ./config.sh script.

I am configuring many ephemeral runners on many different machines. runner is using a unique runner registration token when running the ./config.sh script. I have been doing this for over a year now and this is the first time we have run into this error.

While at first glance it looks like we are running into api rate limits, I have verified that the token we use to generate the runner registration token is not hitting the maximum rate limit. It also looks like that we are being rate limited based off the IP of the machine, but if this was the case, then we should not be able to configure the runners in the first place. We are only seeing this issue when trying to unconfigure the runners.

To Reproduce
Steps to reproduce the behavior:

  1. Register a runner with ./config.sh --url <YOUR_URL> --token <RUNNER_REGISTRATION_TOKEN>
  2. Unregister the runner with ./config remove --token <RUNNER_REGISTRATION_TOKEN>
  3. See error

Expected behavior
The runner should be able to be successfully unconfigured. If it is in fact we are being IP rate limited, we should not be able to configure the runner in the first place

Runner Version and Platform

Version of your runner?

2.328.0

OS of the machine running the runner? OSX/Windows/Linux/...

Linux

What's not working?

[runner@0e772ec2ad02 ~]$ ./config.sh remove --token

Runner removal

Machine #1:


[runner@18e845967257 ~]$ ./config.sh --url https://github.com/trilinostesting/Trilinos --token <TOKEN_REDACTED>

--------------------------------------------------------------------------------
|        ____ _ _   _   _       _          _        _   _                      |
|       / ___(_) |_| | | |_   _| |__      / \   ___| |_(_) ___  _ __  ___      |
|      | |  _| | __| |_| | | | | '_ \    / _ \ / __| __| |/ _ \| '_ \/ __|     |
|      | |_| | | |_|  _  | |_| | |_) |  / ___ \ (__| |_| | (_) | | | \__ \     |
|       \____|_|\__|_| |_|\__,_|_.__/  /_/   \_\___|\__|_|\___/|_| |_|___/     |
|                                                                              |
|                       Self-hosted runner registration                        |
|                                                                              |
--------------------------------------------------------------------------------

# Authentication


√ Connected to GitHub

# Runner Registration

Enter the name of the runner group to add this runner to: [press Enter for Default] 

Enter the name of runner: [press Enter for 18e845967257] 

This runner will have the following labels: 'self-hosted', 'Linux', 'X64' 
Enter any additional labels (ex. label-1,label-2): [press Enter to skip] 

√ Runner successfully added
√ Runner connection is good

# Runner settings

Enter name of work folder: [press Enter for _work] 

√ Settings Saved.

[runner@18e845967257 ~]$ ./config.sh remove --token <TOKEN_REDACTED>

# Runner removal

Http response code: Forbidden from 'Delete https://api.github.com/repos/trilinostesting/Trilinos/actions/runners/73318' (Request Id: 7421:20F08F:2274CCE:7D00EE5:68BB05DA)
{"message":"API rate limit exceeded for 198.102.151.244. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) If you reach out to GitHub Support for help, please include the request ID 7421:20F08F:2274CCE:7D00EE5:68BB05DA and timestamp 2025-09-05 15:46:34 UTC.","documentation_url":"https://docs.github.com/rest/overview/rate-limits-for-the-rest-api","status":"403"}
Http response code: Forbidden from 'Delete https://api.github.com/repos/trilinostesting/Trilinos/actions/runners/73318' (Request Id: 1D61:1A82DF:21A132F:79ACDED:68BB05DE)
{"message":"API rate limit exceeded for 198.102.151.244. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) If you reach out to GitHub Support for help, please include the request ID 1D61:1A82DF:21A132F:79ACDED:68BB05DE and timestamp 2025-09-05 15:46:38 UTC.","documentation_url":"https://docs.github.com/rest/overview/rate-limits-for-the-rest-api","status":"403"}
Http response code: Forbidden from 'Delete https://api.github.com/repos/trilinostesting/Trilinos/actions/runners/73318' (Request Id: CE61:27BC5C:215DA45:78B98B1:68BB05E2)
{"message":"API rate limit exceeded for 198.102.151.244. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) If you reach out to GitHub Support for help, please include the request ID CE61:27BC5C:215DA45:78B98B1:68BB05E2 and timestamp 2025-09-05 15:46:42 UTC.","documentation_url":"https://docs.github.com/rest/overview/rate-limits-for-the-rest-api","status":"403"}
Failed: Removing runner from the server
Response status code does not indicate success: 403 (Forbidden).

Machine #2:

[runner@0e772ec2ad02 ~]$ ./config.sh --url https://github.com/trilinostesting/Trilinos --token <TOKEN_REDACTED>

--------------------------------------------------------------------------------
|        ____ _ _   _   _       _          _        _   _                      |
|       / ___(_) |_| | | |_   _| |__      / \   ___| |_(_) ___  _ __  ___      |
|      | |  _| | __| |_| | | | | '_ \    / _ \ / __| __| |/ _ \| '_ \/ __|     |
|      | |_| | | |_|  _  | |_| | |_) |  / ___ \ (__| |_| | (_) | | | \__ \     |
|       \____|_|\__|_| |_|\__,_|_.__/  /_/   \_\___|\__|_|\___/|_| |_|___/     |
|                                                                              |
|                       Self-hosted runner registration                        |
|                                                                              |
--------------------------------------------------------------------------------

# Authentication


√ Connected to GitHub

# Runner Registration

Enter the name of the runner group to add this runner to: [press Enter for Default] 

Enter the name of runner: [press Enter for 0e772ec2ad02] 

This runner will have the following labels: 'self-hosted', 'Linux', 'X64' 
Enter any additional labels (ex. label-1,label-2): [press Enter to skip] 

√ Runner successfully added
√ Runner connection is good

# Runner settings

Enter name of work folder: [press Enter for _work] 

√ Settings Saved.


[runner@0e772ec2ad02 ~]$ ./config.sh remove --token <TOKEN_REDACTED>

# Runner removal

Http response code: Forbidden from 'Delete https://api.github.com/repos/trilinostesting/Trilinos/actions/runners/73313' (Request Id: FE01:33BEA7:350F12:BF0AEF:68BAFF3B)
{"message":"API rate limit exceeded for 198.102.151.242. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) If you reach out to GitHub Support for help, please include the request ID FE01:33BEA7:350F12:BF0AEF:68BAFF3B and timestamp 2025-09-05 15:18:19 UTC.","documentation_url":"https://docs.github.com/rest/overview/rate-limits-for-the-rest-api","status":"403"}
Http response code: Forbidden from 'Delete https://api.github.com/repos/trilinostesting/Trilinos/actions/runners/73313' (Request Id: 8921:62C02:3262CB:B542C2:68BAFF40)
{"message":"API rate limit exceeded for 198.102.151.242. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) If you reach out to GitHub Support for help, please include the request ID 8921:62C02:3262CB:B542C2:68BAFF40 and timestamp 2025-09-05 15:18:24 UTC.","documentation_url":"https://docs.github.com/rest/overview/rate-limits-for-the-rest-api","status":"403"}
Http response code: Forbidden from 'Delete https://api.github.com/repos/trilinostesting/Trilinos/actions/runners/73313' (Request Id: 4E61:3DA50C:385769:CB2B42:68BAFF42)
{"message":"API rate limit exceeded for 198.102.151.242. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) If you reach out to GitHub Support for help, please include the request ID 4E61:3DA50C:385769:CB2B42:68BAFF42 and timestamp 2025-09-05 15:18:26 UTC.","documentation_url":"https://docs.github.com/rest/overview/rate-limits-for-the-rest-api","status":"403"}
Failed: Removing runner from the server
Response status code does not indicate success: 403 (Forbidden).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the ./config.sh remove --token entry point and trace the DELETE request to the repository runner endpoint shown in the report. Reproduce the failure with the documented registration and removal steps, then determine why removal receives the IP-based 403 while registration succeeds. Done means the runner can be unconfigured successfully without the reported rate-limit failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, shell
Domain
ci-cd, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.