Turbo link -> HTTP status client error (403 Forbidden)

I moved to a monoreppo and want to use remote caching (using nextjs 15.4.5 and turbo 2.5.5).

The issue is pretty simple, turbo login returns [HTTP 403] request to https://vercel.com/api/v5/user/tokens/current returned "Not authorized", so I need to force it using turbo login --force and now it work like a charm.
The issue comes with turbo link, which returns me a 403 right after choosing my repo.
? Enable Vercel Remote Cache for ~/work/numo ? yes × Could not get user information: Error making HTTP request: HTTP status client error (403 Forbidden) for │ url (https://vercel.com/api/v2/user) ├─▶ Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/ │ user) ╰─▶ HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
I have no clue on why it happened, is there any way to relink the project or redo the link from scratch. But I’m stuck there and can’t find any reason why.

Here is my turbo.json
{
  "$schema": "https://turbo.build/schema.json",
  "ui": "tui",
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "inputs": ["$TURBO_DEFAULT$", ".env*"],
      "outputs": [".next/**", "!.next/cache/**"],
      "env": ["DATABASE_URL"]
    },
    "typecheck": {
      "dependsOn": ["^typecheck"]
    },
    "test": {
      "dependsOn": ["^build"],
      "cache": false
    },
    "test:unit": {
      "cache": false
    },
    "test:integration": {
      "dependsOn": ["^build"],
      "cache": false
    },
    "dev": {
      "cache": false,
      "persistent": true
    },
    "clean": {
      "cache": false
    }
  }
}

My packages.json is on pnpm working just fine but I don’t think it’s link to the issue

Hey, are you running this lon local machine or on a CI runner like GitHub action?

Currently on local machine only, I have legit no clue why it’s happening to me, I’ve done nothing “deep” it’s the basic turbo login/link.
Do you have any leads?

Can you run turbo login --output-logs=full when this happens and share us the output?

It’s only force with –force, but that might be a good indication that something is off

