Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

netlify deploy fails with misleading "Project not found" when extensions fetch returns 403 under send_build_bot_token_to_jigsaw (non-Owner / PAT)

Aperta
#8,619 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
20/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
cli

Direzione di ricerca

The failure starts in the extensions fetch against api.netlifysdk.com, which sends the PAT as Netlify-SDK-Build-Bot-Token when the site has send_build_bot_token_to_jigsaw set. Reproduce the two curl calls in the report to confirm the 200 and 403 split, then find where @netlify/config handles that 403 and where the offline fallback produces "Project not found". Done means a non-Owner static deploy succeeds, or the extensions 403 is reported as a permissions problem instead of the link error.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

type: bug
Describe the bug

On an Enterprise team (Okta/SSO), netlify deploy --site <site_id> --dir … --prod --no-build fails even though the site ID is valid and the auth token can successfully GET /api/v1/sites/:id.

With site feature flag send_build_bot_token_to_jigsaw: true, @netlify/config sends the user PAT as Netlify-SDK-Build-Bot-Token to Jigsaw. That call returns 403. The CLI then falls back to offline config resolution and reports:

Error: Project not found. Please rerun "netlify link"

That error is misleading: the project exists and is addressable; linking is not the problem.

Isolated comparison against the same extensions URL
(https://api.netlifysdk.com/team/<account_id>/integrations/installations/meta/<site_id>):

  • Headers Netlify-Config-Mode: cli + User-Agent only → 200 []
  • Same + Netlify-SDK-Build-Bot-Token: <PAT> → 403

Per Netlify roles docs, only Owner can install/uninstall extensions. A Developer (or other non-Owner) can still need to deploy a prebuilt static site. Making extensions fetch hard-fail blocks those deploys and hides the real cause.

Expected: static --dir / --no-build deploy should succeed (or soft-fail extensions to []), and errors should report the extensions 403 / permissions issue—not “Project not found / netlify link”.

Workaround: upload via Sites API zip deploy (POST /api/v1/sites/:id/deploys with Content-Type: application/zip), which does not call Jigsaw.

Steps to reproduce
  1. Use a site with send_build_bot_token_to_jigsaw: true (GET /api/v1/sites/:id?feature_flags=cli).
  2. Authenticate as a non-Owner (e.g. Developer) with a PAT that has SAML team access and can read the site.
  3. Build a static site into dist/ (no Netlify Functions/extensions required).
  4. Run:
npx [email protected] deploy \
  --dir=dist \
  --prod \
  --no-build \
  --debug \
  --site=<site_uuid>
  1. Observe debug warnings about extensions 403, then offline fallback, then:
Error: Project not found. Please rerun "netlify link"
  1. Optionally confirm with curl:
# 200 without build-bot token
curl -sS -o /dev/null -w "%{http_code}\n" \
  -H "Netlify-Config-Mode: cli" \
  -H "User-Agent: Netlify Config (mode:cli) / 25.2.6" \
  "https://api.netlifysdk.com/team/<account_id>/integrations/installations/meta/<site_id>"
# 403 with PAT as build-bot token
curl -sS -o /dev/null -w "%{http_code}\n" \
  -H "Netlify-Config-Mode: cli" \
  -H "User-Agent: Netlify Config (mode:cli) / 25.2.6" \
  -H "Netlify-SDK-Build-Bot-Token: $NETLIFY_AUTH_TOKEN" \
  "https://api.netlifysdk.com/team/<account_id>/integrations/installations/meta/<site_id>"
Configuration

There is no netlify.toml for this project. Deploy is a prebuilt static upload only (--dir=dist --prod --no-build --site=<uuid>). No Netlify Functions, Edge Functions, or Extensions are configured for the site.

Relevant site feature flags (excerpt from GET /api/v1/sites/:id?feature_flags=cli):

{
  "send_build_bot_token_to_jigsaw": true,
  "cli_fetch_integrations": true,
  "auto_install_required_extensions_v2": true
}
Environment

System:
OS: macOS 26.6.2
CPU: (11) arm64 Apple M3 Pro
Memory: 97.36 MB / 18.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 24.18.0 - ~/node/24.18.0/bin/node
npm: 11.10.1 - ~/npm/11.10.1/bin/npm

Lingua principale
TypeScript
Stelle
1.9k
Fork
480
Merge medio
1g 9h
PR unite (30g)
60

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di netlify/cli

Tutte le issue di netlify/cli

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.