Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneeszack

Relationships

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

Opened by skunk-ape · 10/12/2026· Shipped 10/16/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+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 11 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/16/2026, 5:54:45 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
zack assigned zack10/16/2026, 5:06:07 PM

Sign in to post a ripple.