Skip to content

uninstall --local leaves the .zed/settings.json it created and an empty .kiro/ #678

Description

@filip131311

argent uninstall --local leaves behind the .zed/settings.json it created (holding only argent's own stanza) and an empty .kiro/.

Split out of #622, which is about the destructive ordering of uninstall. These two are cleanup-completeness bugs on a different path, with no failure involved — worth fixing separately.

Reproduced on 0.18.0 (Linux, Lima VM)

Workspace created empty, so every dot-directory below was created by argent init itself:

mkdir local-repro && cd local-repro
npm init -y
argent init -y --local
argent uninstall -y --local          # succeeds, exit 0

Leftovers:

.kiro  .zed  node_modules  package-lock.json  package.json

.kiro/                     ← empty; created by init, never removed
.zed/settings.json         ← created by init, still contains ONLY argent's stanza:
   {
     "agent": { "tool_permissions": { "default": "confirm" } }
   }

argent created that file and that directory and leaves both behind containing nothing but argent configuration. A user who never used Zed now has a .zed/ in their repo after installing and uninstalling argent.

The global path gets this right

The same test in global mode ends at a bare ./package.json — every directory argent created is removed, including the now-empty parents. So the writers themselves are fine; the --local teardown is the gap.

Correctness note for whoever fixes it

The cleanup must only remove a settings file argent created. If the user already had .zed/settings.json with their own keys, argent injects into it and must then remove only its own stanza and leave the file. I verified that direction separately: with a pre-existing .zed/settings.json containing {"theme": "One Dark"}, init left it untouched and uninstall left it untouched — so the injection only happens in some conditions, and the fix needs to distinguish "file is entirely ours" from "we added a stanza to theirs".

Not reproducible, for the record

The third adjacent claim in #622 — dangling skill symlinks in .claude/skills/ after uninstall --local — does not reproduce on 0.18.0. In both global and local mode skills materialize as real directories under .agents/skills, find . -xtype l is empty before and after, and .claude/ is removed entirely. Either already fixed or specific to an older layout.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions