Nuclear Option Server Commands (Kick, Ban, Missions, Chat)
Every Nuclear Option dedicated server remote command explained: kick and ban by Steam ID, server chat, next mission, mission timer and reloading the config.
Updated Oct 1, 2026 · 6 min read
On this page
Nuclear Option dedicated servers are run with remote commands: kick a player, ban a Steam ID, send a server message, choose the next mission or change the mission timer. This guide lists every command the official Shockfront server supports, what each one does and how to send them, whether your server is hosted with us or running at home.
How remote commands work
Remote commands are switched on with a launch option:
NuclearOptionServer.exe -ServerRemoteCommands 7779
The port defaults to 7779 if you leave it out. The server only listens on 127.0.0.1, so commands have to come from the same machine, and nobody on the internet can reach them.
The commands are not typed into a console window. Each one is a small JSON message sent over TCP, with a 4 byte length in front:
{ "name": "kick-player", "arguments": ["76561198000000000"] }
The server answers with a status code and, for commands that return data, a JSON body. On a home server you need a script or Shockfront's own control panel (in the Nuclear Option Server Tools repository on GitHub) to send them.
On GamezServers this is done for you. The server's console passes what you type straight to the remote commands, and the common ones are buttons in the control panel. Type help in the console for the list.
Chat and information
| Command | Arguments | What it does |
|---|---|---|
send-chat-message |
message | Shows a server message in the in game chat |
get-player-list |
none | Steam ID and faction of every connected player |
get-mission |
none | The current mission and the next one scheduled |
get-mission-time |
none | Current and maximum mission time, in seconds |
get-mission-rotation |
none | The rotation type, the rotation and any next mission override |
get-server-id |
none | The server's Steam ID |
send-chat-message supports Unity rich text, so <color=#ff0000><b>Alert:</b></color> Restart in 5 minutes shows a red, bold label. On our servers say is a shortcut:
say Next mission is Terminal Control
get-player-list only returns Steam IDs and factions, because the headless server does not keep player names:
{ "Players": [ { "steamId": "76561198000000000", "faction": "Boscali" } ] }
To match an ID to a name, open https://steamcommunity.com/profiles/<steamId> in a browser. On our servers the Players online button runs this command, which gives you the IDs you need for kicks and bans.
get-mission-time returns 0 for both values when nobody is online, since an empty server has no mission loaded.
Missions and the timer
| Command | Arguments | What it does |
|---|---|---|
set-next-mission |
group, name, max time | Loads this mission after the current one ends |
clear-next-mission |
none | Drops the override and goes back to the rotation |
set-time-remaining |
seconds | Sets how long the current mission has left |
set-mission-rotation |
rotation as a JSON string | Replaces the rotation in memory |
reload-config |
optional path | Reloads DedicatedServerConfig.json, or a new file |
Mission groups are BuiltIn for the missions that ship with the game, Workshop for Steam Workshop items (the name is the item id) and User for missions in your MissionDirectory. A raw command looks like this:
{ "name": "set-next-mission", "arguments": ["BuiltIn", "Escalation", "3600.0"] }
On GamezServers you only type the mission, and the max time comes from your Mission minutes setting:
set-next-mission Terminal Control Co-op as PALA
set-next-mission Workshop:1234567890
set-next-mission User:MyMission
set-time-remaining 300
The built in mission names, including the co-op versions, are listed in how to set up a Nuclear Option mission rotation. Names must match exactly. A wrong name is accepted by the command but fails when the server tries to load it, with Could not find mission with name in the console.
set-mission-rotation takes the rotation encoded as a JSON string in its first argument:
{"rotationType":"Sequence","clearNextOverride":false,"rotation":[{"Key":{"Group":"BuiltIn","Name":"Escalation"},"MaxTime":7200.0}]}
It only changes the rotation in memory. To make a rotation permanent, change it in the config file (or the Missions setting on our servers) and use reload-config.
Kicks and bans
| Command | Arguments | What it does |
|---|---|---|
kick-player |
Steam ID | Kicks the player. They cannot rejoin until the server restarts |
unkick-player |
Steam ID | Lets a kicked player back in |
clear-kicked-players |
none | Clears the whole kick list |
banlist-add |
Steam ID, optional reason | Bans the player and adds them to the first ban list file |
banlist-remove |
Steam ID | Unbans and removes them from the first ban list file |
banlist-reload |
none | Reads the ban list files again, adding new IDs |
banlist-clear |
none | Empties the loaded ban list, without touching the files |
All of them use the 17 digit SteamID64, like 76561198000000000. The usual flow on our servers:
- Press Players online and find the player's Steam ID.
- Press Kick player for a warning, or Ban player with the ID and a reason.
- To undo a ban, press Unban player with the same ID.
Bans are written to ban_list.txt by default, which is set by BanListPaths in the config. If that list is empty, the ban commands answer with a config error, because there is no file to write to. Banning a player also kicks them straight away.
Two built in protections help too:
- Family Sharing: if a banned player's account is shared from someone else's library, the owner is banned along with them, and a borrowed copy cannot join while the owner is already connected.
- Vote kick: players can vote to remove someone for the rest of the mission. After 3 successful vote kicks the player is banned automatically. Turn it off with the Vote kick setting, or tune it in the
VoteKicksection of the config.
Status codes
When a command fails, the server's answer says why:
| Code | Meaning |
|---|---|
| 2000 | Success |
| 4004 | Unknown command, usually a typo |
| 4005 | Bad arguments, a value is missing or in the wrong format |
| 5001 | The command ran into an error |
| 5002 | The config prevents it, for example no ban list files are set |
Our console turns these into plain messages like Unknown command bogus. Type help for the list.
Update notifications
The command list also includes update-ready, which Shockfront's update checker sends when a new server build appears on Steam. You do not need it on our servers: the server checks Steam for a new build every time it starts, so a restart after a patch updates it.
Quick reference for GamezServers
| Button in the panel | Console command |
|---|---|
| Broadcast | say <message> |
| Players online | get-player-list |
| Current mission | get-mission |
| Mission timer | get-mission-time |
| Set next mission | set-next-mission <mission> |
| Set time left | set-time-remaining <seconds> |
| Kick player | kick-player <steamid> |
| Ban player | banlist-add <steamid> <reason> |
| Unban player | banlist-remove <steamid> |
| Let kicked players back | clear-kicked-players |
| Reload config file | reload-config |
Running a server at home? How to make a Nuclear Option dedicated server covers the setup. Want the buttons without the setup? See Nuclear Option server hosting.
Skip the setup. Your own Nuclear Option server.
Then $7.99/mo. Just trying it? $2.00 for 3 days