Turborepo remote cache 403 / bad TURBO_TOKEN in CI
A 403 from the remote cache means turbo authenticated but was refused: the token is invalid or lacks access, or TURBO_TEAM does not match the token. The endpoint is reachable; the credential pairing is wrong.
What this error means
turbo remote caching fails with a 403 Forbidden response, or reports the token is unauthorized, so it uses the local cache only.
Turborepo
WARNING failed to push artifact: 403 Forbidden
check TURBO_TOKEN and TURBO_TEAM are set and matchCommon causes
TURBO_TOKEN is invalid or lacks access
A revoked, mistyped, or under-scoped token authenticates but is refused access to the team cache with 403.
TURBO_TEAM does not match the token
The token belongs to a different team than TURBO_TEAM names, so the pairing is unauthorized.
How to fix it
Align token and team
- Confirm
TURBO_TOKENis a current token for the team. - Set
TURBO_TEAMto the exact team slug the token belongs to. - Re-run and confirm the 403 clears.
.github/workflows/ci.yml
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}Rotate the token if it was revoked
A 403 does not clear on retry. Issue a fresh token with cache access and update the secret.
How to prevent it
- Keep
TURBO_TOKENcurrent and scoped for cache access. - Match
TURBO_TEAMto the token owner exactly. - Rotate tokens in one place and update the secret when you do.
Related guides
Turborepo "failed to contact remote cache" in CIFix Turborepo "failed to contact remote cache" in CI - turbo could not reach the remote cache endpoint, usual…
Nx Cloud 401 Unauthorized in CIFix Nx Cloud 401 Unauthorized in CI - the access token reached Nx Cloud but was rejected as invalid, revoked,…
Turborepo "no output files found for task" (cache saves nothing) in CIFix Turborepo "no output files found for task" in CI - the task declares no matching outputs, so turbo caches…