A bad Qbox permissions setup usually does not fail loudly. Your server starts, staff can log in, and everybody assumes the hierarchy is fine. Then a new moderator accidentally gets access to money commands, a former staff member keeps admin powers, or a resource exposes a command nobody tested before launch.
Permissions are not just a technical checkbox. They decide who can protect the community, manage player issues, adjust the economy, access development tools, and make changes that can affect every character in the city. For a serious FiveM RP server, that needs to be planned before the first public wave joins.
Start with roles, not command names
The common mistake is opening a config file and granting permissions one command at a time without first deciding what each staff role is actually responsible for. That creates a messy setup where two people with the same title have different access, nobody knows who can use what, and permissions become harder to audit after every new script install.
Build the staff structure around real responsibilities. A small city may only need owner, administrator, moderator, and support roles. A larger city might separate police command, economy management, development, community management, and event staff. The point is not to create titles for the sake of it. The point is to keep high-risk powers limited to people who genuinely need them.
A moderator should normally handle player reports, basic kicks, warnings, and routine community issues. An administrator may need bans, player management tools, and the ability to resolve more serious disputes. Owners and trusted lead developers can hold server-wide configuration, resource, economy, and console-level access.
Do not treat a Discord role as proof that somebody should have the same level of in-game access. Discord permissions and FiveM permissions solve different problems. They can be mapped together, but they should be reviewed separately.
Use ACE as the base of your Qbox permissions setup
Most Qbox servers rely on FiveM ACE permissions for command access and staff hierarchy. ACE lets you assign principals, such as a player's license identifier, to groups, then grant specific permissions to those groups. It is simple, flexible, and widely supported by server resources.
Your exact group names can vary, but consistency matters. Keep them readable and avoid creating a new group for every person. A basic structure might look like this:
```cfg
Staff hierarchy
add_principal group.admin group.moderator
add_principal group.owner group.admin
Individual assignments
add_principal identifier.license:YOUR_OWNER_LICENSE group.owner add_principal identifier.license:YOUR_ADMIN_LICENSE group.admin add_principal identifier.license:YOUR_MOD_LICENSE group.moderatorModerator permissions
add_ace group.moderator command.kick allow add_ace group.moderator command.warn allowAdministrator permissions
add_ace group.admin command.ban allow add_ace group.admin command.unban allow add_ace group.admin command.freeze allowOwner permissions
add_ace group.owner command.restart allow add_ace group.owner command.ensure allow ```This example is intentionally conservative. It shows inheritance: owners receive admin access, and admins receive moderator access. That means you only define shared staff permissions once instead of repeating them across every group.
The exact command names depend on the admin menu and resources installed on your server. One moderation resource may check `command.kick`, while another may use a custom ACE permission such as `admin.menu` or `resource.stafftools`. Check the documentation or configuration for each resource before assuming a permission works.
Avoid broad rules like granting `command` access to every staff group. It may feel fast during setup, but it can expose commands from resources you install later. A staff member who only needs ticket tools should not automatically receive every command added to the server six months from now.
Use stable identifiers for staff assignments
A FiveM license identifier is usually the cleanest choice for direct staff assignment because it is tied to the player account. Copy it carefully from your server console or identifier tool, and keep a private record of which identifier belongs to each staff member.
Discord identifiers can help where your community has a strict verified Discord process, but relying on Discord alone can create avoidable support problems if roles, bots, or verification flows change. For critical owner and developer access, use a stable identifier and keep access limited.
Never paste staff identifiers into public Discord channels, public repositories, or screenshots. An identifier is not a password, but it is still part of your access-control setup and should be handled professionally.
Separate moderation, economy, and development access
Not every powerful command looks powerful at first glance. Economy commands, item grants, vehicle spawners, job setters, and inventory tools can create more damage than a basic kick command when they are used carelessly or maliciously.
For most roleplay cities, economy access deserves its own decision. Your moderation team may need to teleport to a scene or resolve a stuck player, but they usually do not need the ability to add bank money, spawn rare items, set jobs, or edit business accounts. Those tools should sit with a much smaller group, ideally an owner, lead administrator, or economy manager with clear accountability.
Development access should be even tighter. Commands that restart resources, ensure scripts, run console actions, or change server state can take a live city offline if used at the wrong time. If you have outside developers, give them only the access required for the scope of work and remove it when the work is complete.
This is where a premade foundation and a custom build differ slightly. A ready-to-launch Qbox package usually has a known set of resources and permission points, so the access map can be defined early. A custom city with custom gangs, MLO systems, paid jobs, and bespoke management tools needs another review whenever a major system is added. More flexibility means more permission surfaces to protect.
Load permissions in the right place
Keep ACE rules in a dedicated file, such as `permissions.cfg`, rather than scattering them throughout a large `server.cfg`. Then execute that file from the main configuration:
```cfg
exec permissions.cfg
```
This makes access easier to review and reduces the chance of accidentally deleting a staff rule while working on unrelated server settings. Load the file early enough that resources checking permissions during startup can see the required rules.
Use comments for anything that is not obvious. If a group has access to a custom police management menu, economy panel, or development command, note why. Six months later, that comment may prevent somebody from removing a permission that is genuinely required or leaving one in place that no longer is.
Test every role with real accounts
Do not test only with the owner account. Owner access can hide mistakes because it inherits nearly everything. Create test accounts or temporarily assign a trusted team member to each role, then verify what they can and cannot do.
Test the normal path first: Can a moderator use the report and discipline tools they need? Can an admin handle a ban appeal or a player support issue? Can the person responsible for the economy access the approved management tools?
Then test denial. A moderator should not be able to run owner commands. A support member should not be able to spawn money or inventory items. A former staff member should lose access immediately after their principal entry is removed and the relevant server configuration is reloaded or restarted.
This is also the right time to test resource-specific permissions. Many FiveM scripts use their own configuration layer on top of ACE. A player may have the correct ACE group and still be blocked because the script expects a separate job, gang rank, Discord role, or admin whitelist. That is not necessarily a bad system, but it must be documented so your staff knows where access is controlled.
Create an offboarding rule before you need one
Staff changes are normal in RP communities. What should not be normal is leaving access active because nobody remembers where it was assigned.
When a staff member steps down or is removed, revoke their FiveM principal, remove related Discord roles, review any panel or hosting access, and change shared credentials if your operation uses them. For high-level staff, check whether they had access to web store settings, database tools, server files, or deployment services as well.
A simple access review once a month is enough for many servers. Compare active staff against the permissions file and remove anyone who no longer needs the role. It takes minutes when the setup is organized and becomes a major risk when it is ignored for a year.
Keep permissions aligned with the city you are building
The best permissions setup is not the one with the most groups or the most commands. It is the one that gives each person enough access to do their job without handing them control over systems they do not own.
If you are launching quickly, start with a small, conservative hierarchy and expand only when a real operational need appears. If you are building a custom city, define permissions alongside every new economy, gang, police, housing, and management system instead of treating access as cleanup work at the end.
A stable city is built on more than good scripts. It is built on clear boundaries, accountable staff access, and a setup your team can actually understand when the server gets busy.