---
title: "Vintage Story Server Commands: Full List and Privileges"
description: "Grant admin with /op, then run every Vintage Story server command — roles and privileges, world and player control, land claims, moderation and client dot-commands."
url: "https://www.gameserverkings.com/knowledge-base/vintage-story/how-to-add-admins-and-commands-vintage-story/"
category: "Vintage Story"
category_url: "https://www.gameserverkings.com/knowledge-base/vintage-story/"
published: "2026-07-02T21:58:13.096Z"
updated: "2026-08-07T20:33:24.808Z"
source_format: "markdown"
site: "GameServerKings"
---

# Vintage Story Server Commands: Full List and Privileges

Vintage Story gates commands behind a role-and-privilege system rather than a simple admin flag, so most "command not working" problems are really permission problems. This guide covers that model, how to grant yourself admin on a fresh server, and the server and client command sets.

## 1. Where Commands Are Typed

The prefix tells you which command set you are in.

| Prefix | Set | Runs on | Example |
|---|---|---|---|
| `/` | **Server commands** | The server — affects the world and other players | `/gamemode creative` |
| `.` | **Client commands** | Your own game client only | `.viewdistance 800` |

Both are typed into the in-game chat window (default key **T**). Server commands also run from the **server console** — the terminal the dedicated server runs in — and from `StartupCommands` in `serverconfig.json`.

> [!NOTE] The console is a caller, not a player
> Console commands run as "Console Admin" and skip privilege checks, but no player is attached. Anything the game marks `RequiresPlayer` — most of `/weather`, all of `/waypoint`, `/whenwillitstopraining`, and anything using the `s[]` self-selector — fails there. Run those from in-game chat as an admin.

`/help` lists every server command your role can run, and `/help <command>` gives its syntax. `.chb` opens the in-game **command handbook**, which is generated from the running build — the official wiki's command list is still tagged for version 1.15, so `.chb` wins any disagreement.

## 2. Roles and Privileges

Vintage Story has no numbered admin levels. It has **roles**, each a named bundle of **privileges**, defined in the `Roles` array of `serverconfig.json`. `DefaultRoleCode` sets what new players get, and it ships as `suplayer`.

| Role code | Name | Priv. level | Default mode | Claim allowance (m³) |
|---|---|---|---|---|
| `suvisitor` | Survival Visitor | -1 | Survival | 0 |
| `crvisitor` | Creative Visitor | -1 | Creative | 0 |
| `limitedsuplayer` | Limited Survival Player | -1 | Survival | 0 |
| `limitedcrplayer` | Limited Creative Player | -1 | Creative | 0 |
| `suplayer` | Survival Player **(default)** | 0 | Survival | 262,144 |
| `crplayer` | Creative Player | 100 | Creative | 1,310,720 |
| `sumod` | Survival Moderator | 200 | Survival | 1,310,720 |
| `crmod` | Creative Moderator | 500 | Creative | 1,310,720 |
| `admin` | Admin | 99999 | Survival | 2,147,483,647 |

**Privilege level** is not a command rank — it is the level at which a player may build in protected areas. The `-1` roles cannot touch protected ground at all; `admin` at 99999 overrides everything, and is the only default role with `AutoGrant: true`, so any privilege registered at runtime by the engine or a mod is granted to it automatically.

These are the privileges the engine defines:

| Privilege | Allows |
|---|---|
| `build` / `useblock` | Place or break blocks / interact with them |
| `buildblockseverywhere` / `useblockseverywhere` | Same, ignoring area permissions (still needs creative mode) |
| `attackplayers` / `attackcreatures` | Damage players / non-player creatures |
| `freemove` / `gamemode` / `pickingrange` | Fly and change speed / set own game mode / set own picking range |
| `chat` / `selfkill` | Use chat / use `/kill` |
| `kick` / `ban` / `whitelist` | Kick, ban and unban, whitelist and unwhitelist |
| `announce` / `setwelcome` | Server-wide announcements / set the welcome message |
| `readlists` | View client, group, ban and area lists |
| `give` | Create items and blocks from a code |
| `areamodify` / `setspawn` | Claim land / set the default spawn |
| `tp` / `time` | Teleport / read and modify world time |
| `controlserver` | Restart or shut down the server, reload mods |
| `commandplayer` | Run a command targeting another player |
| `grantrevoke` | Set player roles, grant and revoke privileges |
| `root` | Everything |
| `controlplayergroups` / `manageplayergroups` / `manageotherplayergroups` | Join and op own groups / create and disband them / modify other players' groups |

