> ## Documentation Index
> Fetch the complete documentation index at: https://boxrouter.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshoot Actions

> Fix a repository that is not ready, a job that stays queued, or a refused run, starting from the status or reason code you see.

Open **GitHub Actions** in the BoxRouter dashboard. Select a run to open its panel, or **Settings** to see repository status. To ask for help, send the repository name, the GitHub run link and the reason code (**Copy** puts it on your clipboard). Leave out tokens, provider keys, and workflow secrets.

## Repository Status

Each repository on the Actions **Settings** page shows one status.

| Status | Meaning | Fix |
| - | - | - |
| Turning On… | BoxRouter is checking the runner image. It then reads **Still Turning On**. | Wait for **On**, and don't switch the repository off and on. If the status changes to **Taking Longer Than Usual**, follow the message under it. |
| Not Ready | The repository can't run jobs yet: its runner image isn't verified, or the message names another reason. | Read the message and follow its action or link. If that doesn't help, send the reason code from **Details**. |
| Admin Required | BoxRouter hasn't confirmed your admin access to the repository on GitHub. | Verify with GitHub. If you aren't an administrator of the repository, ask one to turn it on. |
| Needs Attention | Something broke that BoxRouter can't repair on its own. | Read the message, which names the problem and the next step. If it doesn't help, send the reason code from **Details**. |
| Unavailable | BoxRouter can't reach the repository. | Check that the GitHub App still has access to it. |

A repository missing from the list is outside the App's installation, or your GitHub account can't manage it. Add it in GitHub's installation settings and refresh the list. See [Connect GitHub](https://boxrouter.ai/docs/github/connect.md).

## Jobs Can't Start

The Actions page shows **Jobs can't start** in two cases:

* Nothing can pay for the job (`funding_unavailable`). Connect a provider key that can run the size or add Credits, then re-run the refused workflow. A refused job never starts later by itself. See [who pays](https://boxrouter.ai/docs/actions/how-it-works.md#who-pays).
* GitHub suspended the BoxRouter App (`github_app_suspended`). Open GitHub's settings from the notice and unsuspend it.

For an unfunded job or a repository that is off, BoxRouter posts a **BoxRouter** check on the commit. It explains the cause and the fix. The check's result is `neutral`, which GitHub treats as passing even when the check is required, so it never blocks a merge.

For an unfunded job, BoxRouter also cancels the workflow run, but only when every unfinished job in it is a BoxRouter job. Other refused jobs stay queued on GitHub until you cancel them or GitHub times them out.

## Job Stays Queued

A GitHub job showing *Waiting for a runner* that never starts has one of these causes. Check in order:

1. `runs-on` holds exactly one supported BoxRouter label. A typo, a second BoxRouter label or an unsupported size is refused. See [Runner labels](https://boxrouter.ai/docs/actions/runners.md#runner-labels).
2. The repository is **On** and the App installation includes it.
3. The job runs in a private repository and came from a push, a dispatch or a same-repository pull request.
4. GitHub isn't waiting for an environment approval.
5. A connected provider key or Credits can supply the size. Check **Runner Sizes And Providers** on the Actions page.
6. Your workspace isn't at its 50 active jobs. The job starts when one finishes.

Correct the cause, cancel the queued job, and run it again.

## Refusals

A refused job starts no sandbox. The run panel shows a sentence and a reason code. Find the code below, grouped by what you change to fix it.

### Funding

| Reason Code | Cause | Fix |
| - | - | - |
| `funding_unavailable` | The workspace has no provider key or Credits to pay for the job. | Connect an eligible provider key or add Credits, then re-run. See [who pays](https://boxrouter.ai/docs/actions/how-it-works.md#who-pays). |
| `insufficient_credit`, `spend_limit_exceeded` | Credits or a spend limit stopped the job. | Add Credits or raise the limit in Settings. |

### Repository Setup

| Reason Code | Cause | Fix |
| - | - | - |
| `actions_disabled` | The repository is off. | A workspace administrator turns it on. |
| `repository_unbound`, `repository_binding_invalid` | The repository isn't connected to a workspace, or the connection is out of date. | Connect GitHub again, then turn the repository on. |
| `repository_admin_authority_changed` | The repository's GitHub administrators changed. | A workspace administrator turns the repository off and on. |
| `profile_unavailable` | The runner image isn't ready for this repository. | Wait for **On**. |
| `repository_not_private` | The repository is public. | None; public repositories don't run on BoxRouter. |

### Workflow

| Reason Code | Cause | Fix |
| - | - | - |
| `untrusted_workflow_origin`, `origin_not_allowed_by_policy` | The trigger is a fork pull request or an event your policy doesn't allow. | Use a push, a dispatch or a same-repository pull request. |
| `unsupported_runner_shape`, `unsupported_boxrouter_label`, `missing_boxrouter_label`, `conflicting_boxrouter_labels` | The label is malformed or unsupported, or the job has zero or several BoxRouter labels. | Use one label from [Runner labels](https://boxrouter.ai/docs/actions/runners.md#runner-labels). |

### Providers and Routes

| Reason Code | Cause | Fix |
| - | - | - |
| `no_eligible_routes`, `no_policy_routes` | No connected provider can run this size under your policy. | Pick a smaller size, connect a provider that offers it, or check **Settings → Where jobs can run**. |
| `provider_unsupported_for_actions`, `provider_not_connected` | The provider can't run the GitHub runner, or has no key or credits. | Use a provider the readiness check reports as ready. |

For any other code, send support the code with the run link. [Actions readiness](https://boxrouter.ai/docs/reference/get-actions-readiness.md) reports each provider's reason as an API field.

## During and After a Job

If a step fails, open the first failing step in the job log. The [runner image](https://boxrouter.ai/docs/actions/runners.md#actions-runner-image) is small, so a missing tool means the step has to install it.

If the job ends early with no failing step, check the reason in the run panel. Compare GitHub's elapsed time with the [time limit](https://boxrouter.ai/docs/actions/runners.md#time-limits) and the provider's cap in readiness. If a limit caused the stop, shorten or split the job. If unsure, send the run link and reason code to support.

If a cancel did nothing, remember that GitHub acknowledges a cancel request before the run stops. Check the run's status on GitHub before sending it again. Cancel through the run itself: disconnecting GitHub or removing the App cancels nothing.

If a sandbox is still listed, check the job's cleanup status on the [run page](https://boxrouter.ai/docs/actions/runs.md). `confirmed` means the sandbox was deleted; a record can remain visible. If cleanup stays `pending` or is `unknown`, send support both the run link and the sandbox link.

If the run shows no cost, BoxRouter has no trustworthy figure yet; see [Cost](https://boxrouter.ai/docs/actions/runs.md#cost).

## Stop Using BoxRouter for a Repository

Switch the repository off in **Settings**, or change `runs-on` back. Removing the App also stops new jobs; [cancel running jobs](https://boxrouter.ai/docs/actions/runs.md#cancel-and-re-run) first.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.