Skip to main content
← Back to list
01Issue
BugOpenSwamp CLIPublic
AssigneesNone

Relationships

#3313 extension pull: answering y to a dependency's overwrite prompt silently skips that dependency

Opened by skunk-ape · 10/12/2026

When the overwrite conflict is raised by a dependency rather than by the extension being pulled, confirming the prompt installs the parent but skips the dependency. Nothing reports it.

Cause: pullExtension (src/cli/commands/extension_pull.ts) catches the ConflictError and, before the forced retry, removes only the top-level ref name from alreadyPulled. The dependency's name was added to alreadyPulled during the first attempt, so on the retry installLocked returns undefined for it.

Reproduced in-process (found while working on swamp-club#2877):

  1. Parent @t/p depends on @t/d. @t/d's files exist under .swamp/pulled-extensions/@t/d/ with no lockfile entry.
  2. installExtension(parent, force false) throws ConflictError naming .swamp/pulled-extensions/@t/d/models/d.ts.
  3. As the CLI does: alreadyPulled.delete(parent), then retry with force true.
  4. Result: the parent's lockfile entry is written; dependencyResults is empty; @t/d has no lockfile entry; its local file is unchanged.

Expected: the forced retry installs the dependency too, or the pull reports that the dependency was not installed.

02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

10/12/2026, 7:47:30 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.