> [!IMPORTANT] `grantrevoke` cannot promote anyone above its holder
> A player with `grantrevoke` may only assign a role at their own privilege level or lower, and only hand out privileges they already hold. That is what stops a moderator quietly making themselves admin.

Mods extend this list — the vanilla survival mod itself registers `denybreakreinforced` at runtime. `/list privileges` and `/list role` show the live set on your own server.

## 3. Granting Yourself Admin

> [!IMPORTANT] Nobody becomes admin automatically
> There is no "first player to join is the owner" rule. On your own new server you get `suplayer`, which cannot manage privileges, so the first grant must come from the console or `serverconfig.json` — never from in-game chat.

`/op <playername>` is an alias for `/player <playername> role admin`. On a dedicated server, run it from the console:

``` title="Server console — first-run bootstrap"
/whitelist add YourPlayerName
/op YourPlayerName
```

Dedicated servers enforce the whitelist by default (`WhitelistMode` `0` means on for dedicated, off for singleplayer-open-to-LAN), so on a new box you usually need the whitelist line before you can connect at all. With no interactive console, put the commands in `serverconfig.json` instead — they run on next boot, separated by line breaks:

``` title="serverconfig.json — op yourself on next start"
"StartupCommands": "/whitelist add YourPlayerName \n /op YourPlayerName",
```

> [!TIP] On the GameServerKings panel
> The **Console** tab in your panel is a live server console, so `/op YourPlayerName` there is the fastest route — no file edit, no restart.

> [!WARNING] There is no `/deop`
> Demote with `/player <playername> role suplayer`. Revoking single privileges from `admin` will not stick either, because `AutoGrant` re-grants them.

## 4. Player and Entity Selectors

Most player-targeting commands accept a selector instead of a name, which turns one-at-a-time moderation into a single command.

| Selector | Targets |
|---|---|
| `playername` | One player by name (alias for `a[name=playername]`) |
| `s[]` | The calling player |
| `o[]` | All online players |
| `a[]` | Everyone who has ever logged in |

Bracketed selectors take filters: `role`, `name`, `group`, `namematches` (glob wildcard) and `range` (max distance from the caller). So `o[namematch=b*,range=10,role=admin]` selects online admins within 10 blocks whose name starts with `b`.

`/entity` uses its own filters — `s[]` self, `l[]` the entity you are looking at, `p[]` all players, `e[]` all entities — narrowed by `name`, `type`, `class`, `alive`, `range` and `minx`/`maxx`-style volume bounds, e.g. `e[type=gazelle,range=3,alive=true]`.

## 5. Managing Players and Roles

`/player` acts on one player; `/role` edits the role definition and so affects everyone holding it.

| Command | What it does |
|---|---|
| `/player <name> role [rolename]` | Show or set the player's role |
| `/player <name> privilege [grant\|revoke] [priv]` | List, grant or revoke individual privileges |
| `/player <name> stats` / `gamemode <0-3>` / `whitelist [on]` | Privilege summary / show or set game mode / whitelist state |
| `/player <name> clearinv` / `wipedata` | Clear inventory / wipe all player data |
| `/player <name> movespeed <v>` / `allowcharselonce` | Set move speed / allow one more class re-pick |
| `/player <name> landclaimallowance\|landclaimmaxareas <0-9999>` | Extra claim volume or count on top of the role's |
| `/player <name> entity` | Show position, satiety and health |
| `/player <name> entity health\|maxhealth\|satiety\|temp\|intox <v>` | Set that stat directly |
| `/player <name> entity maxoxygen <ms>` | Breath timer in milliseconds (default `20000`) |
| `/role <rolename> privilege grant\|revoke <priv>` | Add or remove a privilege from the role |
| `/role <rolename> spawnpoint <x> [y] <z>` | Role-specific spawn point |
| `/role <rolename> landclaimallowance <m³>` / `landclaimmaxareas <n>` | Max claimable volume (default 131072 = 4 chunks) / max non-adjacent claims (default 3) |
| `/role <rolename> landclaimminsize <x y z>` | Smallest claimable cuboid (default 6x6x6) |

``` title="A builder role that can fly but not moderate"
/role crplayer privilege grant buildblockseverywhere
/role crplayer landclaimallowance 2621440
/role crplayer landclaimmaxareas 12
/autosavenow
```

## 6. Moderation, Bans and Whitelist

| Command | Privilege | What it does |
|---|---|---|
| `/kick <name> [reason]` | `kick` | Kick a player |
| `/ban <name> [reason]` / `/unban <name>` | `ban` | Ban or lift a ban |
| `/whitelist add <name>` | `whitelist` | Add a player to the whitelist |
| `/list clients\|banned\|role\|privileges` | `readlists` | Connected clients, bans, roles, privileges |
| `/announce <message>` | `announce` | Server-wide message in all chat groups |
| `/pm <name> <message>` | `chat` | Private message (creates a temporary group) |

Enforcement is a server setting, not a per-player one: `/serverconfig whitelistmode default|off|on` (or `0|1|2`). The old `OnlyWhitelisted` key no longer controls enforcement and can be ignored.

## 7. Game Mode, Teleporting and Items

| Command | What it does |
|---|---|
| `/gamemode <0-3>` (alias `/gm`) | `0` guest, `1` survival, `2` creative, `3` spectator |
| `/gamemode <playername> <0-3>` | Set another player's mode (needs `commandplayer`) |
| `/tp <x> <y> <z>` / `=x =y =z` / `~x ~y ~z` | Teleport to pretty, absolute (**Ctrl+F3**) or relative coordinates |
| `/tp <playername> [coords]` | Teleport to a player, or send that player elsewhere |
| `/tpwp <name>` | Teleport to a waypoint whose name starts with `<name>` |
| `/giveblock <blockcode>[{attrs}] [qty] [toplayer]` | Give a block; attributes are JSON in braces, no space |
| `/giveitem <itemcode> [qty] [toplayer] [attrs]` | Give an item |
| `/clearinv` / `/kill` | Empty your inventory / kill your character |
| `/emote <wave\|cheer\|shrug\|cry\|nod\|facepalm\|bow\|laugh\|rage>` | Play an emote |
| `/charsel` | Reopen the character selection menu |
| `/waypoint add\|addp\|addat\|addati\|modify\|remove\|list\|deathwp` | Manage your map waypoints |

Mode names shorten to any unambiguous length, so `/gm cr` works, and recipients of `/giveitem` need a free inventory slot or the stack is lost. `/waypoint` needs only the `chat` privilege, so ordinary players get it; `deathwp` toggles an automatic waypoint where you die, and colours may be any .NET colour name or hex code.

## 8. Land Claims, Groups and Reinforcement

Claims are the main anti-griefing tool, built from one or more adjacent cuboids.

| Command | What it does |
|---|---|
| `/land list` / `/land info` | Your claims with their index numbers / who owns the spot you are on |
| `/land free <index>` / `/land adminfree` | Delete your claim / delete another player's at your position |
| `/land claim new` / `start` / `end` | Begin a claim, then mark the corners of a cuboid |
| `/land claim grow\|shrink <dir> <-99..99>` | Resize the selected cuboid |
| `/land claim fullheight` / `add` | Extend it world bottom to top / add it to the claim |
| `/land claim grant\|revoke <player> [use\|all]` | Grant or revoke access; `use` interacts only, `all` adds build rights |
| `/land claim grantgroup\|revokegroup <group> [use\|all]` | Same for a player group |
| `/land claim allowuseeveryone <true\|false>` | Open or close use access to everyone |
| `/land claim save [desc]` / `cancel` / `load <0-999>` | Save, discard, or reopen a claim for editing |
| `/group create\|disband\|rename\|invite\|acceptinvite\|leave\|list\|info\|kick\|op\|deop` | Player groups — private chat channels you can also grant claims to |
| `/bre` and `/gbre` `grant\|revoke\|grantgroup\|revokegroup` | Access to your own, or your group's, reinforced blocks |

`/bre` and `/gbre` need only the `chat` privilege — reinforcement permissions are managed by players, not admins.

## 9. Time, Weather and Temporal Storms

> [!CAUTION] Time commands can damage a world
> The official wiki carries an explicit warning that modifying time with commands frequently has unwanted side effects. Test `/time` on a throwaway world, or take a `/genbackup` first.

| Command | What it does |
|---|---|
| `/time` / `/time set <hours>` | Show the time / set the clock, 24-hour decimal (`1.5` = 01:30) |
| `/time set <preset>` | `midnight` 0, `witchinghour` 3, `sunrise` 6.5, `morning` 8, `latemorning` 10, `day`/`lunch` 12, `afternoon` 14, `sunset` 17.5, `night` 20, `latenight` 22 |
| `/time setmonth <jan…dec>` / `add <h>:<m>` / `stop` / `resume` | Set the month, advance the calendar, freeze or resume time |
| `/time speed <0-9999>` / `hoursperday` / `calendarspeedmul` | Time speed (default 60), hours per day (24), calendar multiplier (0.5) |
| `/weather` / `/weather lp` | Print current weather stats / list loaded patterns |
| `/weather setprecip <-1..1>` / `setprecipa` | Override precipitation (`-1` clears clouds, `1` heaviest rain) / release the override |
| `/weather stoprain` / `acp` | Skip to a time with no rain / toggle auto-changing patterns |
| `/weather t` / `c` | Transition to a random pattern, slowly or quickly |
| `/weather set\|seti <pattern>` / `setir <pattern>` / `setirandom` | Set a pattern instantly — globally, region-only, or random |
| `/weather setev\|setevr <event>` / `randomevent` | Weather event globally or per-region / random event |
| `/weather setw <lightbreeze\|mediumbreeze\|still\|storm\|strongbreeze>` | Set the wind pattern |
| `/whenwillitstopraining` / `/dweather [reset]` | When the rain stops / show or reset rift activity |
| `/nexttempstorm [now]` | Days until the next temporal storm, or start one immediately |

`/weather setprecip` is permanent until you undo it — the server stays in that rain state indefinitely and it survives a restart. Clear it with `/weather setprecipa`.

## 10. Entities

| Command | What it does |
|---|---|
| `/entity count <filter>` / `countg <filter>` | Count matching entities, flat or grouped by code prefix |
| `/entity spawnat <type> <amount> <position> <radius>` | Spawn entities; valid types live in the survival mod's entity assets |
| `/entity remove <filter>` | Remove matching creatures |
| `/entity cmd <filter> kill\|move\|setgen <n>\|setattr\|setlact` | Act on matched entities, e.g. `/entity cmd l[] setgen 10` |
| `/entity cmd <filter> stopanim\|stoptask` | Stop an animation or an AI task |
| `/entity cmd wipeall` | Remove every entity except players from loaded chunks |
| `/entity debug <0\|1>` / `spawndebug <0\|1>` | Toggle entity debug or spawn debug mode |

Entity ids are revealed by the client command `.clientconfig showEntityDebuginfo 1` — that is how you target one specific trader for removal.

## 11. Server Control and Configuration

