> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tappify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Retiring an extension

> Take an extension out of the Tap Store and off every install, with a window for owners to export.

Retiring removes the extension from the Tap Store and ends every install. Nothing in the CLI
or the portal brings it back.

```bash theme={null}
tappify extension retire
```

The command says what retiring does, then asks you to type the extension id before it
proceeds. `--yes` skips the typed confirmation for a script; without a terminal to ask in,
the command stops and tells you to pass it.

```
Retired Starter; every install now shows the retired notice.
Installs are revoked, and owners can export their documents for 30 days before the data is deleted.
```

## What happens

<Steps>
  <Step title="It leaves the Tap Store">
    New installs stop immediately, and so does opening the listing by id — an unlisted link
    stops working with it.
  </Step>

  <Step title="Every install is marked retired">
    Owners see `Starter was retired by its vendor. Your saved documents stay exportable for
            30 days.` where your surfaces were. The rest of their dashboard is unaffected.
  </Step>

  <Step title="Owner admins are notified">
    In their inbox, on every workspace that had an install.
  </Step>

  <Step title="Documents stay exportable for 30 days">
    An owner exports the install's hosted-storage documents as JSON from the install's page.
  </Step>

  <Step title="Then it is deleted">
    After 30 days the installs and their documents are removed.
  </Step>
</Steps>

A retired extension cannot be published, retired again, relisted, or have its signing secret
rotated. Owners keep the export for thirty days; after that the installs and their documents
are gone, and the only way back into the Tap Store is a new extension under a new id.

## Before you retire

* Publish a final release with notes saying what owners should do instead. They read notes on
  the install's page.
* If you only want to stop new installs, set
  [visibility](/extensions/publish/visibility) to `private` instead. Existing installs keep
  working.
* If you are replacing the extension, publish the replacement first and name it in the notes.
  Extension ids are immutable after the first publish, so a replacement is a new extension
  with a new id.
