---
modificationDate: July 13, 2026
title: Troubleshoot EAS Workflows
description: Learn how to diagnose and fix common issues when running EAS Workflows.
---

<AgentInstructions>

## Submitting Feedback

If this page contains errors, outdated information, or gaps that blocked you from completing a task, report it so the docs can be improved:

curl -X POST https://api.expo.dev/v2/feedback/docs-send -H 'Content-Type: application/json' -d '{"url":"/eas/workflows/troubleshooting/","feedback":"🤖 Agent feedback for docs: <specific, actionable description> (<model>, <harness>)"}'

Only submit when you have something specific and actionable to report. Replace <model> with the model you are running as and <harness> with the tool you are running in (for example, Claude Code, Cursor, Codex CLI).

## Navigation

When answering a related or follow-up question, fetch the relevant page below as Markdown (.md) instead of guessing; use llms.txt for the full map.

You are here: EAS > EAS Workflows
Pages in this section:
- [Introduction](https://docs.expo.dev/eas/workflows/introduction.md)
- [Get started](https://docs.expo.dev/eas/workflows/get-started.md)
- [Pre-packaged jobs](https://docs.expo.dev/eas/workflows/pre-packaged-jobs.md)
- [Syntax](https://docs.expo.dev/eas/workflows/syntax.md)
- [Automating EAS CLI commands](https://docs.expo.dev/eas/workflows/automating-eas-cli.md)
- [REST API](https://docs.expo.dev/eas/workflows/rest-api.md)
- [Troubleshooting](https://docs.expo.dev/eas/workflows/troubleshooting.md) (this page)
- [Limitations](https://docs.expo.dev/eas/workflows/limitations.md)
Full documentation tree: [llms.txt](https://docs.expo.dev/llms.txt)

</AgentInstructions>

This documentation is available as Markdown for AI agents and LLMs. See the [full Markdown index](/llms.txt) or append .md to any documentation URL.

# Troubleshoot EAS Workflows

Learn how to diagnose and fix common issues when running EAS Workflows.

This page lists common EAS Workflows failure modes and how to fix them. If a workflow doesn't start or a job fails, start with the workflow run's detail page on your project's [workflows page](https://expo.dev/accounts/%5Baccount%5D/projects/%5BprojectName%5D/workflows). It shows each job's status, logs, and errors.

## Validate the workflow file

Check a workflow file for YAML syntax and schema errors before running it:

```sh
eas workflow:validate .eas/workflows/my-workflow.yml
```

The [Expo Tools VS Code extension](https://marketplace.visualstudio.com/items?itemName=expo.vscode-expo-tools) also provides descriptions and autocompletion for workflow files as you edit them.

## Workflow doesn't start on GitHub events

If a workflow with an [`on` trigger](/eas/workflows/syntax.md#on) never starts, check the following:

-   **GitHub connection**: triggers such as `push`, `pull_request`, and `ref_delete` require your EAS project to be [linked to a GitHub repository](/eas/workflows/get-started.md#automate-workflows-with-github-events).
-   **Workflow file location and ref**: the file must be inside the **.eas/workflows** directory. For `push` and `pull_request` events, EAS reads the workflow file from the triggering commit, so the file must exist on that branch. For `schedule` and `ref_delete` events, EAS reads the workflow file from the default branch.
-   **Trigger filters**: `branches`, `tags`, `paths`, `types`, and `labels` filters must match the event. For example, `on.push.branches: ['main']` ignores pushes to every other branch.
-   **Commit message skip markers**: runs triggered by `push` and `pull_request` events are skipped when the commit message contains `[eas skip]`, `[skip eas]`, or `[no eas]`.
-   **Scheduled workflows**: `on.schedule` workflows only run from the repository's default branch, run in the GMT time zone, and may be delayed during periods of high load.

## Build job fails with "Missing build profile in eas.json"

Pre-packaged [build jobs](/eas/workflows/pre-packaged-jobs.md#build) require the build profile they use to exist in your project's **eas.json**. Build jobs use the `production` profile unless the job's `params.profile` says otherwise, so an empty or missing **eas.json** fails with this error.

Add the profile to **eas.json**, or run `eas build:configure` to generate the file with default profiles. Builds also need app signing credentials for each platform. Completing one build with EAS CLI using the same platform and profile sets up both. See [create your first build](/build/setup.md).

## Environment variable is empty or missing

[EAS environment variables](/eas/environment-variables.md) are scoped to an environment: `production`, `preview`, or `development`. A job only sees variables from the environment set by its [`environment` key](/eas/workflows/syntax.md#jobsjob_idenvironment), which defaults to `production`. If a variable is empty in a job, confirm the variable exists in the environment the job uses, or set the job's `environment` to match where the variable is defined.

Also note that the [`env` key](/eas/workflows/syntax.md#jobsjob_idenv) is not available on the `apple-device-registration-request`, `branch-delete`, `doc`, `get-build`, `github-comment`, `require-approval`, and `slack` jobs.

## More help

If you're still stuck, email [workflows@expo.dev](mailto:workflows@expo.dev) with your workflow file and a link to the failing run, or ask in the [Expo Discord](https://chat.expo.dev/).