`2025-09-14T19:48:08.671+0200 [DEBUG] turborepo_lib::shim: Global turbo version: 2.5.62025-09-14T19:48:08.671+0200 [TRACE] turborepo_repository::package_json: loading package.json from /Users/nerap/work/numo/package.json2025-09-14T19:48:08.673+0200 [TRACE] turborepo_repository::package_json: loading package.json from /Users/nerap/work/package.json2025-09-14T19:48:08.673+0200 [TRACE] turborepo_repository::package_json: loading package.json from /Users/nerap/package.json2025-09-14T19:48:08.673+0200 [TRACE] turborepo_repository::package_json: loading package.json from /Users/package.json2025-09-14T19:48:08.673+0200 [TRACE] turborepo_repository::package_json: loading package.json from /package.json2025-09-14T19:48:08.673+0200 [DEBUG] turborepo_lib::shim: Repository Root: /Users/nerap/work/numo2025-09-14T19:48:08.673+0200 [DEBUG] turborepo_lib::shim::local_turbo_state: No local turbo binary found at: /Users/nerap/work/numo/node_modules/turbo-darwin-arm64/bin/turbo2025-09-14T19:48:08.673+0200 [DEBUG] turborepo_lib::shim::local_turbo_state: No local turbo binary found at: /Users/nerap/work/numo/node_modules/turbo/node_modules/turbo-darwin-arm64/bin/turbo2025-09-14T19:48:08.673+0200 [TRACE] turborepo_repository::package_json: loading package.json from /Users/nerap/work/numo/node_modules/.pnpm/turbo@2.5.6/node_modules/turbo-darwin-arm64/package.json2025-09-14T19:48:08.673+0200 [DEBUG] turborepo_lib::shim::local_turbo_state: Local turbo path: /Users/nerap/work/numo/node_modules/.pnpm/turbo-darwin-arm64@2.5.6/node_modules/turbo-darwin-arm64/bin/turbo2025-09-14T19:48:08.673+0200 [DEBUG] turborepo_lib::shim::local_turbo_state: Local turbo version: 2.5.62025-09-14T19:48:08.674+0200 [DEBUG] turborepo_lib::shim: Running local turbo binary in /Users/nerap/work/numo/node_modules/.pnpm/turbo-darwin-arm64@2.5.6/node_modules/turbo-darwin-arm64/bin/turbo

2025-09-14T19:48:08.674+0200 [DEBUG] turborepo_lib::shim: supports_skip_infer_and_single_package true2025-09-14T19:48:08.679+0200 [DEBUG] turborepo_lib::shim: Global turbo version: 2.5.62025-09-14T19:48:08.771+0200 [TRACE] turborepo_telemetry::config: Telemetry config path: /Users/nerap/Library/Application Support/turborepo/telemetry.jsonturbo 2.5.6

2025-09-14T19:48:08.917+0200 [DEBUG] turborepo_auth::auth::login: found existing turbo token2025-09-14T19:48:08.935+0200 [TRACE] log: signal: Want2025-09-14T19:48:08.935+0200 [TRACE] log: signal found waiting giver, notifying2025-09-14T19:48:08.935+0200 [TRACE] log: poll_want: taker wants!2025-09-14T19:48:08.935+0200 [TRACE] log: signal: Want2025-09-14T19:48:08.935+0200 [TRACE] log: signal found waiting giver, notifying2025-09-14T19:48:08.935+0200 [TRACE] log: poll_want: taker wants!2025-09-14T19:48:09.028+0200 [TRACE] log: signal: Want2025-09-14T19:48:09.028+0200 [TRACE] log: signal found waiting giver, notifying2025-09-14T19:48:09.028+0200 [TRACE] log: signal: Want2025-09-14T19:48:09.028+0200 [TRACE] log: poll_want: taker wants!2025-09-14T19:48:09.028+0200 [TRACE] log: signal: Want2025-09-14T19:48:09.099+0200 [TRACE] log: signal: Want2025-09-14T19:48:09.099+0200 [TRACE] log: signal found waiting giver, notifying2025-09-14T19:48:09.099+0200 [TRACE] log: signal: Want2025-09-14T19:48:09.099+0200 [TRACE] log: poll_want: taker wants!2025-09-14T19:48:09.099+0200 [TRACE] log: signal: Want2025-09-14T19:48:09.099+0200 [TRACE] turborepo_telemetry: Flushed telemetry event queue (num_events=10)2025-09-14T19:48:09.099+0200 [TRACE] log: signal: Closed2025-09-14T19:48:09.099+0200 [TRACE] log: signal: Closed2025-09-14T19:48:09.100+0200 [DEBUG] turborepo_telemetry: failed to record cache usage telemetry. error: Error making HTTP request: error sending request for url (https://telemetry.vercel.com/api/turborepo/v1/events)× [HTTP 403] request to https://vercel.com/api/v5/user/tokens/current returned “Not│ authorized”│ Try logging in again, or force a refresh of your token (turbo login --sso-team=your-team│ --force).`

Can you also share output of curl -4 ifconfig.me from same machine?

What Is My IP Address? - ifconfig.me
Need a robust API to Geolocate IPs and fetch other crucial information? Try IPinfo.io.

Your Connection

