# Firebase: “This operation is restricted to administrators only” (auth/admin-restricted-operation)

> Firebase says auth/admin-restricted-operation: users may not create or delete their own accounts. Turn user actions back on, or create users server-side.

Canonical: https://app369.com/fix/firebase-auth-admin-restricted-operation/
Last updated: 2026-11-08

Sign-up, anonymous sign-in or account deletion from the app fails with auth/admin-restricted-operation, or ERROR_ADMIN_RESTRICTED_OPERATION on Android and iOS. The project is set so that only an administrator can create or delete accounts, and the app tried to do it as an end user.

**Short answer**

In the Firebase console, open Authentication, Settings, and look for the user actions options (create and delete) to see whether they are turned off. Turn them back on if users should sign up themselves. If accounts are meant to be created by an admin only, keep it off, create users with the Admin SDK on your server, and show a clear message in the app.

## **Why Firebase blocks the user, and the fix**

1. 01 ### **User actions are turned off in the project**
  > “In these cases, you can disable user actions from the Firebase Authentication Settings page, which prevents account creation and deletion by end-users.” [**Firebase, Users in Firebase projects (User self-service)**](https://firebase.google.com/docs/auth/users) Firebase Authentication can block end users from creating and deleting accounts. Then every client-side sign-up returns this error, and anonymous sign-in, which creates an account too, can be blocked as well.
2. 02 ### **Accounts are meant to be created by an admin**
  > “You should gracefully handle the error on your front-end by asking the user to take the appropriate actions for your service.” [**Firebase, Users in Firebase projects (User self-service)**](https://firebase.google.com/docs/auth/users) For invite-only or staff apps, keep self sign-up off. Create the user on your server with the Admin SDK, then let them sign in or set a password through a reset link. generatePasswordResetLink only returns the link; you send it to the user yourself.```
// server, Admin SDK
await getAuth().createUser({ email, password, displayName });
const link = await getAuth().generatePasswordResetLink(email);
```
3. 03 ### **Only anonymous sign-in fails** Developers also report this code from signInAnonymously when the Anonymous provider is off. If only anonymous sign-in fails, open Authentication, Sign-in method and check that Anonymous is enabled.
4. 04 ### **Multi-tenant projects** With multi-tenancy, the setting is per tenant and is changed through the API, so a tenant can block sign-up even when the project setting allows it. Check the tenant the app signs in to.
5. 05 ### **Reading the message in your app**
  > “This operation is restricted to administrators only.” [**GitHub, firebase-js-sdk auth error messages**](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/errors.ts) The web SDK shows the code with a short message. Catch it and explain what the user can do, for example ask for an invite, instead of showing the raw error.

Checked against the vendor’s docs on November 8, 2026: [Firebase docs: Users in Firebase projects](https://firebase.google.com/docs/auth/users); [Firebase docs: Admin Authentication API errors](https://firebase.google.com/docs/auth/admin/errors); [firebase-js-sdk: auth error messages](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/errors.ts).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

Related: [**Firebase auth/operation-not-allowed**](https://app369.com/fix/firebase-auth-operation-not-allowed/) · [**Firebase auth/email-already-in-use**](https://app369.com/fix/firebase-auth-email-already-in-use/) · [**Firebase auth/requires-recent-login**](https://app369.com/fix/firebase-auth-requires-recent-login/) · [**Firebase “FIS_AUTH_ERROR”**](https://app369.com/fix/firebase-fis-auth-error/)

Questions

## **More on this error**

<details>

<summary>**How is this different from auth/operation-not-allowed? **+</summary>

operation-not-allowed usually means the sign-in provider is off. admin-restricted-operation means end users may not create or delete accounts, though for anonymous sign-in a disabled Anonymous provider can show this code too.

</details>

<details>

<summary>**Why does anonymous sign-in fail with this? **+</summary>

Anonymous sign-in creates a new account, so turning off user sign-up can block it. Also check that the Anonymous provider is enabled under Sign-in method.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)