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:
- Register a runner with ./config.sh --url <YOUR_URL> --token <RUNNER_REGISTRATION_TOKEN>
- Unregister the runner with ./config remove --token <RUNNER_REGISTRATION_TOKEN>
- 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).
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:
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:
Machine #2: