Admin Guide

Admin commands, permissions, and the in-game settings panel for Oxide Chat.

Admin commands, permissions, and the in-game settings panel for oxide-chat.

Commands

Every admin tool is a subcommand of a single /chat command — an extra word after /chat. Running /chat on its own (or with an unknown subcommand) shows the list of subcommands. The server console can always run these, no permission needed.

/chat <settings|announce|autobroadcast|clear|test>
SubcommandDescriptionPermission
/chat settingsOpens the in-game panel to edit the resource's server-wide settings liveAdmin
/chat announce [message]Sends a server-wide announcement (supports Title | Body)Admin
/chat autobroadcast [on|off]Turns the automatic announcements on or off (blank toggles)Admin
/chat clear [id]Clears the chat window for everyone, or one playerAdmin
/chat test [id]Sends sample messages of every chat typeAdmin

There is one more subcommand, /chat customize, that is not admin-only — every player can use it. See Player Customization at the bottom.

Command Details

/chat announce

/chat announce [message]

Broadcasts a red ANNOUNCEMENT message to everyone on the server. You can split a heading from the body with a | (pipe symbol): the text before the pipe becomes a bold title.

Examples:

/chat announce Server restart in 10 minutes
/chat announce Event Tonight | Race meet at the docks, 8 PM

A 30-second cooldown stops accidental spam. The server console has no cooldown.

From the server console:

chat announce Server maintenance complete

/chat autobroadcast

/chat autobroadcast [on|off]

Turns the automatic announcements (the rotating messages configured under Auto-Broadcast — server rules, Discord links, and so on) on or off while the server is running. With no argument, it flips the current state. Your choice is saved to the settings database, so it stays that way across restarts and shows correctly in the settings panel.

Examples:

/chat autobroadcast on
/chat autobroadcast off
/chat autobroadcast

From the server console:

chat autobroadcast off

/chat clear

/chat clear
/chat clear [id]

Clears the visible chat window. With no ID it clears for every player; with a player ID it clears for just that one.

Examples:

/chat clear
/chat clear 5

From the server console:

chat clear

/chat test

/chat test
/chat test [id]

Sends one sample message of every chat type (default, OOC, /me, /do, system, whisper, shout, announcement, and the job radios) so you can see the colors and styling at a glance. Run in-game, the samples go to you.

Run from the server console there is no player to send to, so you must give a player ID:

chat test 5

/chat settings

/chat settings

Opens the in-game settings panel described in Settings Panel below. This one can only be opened in-game — running it from the server console just prints a reminder.

Settings Panel

/chat settings opens an in-game editor for the resource's server-wide settings — the same values stored in the shared oxide_settings database table (see How Settings Are Stored). Changes apply live to every connected player and are saved to the database immediately; no restart needed.

  • Settings are grouped in a sidebar into four categories: Core, Messaging, Broadcasts, and Players.
  • Each section has a Basic view (the common toggles and numbers most servers touch) and an Advanced view (fine-tuning), plus a search box to jump straight to a setting.
  • Change what you like, then press Save Changes to commit. Saving pushes the new values to everyone online right away — new chat colors, category tabs, cooldowns, and so on take effect without anyone reconnecting.
  • Every field has a reset button that restores the config/main.lua factory default for that one setting.

What you can edit here includes message history and length, the open-chat key, debug logging, proximity ranges and line-of-sight, message cooldowns, the image and GIF settings, the chat types list — built-in message styling and your custom channels (see Chat Types below), the category tabs, the auto-broadcast list and timing, and the defaults new players start with.

The Images & GIFs section (under Messaging) controls the picture-sharing feature: the master switch, which websites images may come from, who is allowed to send them (anyone, specific jobs, or admins only), the per-player image cooldown, and the GIF picker's content rating and result count. One thing is not in the panel: the Giphy API key, which lives in server.cfg — see Configuration — Giphy API key.

A couple of settings behave a little differently even though you edit them here:

  • Open chat key — changing it only affects new players who never rebound their key, and only after a resource restart. FiveM remembers each player's own keybind.
  • Debug logging — this one does flip live; leave it off on a live server.

Only admins can open the panel, and every save is re-checked on the server, so a non-admin cannot change settings even by forging the request.

How the database-backed settings behave

The first time oxide-chat starts, the values in config/main.lua are copied into the oxide_settings table. From then on the database is in charge, and the panel is how you change things — editing the file no longer affects a running server (it only supplies factory defaults for a fresh install or a brand-new setting added by an update).

To force a config-file value back onto an existing server, either use a field's reset button in the panel, or delete that setting's row from the oxide_settings table in your database manager and restart. The full explanation lives in Configuration — How Settings Are Stored.

Chat Types

Everything that shows up in chat — regular messages, /me, OOC, private messages, and your own custom radios — is managed in one list. To open it, run /chat settings, then in the sidebar go to Messaging → Chat Types. There are two kinds of rows in this list.

Built-in rows are the message kinds that come baked into the resource: default messages, system messages, announcements, OOC, /me, /do, whispers, shouts, and private messages. You can restyle them — change their label, prefix, color, and italics — but you can't rename them, delete them, or change how they behave, because that behavior is part of the resource itself. In the list they show only those four styling fields, display their type name instead of a row number, and have no delete button.

Custom rows are channels you create — a police radio, a staff-only channel, a business radio for a specific job. Each is a full slash command where you decide the command players type, who is allowed to use it, and how its messages look. The three job radios ship as ready-made custom rows. You can edit them, delete them, or add your own.

Creating a channel

Open /chat settings and select Messaging → Chat Types.
Click Add to create a new, blank channel row.
Fill in the fields (each one is explained below). At a minimum you need a Command and a Label.
Press Save Changes.

That is all — no restart needed. The moment you save, the new slash command works for every player who is currently online and allowed to use it. Deleting a channel and saving stops it working right away too.

A custom channel can't reuse a built-in type. Its Chat type ID can't be one of the built-in ones (me, do, ooc, pm, and so on) — those belong to the built-in rows. If you try, the save is rejected with a message telling you which one clashed.

One small quirk: after you delete a channel and save, its slash command still shows up in the command list until the next time the resource (or server) restarts. This is a FiveM limitation — a command, once created, can't be removed until restart. It does no harm: if someone types a deleted channel's command, chat simply tells them the channel no longer exists.

The custom channel fields

FieldWhat it does
CommandThe word players type after the slash — enter lspd and the command becomes /lspd. Use letters and numbers only. It can't be the same as a command that already exists (like me, do, ooc, msg, or another channel).
AliasesExtra names for the same command — for example pd and police both work for the LSPD radio. Optional; add as many as you like.
LabelA friendly name for the channel, shown in the command suggestions and in each player's color settings — for example LSPD Radio.
Chat type IDOptional and advanced. This is the internal "type" the messages count as, which drives their color and which category tab they land in. Leave it blank to just use the command name. If you give two channels the same ID, they share styling and show up together in tabs.
PrefixA short tag shown in front of each message, such as LSPD. Optional.
ColorThe message color, written as a hex code like #3b82f6.
ItalicWhether messages are shown in italics.
ScopeWho can send the messages and who sees them — explained in Scope below.
Range (m) and Line of sightOnly used by the Nearby players scope: how far the message reaches (in metres) and whether walls block it.
Restrict toWho is allowed to use the channel — explained in Restriction below.
JobsThe job names allowed to use the channel, when Restrict to is set to Jobs — for example police.
Minimum gradeThe lowest job grade (rank) allowed to use the channel. 0 means any grade may use it.
On-duty onlyRequire the player to be on duty to use the channel. Leave this off on ESX — ESX has no built-in on-duty status, so turning it on would block everyone on an ESX server.
CooldownThe minimum time between messages for each player, in milliseconds (1000 = one second). 0 means no cooldown.

Scope — who sends and who sees

The Scope decides who can talk on the channel and who reads it:

ScopeWhat it means
Members only (radio)Only players who pass the restriction can send and see the messages. This is how a real job radio works — nobody outside the channel ever sees the traffic.
EveryoneAnyone can send, and everyone on the server sees it. A simple server-wide extra channel.
Members send, everyone seesOnly players who pass the restriction can send, but everyone on the server sees the message. Good for a broadcast-style channel where only certain people speak.
Nearby playersOnly players close to the sender see the message, using the Range and Line of sight fields — like a short-range local radio.

Restriction — who is allowed to use it

The Restrict to field decides who may use the channel at all:

Restrict toWhat it means
No restrictionAnyone may use the channel (still limited by the scope above).
JobsOnly players with one of the listed Jobs may use it. You can also require a Minimum grade and turn on On-duty only.
AdminsOnly admins may use it — the same admins who can run the other /chat commands (see Permissions).

The restriction is always checked on the server, so a player can't sneak past it by editing anything on their end.

How the messages look

For a channel restricted to jobs, each message shows the sender's name and their job grade (with the channel's prefix shown as a colored tag in front):

[LSPD] John Smith (Sergeant): Responding to the scene

For any other channel, messages just show the name:

John Smith: message text

Styling and player colors

  • A channel's own Prefix, Color, and Italic fields control how its messages look — set a channel's appearance right there on its row.
  • Every channel automatically appears in each player's personal color settings (/chat customizeColors tab), where players can recolor it or hide it just for themselves.
  • To group a channel into a tab in the chat window, add its Chat type ID to a category under Messaging → Categories. See Configuration — Chat Categories.

Permissions

Admin here is a simple yes/no: a player is either an admin or they're not. Every admin subcommand runs the same check once inside the /chat handler (through the o-link bridge), so there are no per-command permissions to grant and no permission "levels" to manage. The server console (and rcon) always passes, no matter what.

Who already counts as an admin. The check accepts your framework's normal admin status, so on a standard setup your existing staff pass with nothing extra to do:

  • QBCore / QBX — players in the admin group (the stock server.cfg these frameworks ship already grants it) pass automatically.
  • ESX — players set as admins in the framework's own admin/group system pass automatically.

Setting up an admin by hand. If you want to grant admin directly in FiveM (for example on a fresh server, or for a console-based owner account), add these two lines to your server.cfg. The first puts the player into the admin group; the second grants that group the admin permission the check looks for:

server.cfg
# 1. Put the player in the admin group (use their license/fivem/discord identifier)
add_principal identifier.license:abc123def456... group.admin

# 2. Grant the admin group the "admin" permission
add_ace group.admin admin allow
  • An ACE (Access Control Entry) is FiveM's built-in permission system — add_principal puts a player (a "principal") into a group, and add_ace says what that group is allowed to do.
  • To find a player's license: identifier, connect them once and look them up in your server console with the players command, or check your framework's admin panel.
  • The add_ace group.admin admin allow line only needs to be added once (higher groups such as group.superadmin inherit from group.admin, so they pass too). If your framework already set this up, adding it again does no harm.

Player Customization

/chat customize is the one /chat subcommand that is not admin-only — every player can run it (or click the gear icon in the chat header). It opens each player's personal appearance settings: position, font size, fade time, background opacity, style preset, per-type colors and visibility, and so on.

These settings are saved on that player's own computer and only change what they see. They do not affect other players and are separate from the server-wide settings you control in /chat settings. See Customization for the player-facing details.

Notes

  • /chat test is the fastest way to confirm chat colors and styling look right after a fresh install or a color change.
  • Turn Debug logging off on a live server — it relays server console prints into chat.

Next Steps