Skip to content

Deleting or unpublishing a plugin returns 200 but the plugin stays published #438

Open

Description

@mattrow

Deleting a plugin on cursor.directory reports success and redirects to the homepage, but the plugin is still live afterwards and still holds its slug and its repository URL.

Steps to reproduce

  1. Sign in and open a plugin you own, for example https://cursor.directory/plugins/spicyapi
  2. Plugin options, then Delete
  3. Confirm the "Delete plugin permanently?" dialog
  4. The request POST https://cursor.directory/plugins/spicyapi returns HTTP 200 and the app navigates to /
  5. Reload https://cursor.directory/plugins/spicyapi

Expected

The plugin is removed.

Actual

The plugin still renders, still marked published. Unpublish behaves the same way: it reports success and the plugin stays published. No client-side console errors are produced, and the server action returns 200 either way.

It looks like the delete matches zero rows, perhaps an ownership or row-level-security predicate that does not match the current session, and the affected row count is never checked before reporting success. A delete that cannot find its target should surface an error rather than a 200.

Knock-on effect

Because the record survives, re-submitting the same repository from a different account fails with:

A plugin with this name or repository already exists. Please choose a different name or repository.

Changing the plugin name (tried spicy-api) fails identically, so the conflict is on the repository URL rather than the slug. The practical result is that the repository is permanently unusable for a new listing, with no self-serve way out.

Request

Please remove the listing spicyapi (https://cursor.directory/plugins/spicyapi, repository https://github.com/Wayfinity/spicyapi-skills). It was published from the wrong account and needs relisting from the correct one, which is currently impossible.

Activity

  1. deanrie commented on Oct 5, 2026

    @deanrie

    Hey @mattrow, thanks for the clean repro. This is a known problem on cursor.directory: for some listings the owner Delete / Unpublish action returns 200 and redirects, but the row never changes, so the plugin stays live and keeps its slug and repository URL. There's no self-serve path that works for those listings right now; they need to be cleared by the team on the backend.

    I've attached your report to the internal ticket that tracks this, with spicyapi as the listing. I'll update here when it's cleared.

  2. deanrie commented on Oct 8, 2026

    @deanrie

    Update: #443 changes the delete action so a delete that removes no row fails with an error instead of showing "Plugin deleted." It won't clear the listing from this report by itself, that still needs the backend cleanup tracked internally, but it stops the UI from claiming success when nothing happened, which is the part this repo can fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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