| Command | What it does |
|---|---|
| `/serverconfig maxclients <n>` / `maxchunkradius <n>` | Slot cap / highest chunk radius a client may load |
| `/serverconfig password <string>` / `nopassword` | Set or clear the join password (no spaces) |
| `/serverconfig whitelistmode <default\|off\|on>` | Whitelist enforcement |
| `/serverconfig allowpvp\|allowfirespread\|allowfallingblocks <bool>` | PvP, fire spread, block gravity |
| `/serverconfig entityspawning <bool>` / `spawncapplayerscaling <0..1>` | Global creature spawning / spawn-cap growth per player (0.75) |
| `/serverconfig tickrate <10-100>` / `passtimewhenempty <bool>` | Tick rate / whether time passes with nobody online |
| `/serverconfig defaultspawn <x> [y] <z>` / `setspawnhere` | Set the default spawn |
| `/serverconfig antiabuse <Off\|Basic\|Pedantic>` / `temporaryipblocklist\|loginfloodprotection <0\|1>` | Anti-abuse level / IP block list and login flood protection |
| `/stats` / `/info ident\|seed\|createdversion\|mapsize` | Live tick rate and memory / world identity, seed, version, size |
| `/autosavenow` / `/genbackup [filename]` | Force a save / full save-game copy, without pausing |
| `/stop` / `/allowlan <on\|off>` | Shut down / allow LAN connections (runtime only) |
| `/moddb install\|remove\|list\|search\|searchcompatible\|searchfor` | ModDB install and search tools (1.18.0-pre.7+) |

Most `/serverconfig` changes are written immediately but need a world restart to take effect: `/autosavenow`, then `/stop`, then start the server again.

World settings are a separate namespace — `/worldconfig <name>` reads a value, `/worldconfig <name> <value>` sets one, and keys that do not exist yet must be created with `/worldconfigcreate <bool|int|float|double|string> <name> <value>`. Keys are case-sensitive. The full list is in [Vintage Story Server Settings and World Config](/knowledge-base/vintage-story/configuration-overview/).

## 12. World Generation, Chunks and Debug Tools

| Command | What it does |
|---|---|
| `/chunk cit` / `printmap` | Chunk generation info / export a PNG of loaded chunks |
| `/chunk unload <0\|1>` / `forceload <x1> <z1> <x2> <z2>` | Toggle auto-unloading / keep an area loaded |
| `/wgen pregen <radius>` | Pregenerate chunks around the player |
| `/wgen regen\|regenr\|regenc\|regenrc <radius>` | Regenerate around player or world spawn, optionally random-seeded |
| `/wgen del <radius>` / `delrock <radius>` | Remove chunks / remove rock around the player |
| `/wgen tree <code> [size]` / `pos <coords\|structures\|climate\|…>` | Spawn a tree, e.g. `/wgen tree walnut` / worldgen data here |
| `/wgen testmap\|genmap\|region <climate\|forest\|wind\|gprov\|landform\|ore>` | Render worldgen maps as PNG |
| `/fixmapping applyall` | Apply block and item remapping after a version upgrade |
| `/bir getid\|getcode\|remap` | Block id remapper — repairs blocks broken by removed or updated mods |
| `/debug rooms list\|hi\|unhi` | Room registration tools (replaced `/roomregdebug` in 1.19) |
| `/debug rift clear\|fade\|spawn\|spawnhere` | Rift management |
| `/debug logticks <ms>` / `tickhandlers` / `chunk stats\|here\|resend\|relight` | Slow-tick logging, tick handler list, chunk diagnostics |
| `/macro addcmd\|setcmd\|priv\|desc\|show\|save\|delete\|list` | Build a server-side macro running several commands under one name |
| `/we` / `/npc` / `/npcs` | WorldEdit toolbar / NPC control and activity tools |

`/debug` has many more subcommands for mod and engine development — code exports, held-item attributes, network benchmarking — which `/help debug` enumerates. `/macro priv` is the useful one for delegation: set it to `controlserver` to keep a macro admin-only, or `build` to expose it to ordinary players.

> [!WARNING] `/wgen regen` and `/wgen delrock` are destructive
> Regenerating chunks discards everything players built in them, and `delrock` clears a large box around you and can stall the server for minutes. Take a `/genbackup` first.

## 13. Client Commands

