GitHub Actions "Unable to resolve action" - Fix uses: Reference Errors
A uses: reference points at an action GitHub cannot find: the owner/repo path is wrong, the tag or SHA does not exist, or the action is private and the token has no access.
What this error means
A step fails immediately with "Unable to resolve action <ref>, repository not found" or "unable to find version". No action code runs because the reference cannot be downloaded.
Error: Unable to resolve action actions/checkout@v99, unable to find version v99
# or
Error: Unable to resolve action my-org/private-action@main, repository not foundCommon causes
Wrong path or non-existent ref
The owner/repo is misspelled, or the @ref points at a tag, branch, or SHA that does not exist on that action repository.
Private action without access
The default GITHUB_TOKEN cannot read a private action in another repository or org unless access is explicitly granted.
How to fix it
Pin to a real, existing ref
Use the correct owner/repo and a tag or commit SHA that exists. Pinning to a full SHA is the most reliable and secure form.
- uses: actions/checkout@v4
# or pin by commit SHA for supply-chain safety
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11Grant access to a private action
- Add a token with read access to the action repository, or check out that repo first.
- In org settings, allow the workflow repository to access the private action repository.
- Reference local actions with a relative path (./.github/actions/foo) when they live in the same repo.
How to prevent it
- Pin actions to a tag or full commit SHA you have verified exists.
- Use Dependabot to keep action versions current and valid.
- Keep shared internal actions in a repo all consuming repos can read.