Troubleshooting GitHub Actions runners
This guide provides troubleshooting steps for common issues when using Depot-hosted GitHub Actions runners.
Runner startup time
When you start a new GitHub job using Depot GitHub Actions runners, you'll notice a brief delay before the runner is ready. Expect typical startup times to range from 10 to 45 seconds.
The startup process involves two main steps:
- Provision AWS hardware (approximately 15 seconds): Depot provisions fresh compute instances for each job with significant optimizations to the AWS startup process and pre-caching.
- Register the GitHub Actions runner (variable time): GitHub's control plane needs to register, authorize, and connect the runner. This timing varies based on GitHub's current load and rate limiting.
Depot typically expects GitHub's control plane to take less than 1 second to send a job request to Depot API. Depot then allocates AWS hardware in approximately 15 seconds. After that, GitHub usually connects to the runner in under 7 seconds, and sends the job to the runner in under a second.
You can check the detailed timing breakdown for the last jobs in your Depot dashboard in the graph at the top of the GitHub Actions page.
Depot bills only for the time after the job has started running (tracked by the second), not provisioning time.
When to contact support
If you consistently see allocation times longer than 1 minute during normal operation, reach out to support for investigation.
Did this solve your problem?
Workflows not starting on initial configuration
If your GitHub Actions workflow remains in a queued state when first setting up Depot runners, the runner likely can't be allocated to your job.
How to resolve
Check your runner labels
Use a single runner label in your workflow configuration. While GitHub Actions supports specifying multiple labels in an array, this can cause stability issues.
Correct usage:
runs-on: depot-ubuntu-24.04-4Avoid using multiple labels:
# Do *not* do this:
runs-on: [self-hosted, depot-ubuntu-24.04]Verify repository access
Depot runners register in the "default runner group" in GitHub. Check the repository access settings for the runner group to ensure your repo can use these runners:
- Go to your GitHub organization settings
- Navigate to Actions > Runner groups
- Select the "Default" runner group
- Verify the allowed repositories list includes your repository. For public repositories, enable Allow public repositories.
Note: If you've configured the Selected workflows filter for your runner group, an incorrect workflow reference pattern can prevent jobs from starting even when runners are available.
Confirm app permissions
The "Depot Managed Runners" GitHub app must have permission to see your repo. You can confirm your app is active in the organization settings under GitHub Actions Runners
If your workflow still gets stuck after checking these settings, reach out to support with your workflow run URL and repository name for investigation of the runner allocation issue.
Did this solve your problem?
Jobs appear as long-running in the dashboard
Sometimes jobs may appear as long-running in the Depot dashboard even though they've completed on GitHub. This happens when GitHub doesn't correctly inform Depot that a job has finished.
Important: Billing isn't affected by stale jobs. Depot only bills for the time the job actually runs on a runner instance.
Stale jobs eventually time out on their own. However, if you need immediate resolution, Depot can manually run a resync with GitHub to clear the job and update the UI to reflect the correct status.
How to resolve
Check the job status directly in your GitHub Actions tab to confirm its cancellation or completion.
If the job remains stale in the Depot dashboard and you need it cleared immediately, reach out to support with:
- Your organization name
- The repository and workflow run URL
- The job name or ID that appears stale
The support team will trigger a manual resync with GitHub to update the job status.
Did this solve your problem?
Error: Failed to write to Depot job log - No space left on device
This error occurs when your build process needs more disk space than your runner has available.
Each Depot runner type has a set amount of disk space. The OS and pre-installed software consumes approximately 70 GB, and the remaining space is available for your builds. For runner specifications, see Depot Runner Types.
How to resolve
Upgrade to a larger runner size
To use a runner with more disk capacity, specify a larger runner type in your workflow configuration:
runs-on: depot-ubuntu-24.04-8 # 8 vCPU, more disk spaceIf you continue to hit disk space limits even on larger runner sizes, reach out to support with your workflow details for help optimizing your build process or discussing custom runner configurations.
Disk space cleanup
Clean up unnecessary files before and during your build process. For example, you can remove temporary files and clean package caches on Linux workflows:
- name: Clean up disk space
run: |
rm -rf /tmp/*
sudo apt-get cleanUse disk cleanup actions
Several GitHub Actions can help manage disk space automatically. Popular options include actions that remove unused tools, or clear system caches.
Did this solve your problem?
Error: Failed to open the device 'kvm': No such file or directory
This error occurs when a workflow tries to use KVM hardware acceleration on a runner that doesn't expose /dev/kvm.
You may see one of these errors:
Failed to open the device 'kvm': No such file or directory
Error: Process completed with exit code 1.Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize kvm: No such file or directoryDepot GitHub Actions runners don't currently provide /dev/kvm. Nested virtualization support is available only in
Depot CI sandboxes, where /dev/kvm is enabled by default with no extra
configuration.
How to resolve
If the job requires KVM hardware acceleration, consider moving that workflow job to Depot CI. This is common for Android Emulator tests, QEMU/KVM workloads, VM-based end-to-end test environments, and other tools that require hardware virtualization inside the CI job:
jobs:
android-tests:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: ./gradlew connectedAndroidTestFor migration steps, see the Depot CI quickstart.
Did this solve your problem?
Error: The self-hosted runner lost communication with the server
The following error typically indicates a temporary connectivity issue between the Depot runner and GitHub's servers:
The self-hosted runner lost communication with the server. Verify the machine is running and has a healthy network connection. Anything in your workflow that terminates the runner process, starves it for CPU/Memory, or blocks its network access can cause this error.How to resolve
Check for service outages
Check status.depot.dev and GitHub's status page for any reported outages. If Depot or GitHub is experiencing an incident, monitor the status pages and wait for the resolution. Once the issue resolves, retry your workflow run.
Check resource usage
Check the CPU and memory usage of your build process. Open the job details in your Depot dashboard and look at the resource usage graphs at the top of the page. If your build consumes excessive CPU or memory, consider optimizing your build steps to reduce resource consumption.
Check your organization's usage limits
This error can occur when your organization has reached its self-imposed usage limit. When you reach the limit, builds won't start until the next billing period or until you adjust the limit. To check and update your usage limits:
- Open the organization settings page in your Depot dashboard.
- In the Usage caps section, review your current GitHub Actions minutes limit.
- Either remove the limit or increase it to allow builds to continue.
- Click Update limit.
If you continue to see this error, reach out to support with your workflow run URL and the approximate time the error occurred for investigation of specific connectivity issues affecting your builds.
Did this solve your problem?
Error: Step canceled by GitHub
This error indicates that GitHub terminated your job before it completed. Some common reasons for workflow cancellation include manual cancellation, workflow concurrency settings, or memory exhaustion.
How to resolve
Manual cancellation
Manual cancellation through the GitHub UI causes this error most commonly. Check your workflow run history to confirm whether someone clicked the cancel button for this job or workflow run.
Workflow concurrency settings
If you set cancel-in-progress: true in your workflow's concurrency settings, GitHub automatically cancels running workflows when a new run starts:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueIf you're seeing unexpected cancellations, review your concurrency configuration to ensure it matches your desired behavior.
Memory exhaustion
Memory exhaustion on the runner can also cause this error. To investigate:
- Open your job details page in the Depot dashboard
- Review the memory usage graph at the top of the page
- Check if memory consumption reached or exceeded the available capacity
If memory usage consistently runs high or maxes out:
- Upgrade to a larger runner type with more memory capacity. See Depot Runner Types for available options.
- Optimize your build process to reduce memory consumption
- Split large jobs into smaller, parallel jobs
If you've verified these causes and the issue persists, reach out to support with your workflow run URL and job details for further investigation.
Did this solve your problem?
Error: Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable
This error occurs when using the Depot CLI or Depot actions (like depot/build-push-action) in Dependabot workflows. Depot uses the ACTIONS_ID_TOKEN_REQUEST_URL environment variable to fetch JWTs from GitHub's OpenID Connect (OIDC) provider for authentication. Because Dependabot workflows don't support OIDC authentication, GitHub doesn't set this variable.
How to resolve
Follow GitHub's instructions to add a repository secret for Dependabot. Name the secret DEPOT_TOKEN and set its value to a Depot organization token.
Then pass the token explicitly in your workflow:
For Depot actions:
steps:
- uses: depot/setup-action@v1
- uses: depot/build-push-action@v1
with:
token: ${{ secrets.DEPOT_TOKEN }}For Depot CLI:
steps:
- uses: depot/setup-action@v1
with:
token: ${{ secrets.DEPOT_TOKEN }}
- run: depot build .Providing the token in your workflow bypasses OIDC authentication and allows Dependabot workflows to authenticate with Depot.
Did this solve your problem?
Unable to cancel GitHub Actions workflow
Unrelated to Depot, GitHub Actions workflows sometimes become stuck and don't respond to normal cancel requests through the GitHub UI. When this happens, you can use the GitHub REST API to force cancel the workflow run.
How to resolve
Find the run ID of the stuck workflow from your GitHub Actions page. It's in the URL: github.com/{owner}/{repo}/actions/runs/{run_id}
After obtaining the run ID, you can use the GitHub API to attempt a regular cancel:
curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://api.github.com/repos/{owner}/{repo}/actions/runs/{run_id}/cancelIf the workflow doesn't respond, use the force cancel option:
curl -X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://api.github.com/repos/{owner}/{repo}/actions/runs/{run_id}/force-cancelImportant: Use force cancel only when necessary, as it bypasses normal workflow conditions and cleanup steps.
For more details, see GitHub's official REST API documentation.
If you frequently encounter stuck workflows with Depot runners specifically, reach out to support for investigation of potential underlying issues.
Did this solve your problem?
SSH access to Depot GitHub Actions runners
Sometimes you may need to inspect the running environment to diagnose an issue. Depot GitHub Actions runners are compatible with action-tmate, a GitHub Action that allows you to create an SSH session during your workflow run.
How to set up SSH access
Add action-tmate to your workflow
Integrate action-tmate into your CI pipeline by adding it as a step in your workflow file:
steps:
- uses: actions/checkout@v4
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
- name: Run tests
run: npm testConnect to your runner
When your job reaches the action-tmate step, open the Checks tab in your Pull Request and scroll to the bottom. You can connect either directly per SSH or via a web based terminal.
Debug and exit
Inspect the environment, run commands, and debug as needed. Once done, you can exit the SSH session and let the CI job continue.
For additional information and usage scenarios, visit the action-tmate GitHub page.
Note: Depot doesn't maintain the action-tmate action. Please report any issues or problems on the project GitHub page.
Did this solve your problem?
Delayed allocation for macOS runners
macOS build jobs may experience longer wait times to start processing when demand is higher than normal.
Apple's licensing requires a minimum 24-hour lease for macOS instances, which results in the following constraints:
- No autoscaling: Unlike Linux and Windows runners that can spin up and down based on demand, macOS instances can't be dynamically provisioned.
- Fixed pool size: Depot maintains a constant number of macOS runners that operate continuously.
- First In, First Out (FIFO) processing: Jobs process in the order they arrive.
- Jobs queue if demand spikes unexpectedly: When demand exceeds the fixed macOS runner capacity, jobs enter a queue and wait for the next available runner.
Dedicated macOS runners
For organizations requiring more predictable build times, Depot offers the option to reserve dedicated macOS runner instances exclusively for your organization. Your jobs run immediately on your dedicated runners when available. If all your dedicated runners are busy processing jobs, additional jobs can still fall back to the shared pool.
Dedicated runners require an annual commitment for fixed capacity tailored to your concurrent job needs.
Contact our support team to learn more about dedicated macOS runners and pricing.
Did this solve your problem?
Additional support
If you can't find a solution in this guide or the Depot GitHub Actions documentation, reach out to support.