These start with a dot, change only your own game, and need no privileges.

| Command | What it does |
|---|---|
| `.chb` / `.help [command]` | Command handbook / list or explain client commands |
| `.clientconfig` / `.clientconfigcreate <name> <type> <value>` | Read, set or create a client config key |
| `.viewdistance <n>` / `.zfar <n>` | View distance with no upper limit / far clipping plane (default 1000) |
| `.freemove` / `.noclip` / `.movespeed <n>` / `.lockfly <1\|2\|3>` | Flight, noclip, speed, axis lock |
| `.gui [bool]` / `.cam` / `.recordingmode` / `.timelapse <days> <months>` | Hide GUIs, camera modes, brighter recording, timelapse capture |
| `.chatsize <w> <h>` / `.clearchat` / `.pastemode <single\|multi>` | Chat window controls |
| `.cp posi\|aposi\|apos\|chat` | Copy position or chat history to the clipboard |
| `.clients` / `.online [ping]` / `.serverinfo` / `.reconnect` | Online players, server info, reconnect |
| `.map purgedb\|redraw\|worldmapsize <h> <w>` | World map database and size |
| `.moon` / `.time` / `.weather` / `.charsel` | Moon phase, local time, weather, character selection |
| `.debug wireframe <entity\|chunk\|region\|blockentity\|ambsounds>` | Wireframe overlays |
| `.debug find <blockname>` / `fov <n>` / `fog <n>` / `shake <n>` | Locate a block; field of view, fog, screen shake |
| `.reload shapes\|textures\|lang` / `.reloadhandbook` | Hot-reload assets for mod development |
| `.we` / `.bsedit` / `.tfedit [fp\|tp\|gui\|ground]` | WorldEdit, block selection and transform editors |

## 14. FAQ

### How do I become admin on a Vintage Story server?

Run `/op YourPlayerName` from the server console, or the Console tab of your [hosted Vintage Story server](/games/vintage-story/). There is no automatic owner — everyone joining a new server gets `suplayer`, which cannot manage privileges, so the first grant has to come from the console or from `StartupCommands` in `serverconfig.json`.

### What is the difference between `/` and `.` commands?

`/` commands are server commands: they change the world, other players or server settings, and are subject to privilege checks. `.` commands affect only your own game — view distance, camera, GUI, debug overlays — and need no permissions.

### Why does my command say I lack permission when I am an admin?

First check that `/player YourName role` really returns `admin`. If it does, you are probably running a `RequiresPlayer` command from the server console, which has no player attached — run it from in-game chat instead.

### How do I remove someone's admin rights?

There is no `/deop`. Set the role explicitly with `/player <name> role suplayer`. Revoking individual privileges from `admin` will not stick, because that role has `AutoGrant: true` and re-acquires engine and mod privileges automatically.

### Can I let players build without giving them creative mode?

Yes. Grant `build` and `useblock`, and land claims still protect other people's plots. `buildblockseverywhere` is the privilege that overrides claims, and it only takes effect in creative mode anyway. For a trusted builder, `/player <name> role crplayer` is usually right.

### How do I let players claim more land?

Raise it per role with `/role <rolename> landclaimallowance <cubic metres>` and `/role <rolename> landclaimmaxareas <n>`. For one person, `/player <name> landclaimallowance <n>` adds extra on top of whatever the role grants.

### Why can't anyone connect to my new dedicated server?

Dedicated servers enforce the whitelist by default. Add yourself with `/whitelist add YourPlayerName` from the console, or turn enforcement off with `/serverconfig whitelistmode off` and restart the world.

## 15. What to Read Next

- [Getting started with your Vintage Story server](/knowledge-base/vintage-story/getting-started-with-your-vintage-story-server/)
- [Vintage Story Server Settings and World Config](/knowledge-base/vintage-story/configuration-overview/) - the full `/worldconfig` and `serverconfig.json` key list
- [How to install mods for Vintage Story](/knowledge-base/vintage-story/how-to-install-mods/)

---

Made with 💜 by GameServerKings
