Skip to main content
← Back to list
01Issue
BugOpenExtensionsPublic
AssigneesNone

Relationships

#3231 vercel/projects update: always resends the unchanged project name, which Vercel rejects with 409 "already exists"

Opened by kagarmoe · 10/10/2026

Summary

update on @swamp/vercel/projects (2026.10.08.1) can't update an existing project. It always puts the project's name in the PATCH body, even when the name hasn't changed. Vercel answers that same-name "rename" with 409 Project "<name>" already exists. So every update fails, whatever setting you're changing.

What happens

The model definition has name: ai-usage, and Vercel already has exactly one project named ai-usage, the one this model created. Nothing else in the team has that name: GET /v9/projects/ai-usage?teamId=… and GET /v10/projects?search=ai-usage&teamId=… both return only that project.

I added rootDirectory: site to the definition and ran:

swamp model method run dashboard-project update

Result:

Vercel API error: PATCH /v9/projects/prj_… returned 409: conflict: Project "ai-usage" already exists.

update builds the body from the global arguments, including if (g.name !== undefined) body.name = g.name; (models/projects.ts). name is required by create, so it is always set. The PATCH therefore always asks to "rename" ai-usage to ai-usage.

Isolated with the Vercel CLI (same project, same team)

PATCH body Result
{"name":"ai-usage"} (the project's current name, nothing else) Error: Project "ai-usage" already exists. (409)
{"rootDirectory":"site","commandForIgnoringBuildStep":"…"} (no name) 200, applied

After the second PATCH applied the settings, update still fails with the same 409, even though nothing differs.

Sending an unchanged name ought to be harmless, but this Vercel API rejects it, so the extension has to avoid sending it.

Expected

update applies changed settings, and sends name only when it differs from the stored project's name. update already loads the stored data as existing:

if (g.name !== undefined && g.name !== existing.name) body.name = g.name;

Workaround

PATCH without name using vercel api "/v9/projects/<id>?teamId=<team>" -X PATCH --input body.json. Then run swamp model method run <model> sync to refresh swamp's data.

Environment

  • swamp 20261009.202715.0-sha.773f3987
  • @swamp/vercel/projects 2026.10.08.1 (pulled 2026-10-10)
  • Vercel CLI 63.1.0, macOS
02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

10/10/2026, 6:58:48 PM

No activity in this phase yet.

03Sludge Pulse
Editable. Press Enter to edit.

system commented 10/10/2026, 6:58:48 PM

Classified automatically when this issue was filed.

  • Source: Extensions

If you feel this classification is incorrect, add a ripple to tell us so.

Sign in to post a ripple.