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:

  1. Press Players online and find the player's Steam ID.
  2. Press Kick player for a warning, or Ban player with the ID and a reason.
  3. 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 VoteKick section 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.

$3.99USD first month

Then $7.99/mo. Just trying it? $2.00 for 3 days

Keep reading