ARC listener "failed to create session" in CI
The RunnerScaleSet listener opens a long-lived message session with the GitHub Actions service to receive job assignments. "failed to create session" means that handshake was rejected, usually on auth, scope, or a stale session already held.
What this error means
The listener pod logs "failed to create session" and often crashes and restarts. No jobs get dispatched to runners while the session cannot open.
ERROR failed to create session
{"error": "the request was rejected: 403, or a session already exists
for this runner scale set"}Common causes
Credential lacks scope for the Actions service
The App or PAT authenticates to the REST API but is not authorized for the Actions service message session, producing a 403 during session creation.
A stale session from a previous listener
A prior listener did not release its session, so a new one is refused until the old session times out or the scale set is reset.
How to fix it
Check listener logs and credential scope
- Read the listener logs for the exact rejection code.
- Confirm the App has self-hosted runner administration and Actions read.
- If a stale session is reported, delete the listener pod so it re-registers.
kubectl logs -n arc-systems -l \
actions.github.com/scale-set-name=arc-runner-set --tail=100Recreate the AutoscalingRunnerSet to clear a stuck session
If the session stays stuck, uninstall and reinstall the scale set release so GitHub drops the old session server side.
helm uninstall arc-runner-set -n arc-runners
helm install arc-runner-set \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set \
-n arc-runners -f values.yamlHow to prevent it
- Grant the App the full runner administration scope up front.
- Avoid running two scale sets with the same name against one target.
- Let a listener shut down cleanly so it releases its session.