Skip to content
Latchkey

Turborepo "--filter" Matched No Packages in CI

A turbo run ... --filter=<pattern> matched no packages, so turbo ran nothing. The filter does not resolve - a wrong package name, a bad scope glob, or a [git-range] filter that finds no changes (often because the clone is shallow).

What this error means

turbo prints "No package found with name" or "no tasks to run" and exits successfully having done nothing. CI silently builds/tests zero packages, which can mask real work being skipped.

turbo output
  × No package found with name "@acme/uii" in workspace
# or, with a git filter on a shallow clone:
  • Packages in scope:
  • Running build in 0 packages

Common causes

Filter name or scope does not match

A typo in the package name or a scope glob (@acme/*) that matches nothing leaves the filter empty.

Git-range filter finds no changes

A --filter=...[origin/main] filter compares against a base. On a shallow CI clone the base is missing, so turbo sees no changed packages and runs nothing.

How to fix it

Confirm what the filter resolves to

Dry-run the filter to see which packages it selects before committing it to CI.

Terminal
turbo run build --filter="@acme/*" --dry=json | jq '.packages'

Fetch history for git-range filters

Provide full history so [base] filters can diff against a present commit.

.github/workflows/ci.yml
- uses: actions/checkout@v4
  with:
    fetch-depth: 0
- run: turbo run build --filter="...[origin/main]"

How to prevent it

  • Validate filters with --dry so an empty match is caught, not silently skipped.
  • Use fetch-depth: 0 for [git-range] filters.
  • Reference packages by their exact name in filters.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →