apache/superset · error

Reset aborted.

Error message

Reset aborted.

What it means

A bare Exception('Reset aborted.') is raised by SecurityResetCommand.validate when the confirm flag is falsy. The command performs a destructive wipe of most Superset metadata (datasets, databases, dashboards, charts, KV entries, logs), so confirm is a mandatory dead-man switch.

Source

Thrown at superset/commands/security/reset.py:52

    def __init__(
        self,
        confirm: bool,
        user: Any,
        exclude_users: Optional[str] = None,
        exclude_roles: Optional[str] = None,
    ) -> None:
        self._user = user
        self._confirm = confirm
        self._users_to_exclude = ["admin"]
        if exclude_users:
            self._users_to_exclude.extend(exclude_users.split(","))
        self._roles_to_exclude = ["Admin", "Public", "Gamma", "Alpha", "sql_lab"]
        if exclude_roles:
            self._roles_to_exclude.extend(exclude_roles.split(","))

    def validate(self) -> None:
        if not self._confirm:
            raise Exception("Reset aborted.")  # pylint: disable=broad-exception-raised
        if not self._user or not self._user.is_active:
            raise Exception("User not found.")  # pylint: disable=broad-exception-raised

    def run(self) -> None:
        self.validate()
        logger.debug("Resetting Superset Started")
        db.session.query(SqlaTable).delete()
        databases = db.session.query(Database)
        for database in databases:
            db.session.delete(database)
        db.session.query(Dashboard).delete()
        db.session.query(Slice).delete()
        db.session.query(KeyValueEntry).delete()
        db.session.query(Log).delete()
        db.session.query(FavStar).delete()

        logger.debug("Ignoring Users: %s", self._users_to_exclude)
        users_to_delete = (

View on GitHub (pinned to f4587218dd)

Solutions

  1. Pass an explicit true confirm (e.g. --yes / confirm=True) when invoking the reset
  2. If the reset was not intended, this abort is the desired outcome — verify the command and arguments before retrying
  3. Never run this in production; scope destructive resets to disposable dev/demo environments

Example fix

# before
SecurityResetCommand(user, confirm=False).run()

# after
SecurityResetCommand(user, confirm=True).run()  # destructive: wipes metadata
Defensive patterns

Strategy: validation

Validate before calling

assert confirm is True, 'reset requires an explicit True confirm'

Type guard

def reset_is_confirmed(flag: object) -> bool:
    return flag is True

Prevention

When it happens

Trigger: Invoking the security reset (e.g. 'superset init' ResetSupersetCommand path or the CLI security reset command) without passing confirm=True, or with confirm parsing to a falsy value ('false', 0, '').

Common situations: Running the documented reset command but forgetting the --yes/confirm argument; boolean flags passed as strings from shell scripts and never coerced.

Related errors


AI-assisted analysis of apache/superset@f4587218dd (2026-08-14). Data as JSON: /api/errors/7065b1fc8c89a4f7. Report an issue: GitHub.