remove
Synopsis
Section titled “Synopsis”rigger remove <id>... [--yes] [--scope=<user|project>] [--assistant=<claude|opencode>]rigger <resource> remove <id>...Uninstalls artifacts recorded in the manifest. It is manifest-first and fully offline: the catalog plays no role. Each entry’s applied payload is replayed in reverse to undo the install precisely. Every removal is previewed and confirmed before anything is deleted.
Arguments
Section titled “Arguments”| Argument | Required | Meaning |
|---|---|---|
<id>... |
yes | Qualified ids (<catalog>/<nature>:<name>) to uninstall. |
Removal plan
Section titled “Removal plan”The plan lists one group per artifact. Each op names what it undoes:
| Op | Undoes |
|---|---|
deny (-N) / allow (-N) |
Guardrail rules removed from settings.json. |
unimport |
A managed context block removed. |
restore |
A file returned to its pre-install content. |
delete |
A file deleted. |
unlink |
A symlink removed. A store line follows, marking the store (deleted — last reference) or (kept — still referenced). |
uninstall |
A plugin uninstalled through the assistant (the claude plugin uninstall <name> command is shown). |
un-hook |
A hook deregistered. |
Special cases
Section titled “Special cases”- Drift left alone. If an on-disk target no longer matches what was installed, remove leaves it in place and warns. A hand-edited file is never deleted.
- Already absent. An entry whose target already vanished is purged from the manifest without
touching disk and without a prompt, reported as
purged (already absent). - Packs. A pack is expanded at install time and never recorded as such. Remove its member artifacts instead. Requesting a pack id reports that packs are expanded at install time and lists what is installed.
Backups
Section titled “Backups”Before overwriting or restoring a file, remove writes a
.bak-* copy alongside it, reported as
[backup] N file(s) backed up.
Interactive vs non-interactive
Section titled “Interactive vs non-interactive”In a TTY, remove prints the plan and asks to confirm.
Declining removes nothing and reports [aborted] Removal cancelled by user. A pure purge (only
already-absent entries) mutates the manifest alone and proceeds without a prompt. A non-interactive
session without --yes exits 2 before any mutation.
| Flag | Effect |
|---|---|
--yes |
Skip the confirmation prompt. Required in a non-interactive session. |
--scope=<user|project> |
Target scope. Default user. |
--assistant=<claude|opencode> |
Target assistant. Default resolved from the manifest of the requested ids. |
Exit codes
Section titled “Exit codes”| Code | Condition |
|---|---|
0 |
Removed, purged, nothing to remove, or declined. |
2 |
Unqualified id, id not installed, or non-interactive without --yes. |
130 |
Interrupted. |
Removing an id the manifest does not know at the target --scope/--assistant exits 2 with
[error] Artifact "<id>" is not installed. If the id is installed at a different
--scope/--assistant, the message names where instead of listing it as installed (and gives the
exact invocation when one can succeed from any directory). Otherwise it lists what’s installed at
the identity queried (Installed entries for scope "<scope>", assistant "<assistant>": <ids>., or
Nothing is installed for scope "<scope>", assistant "<assistant>". when nothing is). When the
identity queried is a lib’s own singleton, both forms name it instead of an assistant:
Installed entries for scope "<scope>" as a shared lib: <ids>. and Nothing is installed for scope "<scope>" as a shared lib.
Example
Section titled “Example”rigger remove team/skill:spec-workflowSee exit codes for the shared contract.