IP Address 90.127.8.85
User Agent Mozilla/5.0 (compatible; ExampleBot/1.0)
Language
Referer
Method GET
Encoding
MIME Type */*
Charset
X-Forwarded-For 90.127.8.85,34.160.111.145

Command Line Interface

$ curl ifconfig.me 90.127.8.85
$ curl ifconfig.me/ip 90.127.8.85
$ curl ifconfig.me/ua Mozilla/5.0 (compatible; ExampleBot/1.0)
$ curl ifconfig.me/lang
$ curl ifconfig.me/encoding
$ curl ifconfig.me/mime */*
$ curl ifconfig.me/charset
$ curl ifconfig.me/forwarded 90.127.8.85,34.160.111.145
$ curl ifconfig.me/all ip_addr: 90.127.8.85
remote_host: unavailable
user_agent: Mozilla/5.0 (compatible; ExampleBot/1.0)
port: 49452
language:
referer:
connection:
keep_alive:
method: GET
encoding:
mime: */*
charset:
via: 1.1 google
forwarded: 90.127.8.85,34.160.111.145

$ curl ifconfig.me/all.json {"ip_addr":"90.127.8.85","user_agent":"Mozilla/5.0 (compatible; ExampleBot/1.0)","port":"49452","method":"GET","mime":"*/*","via":"1.1 google","forwarded":"90.127.8.85,34.160.111.145"}
© 2024 ifconfig.me

I have the same issue, I tried

npx turbo login –force

and it generates a new token, but I get 403 again running

npx turbo link

output:

turbo 2.5.6


>>> Remote Caching

Remote Caching makes your caching multiplayer,
sharing build outputs and logs between developers and CI/CD systems.

Build and deploy faster.

For more information, visit: https://turborepo.com/docs/core-concepts/remote-caching

? Enable Vercel Remote Cache for ~/Projects/[***] ? yes
  × Could not get user information: Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
  ├─▶ Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
  ╰─▶ HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)

I have the exact same issue, running turbo login --force:

turbo 2.5.8

>>> Opening browser to https://vercel.com/turborepo/token?redirect_uri=http%3A%2F%2F127.0.0.1%3A9789

>>> Success! Turborepo CLI authorized for egeaksun@gmail.com
To connect to your Remote Cache, run the following in any turborepo:
  npx turbo link

then running npx turbo link:

turbo 2.5.8


>>> Remote Caching

Remote Caching makes your caching multiplayer,
sharing build outputs and logs between developers and CI/CD systems.

Build and deploy faster.

For more information, visit: https://turborepo.com/docs/core-concepts/remote-caching

? Enable Vercel Remote Cache for ~/Desktop/neue7 ? yes
  × Could not get user information: Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
  ├─▶ Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
  ╰─▶ HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)

On local machine, macOS, latest version of turbo (v2.5.8). I don’t know what is causing this, but I had it working fine previously. Understood it broke once I started getting “insufficient permissions” warnings regarding uploading cache while building locally.

Hi, could you try running turbo login && turbo link --scope together and let us know if you are seeing this as well?

facing the same issue. Here is the output

➜ git:(noqcks/upgrade-turbo) turbo login --force && turbo link --scope=<myteam>
turbo 2.5.8

>>> Opening browser to https://vercel.com/turborepo/token?redirect_uri=http%3A%2F%2F127.0.0.1%3A9789

>>> Success! Turborepo CLI authorized for benji@<mydomain>.org
To connect to your Remote Cache, run the following in any turborepo:
  npx turbo link

turbo 2.5.8


>>> Remote Caching

Remote Caching makes your caching multiplayer,
sharing build outputs and logs between developers and CI/CD systems.

Build and deploy faster.

For more information, visit: https://turborepo.com/docs/core-concepts/remote-caching

? Enable Vercel Remote Cache for ~/data/<ghorg>/<repo> ? yes
  × Could not get user information: Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
  ├─▶ Error making HTTP request: HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)
  ╰─▶ HTTP status client error (403 Forbidden) for url (https://vercel.com/api/v2/user)

the same issue if I leave out the scope.

And if I add sso-team

turbo login --force --sso-team=<vercelteamslug> && turbo link --scope=<vercelteamslug>
turbo 2.5.8

>>> Opening browser to https://vercel.com/api/auth/sso?teamId=<vercelteamslug>&mode=login&next=http%3A%2F%2F127.0.0.1%3A9789
  × failed to get token

I’ve noticed that the remote caching docs are outdated too. I see no Remote Caching section in my teams billing section, that’s now in the Build and Deployment section.

What fixed this for me is instead of using –force running turbo logout and then going through the steps again as normal without –force

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.