feat: Allow admin/owner to opt out of auto-approval#2245
feat: Allow admin/owner to opt out of auto-approval#2245fronc wants to merge 6 commits intoseerr-team:developfrom
Conversation
This commit enables admin users to opt out of auto-approval, for cases like allowing third-party tools (Availarr, Ombi, etc.) to intercept and process media requests before they are automatically approved. Changes: - Modified hasPermission() to not auto-grant auto-approve permissions for admins - they must be explicitly enabled - Removed MANAGE_REQUESTS from auto-approval checks in MediaRequest.ts - Fixed watchlist sync typo: AUTO_APPROVE_TV -> AUTO_REQUEST_TV - Added ability for owner (user ID 1) to modify their own auto-approve permissions via the UI - Updated frontend UI to correctly reflect auto-approve status Files changed: - server/lib/permissions.ts: New isAutoApprovePermission() helper - server/entity/MediaRequest.ts: Remove MANAGE_REQUESTS from checks - server/lib/watchlistsync.ts: Fix permission typo - server/routes/user/usersettings.ts: Allow owner auto-approve changes - src/components/PermissionOption/index.tsx: UI editability for owner - src/components/RequestModal/*.tsx: Consistent hasAutoApprove checks
When hasPermission is called with 0 (no permission required), return true immediately. This was accidentally removed during the admin auto-approve fix, breaking /auth/me for non-admin users.
6449c79 to
14b7124
Compare
|
Please update the pr description with the proper pr template. |
Thank you, and apologies - I really did search for this before submitting. But after looking again and reviewing the Contributions docs, I still cannot find a template anywhere. Could you please direct me to the appropriate resources? |
|
The template is here : https://github.com/seerr-team/seerr/blob/develop/.github%2FPULL_REQUEST_TEMPLATE.md |
|
Thank you! I've updated accordingly and added screenshots. Hope this helps! |
|
No actionable comments were generated in the recent review. 🎉 📝 WalkthroughWalkthroughThis PR decouples auto-approval permissions from admin management permissions across the permission system. Changes remove Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
|
I believe this is now ready to be merged. Please review at your earliest convenience and let me know if you'd like to discuss it any further before doing so. Thanks! |
|
I don't see the benefit of this PR. It is normal and intentional that admins do not have to approve themselves a request that they have just sent. It is approved directly by design; it would be counterintuitive to do otherwise. If you absolutely want to have this approval system, why not create a user account without administrator permissions for your personal use? @fallenbagel wdyt? |
Thanks for the feedback! I'd like to address the "just use a non-admin account" suggestion, as this is actually the core of why this feature request exists in the first place (see #191). Third-party queue management tool integration is currently broken by design for admins only Tools like Availarr and similar automation tools work by intercepting pending requests. Because admin requests are auto-approved and bypass the pending state entirely, those tools simply never see them. Using a second, non-admin account (as you suggest) isn't a viable workaround because an admin shouldn't have to log out of their own account and into a second one every time they want to make a personal request. That's not really a workaround, it's just moving the friction somewhere else while making the overall experience worse. As the original feature request puts it: features shouldn't be more limited on an account with greater permissions. Having to maintain two separate accounts - one for administration and one to actually use the service you're running - is a frustrating and unnecessary limitation. This PR addresses that by making auto-approval something admins can explicitly opt out of, rather than a hardcoded behavior. All other admin capabilities are fully preserved. |
|
Yes I get the disadvantage of logging in / out with an admin account and a normal account. The main issue you raise is the integration of admin accounts of Seerr with third-party tools. Because these tools integrate poorly with admin accounts, should Seerr be the one modified to adapt to their flawed logic? To be honest I don't really like that idea. |
|
With due respect, I don't see it as flawed logic. It's highly valuable to run checks on requests against places the content already exists. That check inherently exists between request and fetch. Auto-approving inherently clashes with that. There is no reason that I can see why providing admins with this capability (and defaulted the same as before) is a bad thing. Admins should be able to use the same tools and features they set up for their users. Is there a different issue or problem I'm not addressing which makes this bad for Seerr? I feel the request followed protocol, addresses a specific issue, and does so without over engineering a solution, so I'm dismayed that it's being closed without more of a discussion. |
|
If you can't even bother to comment on your own without using AI, or write your own PR, then I'm not confident you actually understand the changed code. I would close this PR on that basis alone. But even with that said, I agree with @gauthier-th here. I'm sorry Seer's design doesn't work well with your third-party tools, but we shouldn't have to change our design to accommodate them. Admins being auto-approved has been a design decision we have chosen to stick by for 5+ years. It's not going to change. |
|
I seem to have offended folks here, which was not my intent. I was transparent about the use of Claude code from the start, but even though I'm not an SWE by profession, I do operate responsibly, and understood every line of code that was changed. If use of AI tools is flatly prohibited, then I do politely suggest the project update its rules so folks like me know not to bother trying. I really was excited to be able to contribute to this project, and I feel I addressed all of your concerns. The only one I can't do anything about is an unwillingness to change. Despite requests for this in both the Overseerr and Seerr repos, I don't know how else to change your mind to see that optionality here enhances the product, and the past doesn't need to dictate the future. I'm open to hearing how I can be a better collaborative partner to you (and to other projects) in the future, and sorry this comment thread went sideways, to whatever extent I've caused that. |
I'm 100% with you here, this change being totally OPTIONAL to the end user takes nothing away from this project. |
Conversation taking place on discord. Please stay respectful and productive as we try and figure out a solution that benefits everyone and moves the project forward. |
|
Context on why this was closed: This PR (#2245) implements an opt-in toggle allowing admin/owner accounts to disable auto-approval of their own requests. The feature was off by default, preserved all existing behavior, passed automated review, and was kept current with the develop branch over several months. The maintainers closed it on the grounds that auto-approval for admins is an intentional, long-standing design decision they don't intend to change. The suggested workaround is to use a separate non-admin Plex account for personal requests. For anyone arriving here from issue #191 or sct/overseerr#3926: the use cases — allowing admin requests to pass through the pending state for wishlist management or third-party tool integration, allowing for the use of a single admin account shared between multiple users, and allowing the admin to control when a request is approved for reasons like limited disk space or bandwidth — remains unaddressed and, per the maintainers, will not be addressed in this project. The discussion took place on GitHub and in the Seerr Discord #development channel around February 21–22, 2026. |
very open source way of talking. "It's not going to change." we got more than enough poeple asking for this feature. but "It's not going to change." |
|
@fronc can you please keep your forked branch up-to-date, whenever you get a chance. i'll be using that to install seer onwards. suggest other people do the same until the "It's not going to change." mindset changes. |
Open source means the code is open for anyone to use, fork, and modify, which is exactly what you're doing, and that's completely fine. What it doesn't mean is that maintainers are obligated to merge every feature request or PR that comes in. Sometimes that means saying no to things people want. That's not a "mindset" problem, that's how every maintained project works, open source or otherwise. External contributors aren't the ones responsible for maintaining this codebase long-term, we are. That's true for every project, and it's exactly why maintainers have the final say on design direction The admin auto-approval behavior is an intentional design choice. "It's not going to change" isn't us being dismissive or going against open source philosophy, it's a very transparent answer from the maintainers who design, develop, and maintain this codebase for the long-term. We'd rather be upfront than string people along. Seerr is designed to work as its own project. We shouldn't have to change our design language to accommodate third-party tools, if anything, it should be the other way around. You're welcome to use a fork. That's literally what open source enables. But mischaracterizing a clear design decision as some kind of failure of open source values isn't productive. And since there are no productive discussions left, I am locking this thread. |
Description
This PR implements an option for admin and owner accounts to disable auto-approval of their own requests, addressing a long-standing feature request. Admin requests can now go through the normal pending → approved flow, enabling integration with third-party tools and manual queue management.
Why is this change required? Currently, any request made by an admin or owner account is automatically approved and begins processing immediately. This behavior:
What problem does it solve? This change allows admins to opt out of auto-approval while preserving all existing administrative permissions and functionality. It also fixes a typo in watchlist sync that prevented TV watchlist items from creating requests.
Key Changes:
server/lib/permissions.tsto treat auto-approve permissions explicitly for admin usersserver/entity/MediaRequest.tsto removePermission.MANAGE_REQUESTSfrom auto-approval status checkserver/routes/user/usersettings.tsfor owner to modify their own auto-approve permissionsserver/lib/watchlistsync.ts(AUTO_APPROVE_TV → AUTO_REQUEST_TV)Permission Behavior:
Admin bypass preserved for all non-auto-approve permissions (MANAGE_, REQUEST_, VIEW_*, etc.)
Auto-approve permissions (AUTO_APPROVE*) now require explicit grant, even for admins
All other administrative functions continue to work as before
Fixes [Feature Request] Option to disable auto approve for admin and owner accounts #191
Note: This PR description was generated by a heavily scrutinized Claude Code based on very detailed requirements by the code author. Coding assistance was also provided by CC, although this too was closely supervised and always read and understood before each change was implemented. Some code and how to address the problem was also inspired by an Overseerr fork by @ohmzi.
How Has This Been Tested?
Testing Environment:
Functional Tests Performed:
/auth/mereturns 200)Edge Cases Verified:
hasPermission(0, ...)returnstrue(any logged-in user)hasPermission([], ...)returnstrue(empty array)hasPermission([AUTO_APPROVE], ...)requires explicit bit for adminhasPermission([MANAGE_REQUESTS], ...)allows admin bypassComprehensive Permission Audit:
All permission behaviors preserved with one intentional change:
Screenshots / Logs (if applicable)
Checklist:
pnpm buildpnpm i18n:extract- Not required, no new UI text addedSummary by CodeRabbit
Release Notes