How to Install CS2 Server Plugins: Metamod and CounterStrikeSharp
Quick answer
To add plugins to a CS2 server, extract the CS2-compatible Metamod:Source 2.x dev build into game/csgo, then open game/csgo/gameinfo.gi and add Game csgo/addons/metamod directly below the Game_LowViolence csgo_lv line. Next, extract CounterStrikeSharp (the with-runtime package on first install) into the same folder and put each plugin in its own folder under addons/counterstrikesharp/plugins. Check with meta list and css_plugins list in the console. When a CS2 update resets gameinfo.gi, re-add the line and update the frameworks.
What do you need to install plugins on a CS2 server?
Plugins on CS2 work differently from the SourceMod setup many admins remember from CS:GO. CS2 runs on Source 2, so old SourceMod plugins and .smx files will not load. Instead you use two layers: Metamod:Source at the bottom, hooking into the game, and a framework on top that runs the actual plugins. The most widely used framework today is CounterStrikeSharp, where plugins are written in C# on .NET.
Before you start, you need a working, up-to-date CS2 dedicated server. Installing it with SteamCMD, creating a GSLT and choosing launch parameters is a separate topic that our CS2 server setup guide covers. This guide picks up once that server is running and explains how to add the plugin layer and keep it working.
You also need file access. On your own VPS that means SSH or SFTP; on a managed game panel it means the built-in file manager. Pterodactyl-based panels let you open the game/csgo folder, upload archives and restart the server from the same screen. Finally, know which operating system the server runs: Metamod and CounterStrikeSharp ship separate Linux and Windows packages, and the wrong one simply will not load.
- A current CS2 dedicated server that starts cleanly
- Metamod:Source 2.x dev build for the server's operating system
- CounterStrikeSharp, using the with-runtime package on first install
- File access to game/csgo (SFTP, SSH or a panel file manager)
- Server console access (panel console or RCON)
What do Metamod:Source and CounterStrikeSharp actually do?
Metamod:Source is a plugin loader. When the engine starts, it loads Metamod first, and Metamod then loads whatever plugins are registered with it. On its own it adds nothing players can see; its job is to give other plugins a safe way to hook into the engine. CS2 needs the Metamod:Source 2.x branch, which is distributed as development builds. The old 1.x stable releases do not work with CS2.
CounterStrikeSharp is itself a Metamod plugin, but it is really a platform. It bundles a .NET runtime, passes game events such as a player connecting, a round starting or a bomb being planted into C# code, and handles shared work like commands, permissions and config files. Nearly every admin, retake or VIP plugin you download is built on its API.
The table below lays out the layers and where each one lives. When something breaks, working out which layer stopped loading gets you halfway to the fix.
| Layer | Role | Location | How to check it |
|---|---|---|---|
| CS2 dedicated server | The game itself | game/csgo | Server starts and you can connect |
| Metamod:Source 2.x | Plugin loader | game/csgo/addons/metamod | meta list, meta version |
| CounterStrikeSharp | C# plugin platform with bundled .NET | game/csgo/addons/counterstrikesharp | Appears in meta list output |
| Plugins | Admin, retakes, VIP and other features | addons/counterstrikesharp/plugins/<Name> | css_plugins list |
Why does the install order matter?
The order is Metamod first, then CounterStrikeSharp, then plugins. Each layer depends on the one below it: if Metamod does not load, CounterStrikeSharp never starts, and without CounterStrikeSharp the plugins are silently ignored. If you drop everything in at once and something fails, you have no easy way to tell where.
So restart and check after each layer. Install Metamod, edit gameinfo.gi, restart, and confirm Metamod responds to meta list. Then add CounterStrikeSharp, restart, and confirm it appears in the meta list output. Only then move on to plugins, and add those one at a time as well.
Try the whole process on a copy rather than your live server if you can. A second server on your game panel or a separate install folder on the same machine is enough. A half-finished install while players are connected can stop the map from loading or crash the server on startup.
Which line do you add to gameinfo.gi?
A single line in game/csgo/gameinfo.gi is what makes the engine load Metamod. Open the file in a text editor and find the SearchPaths block. Inside it is a line reading Game_LowViolence csgo_lv; add Game csgo/addons/metamod on the line directly below it. This is exactly the position described in CounterStrikeSharp's official getting-started documentation.
Placement matters because the engine reads search paths in order. If the line ends up outside the block or in the wrong spot, Metamod will not load and the console will not recognise the meta command. Matching the indentation of the surrounding lines is not strictly required, but it keeps the file readable, and you can add a trailing comment as a reminder to yourself.
After saving, shut the server down completely and start it again. Changing the map is not enough, because gameinfo.gi is only read at startup. Some game panels offer an option that adds this line automatically on every start. Use it if you have it, since forgetting to re-add the line after an update is the single most common problem.
- File: game/csgo/gameinfo.gi
- Find: Game_LowViolence csgo_lv
- Add directly below: Game csgo/addons/metamod
- Save and fully restart the server
What should the folder layout look like?
Both the Metamod and the CounterStrikeSharp archives start with an addons folder. Extract both into game/csgo and the folders merge into the correct structure on their own. The most common mistake is extracting one level too deep or too shallow and ending up with nested paths such as game/csgo/addons/addons.
CounterStrikeSharp registers itself with Metamod through a small .vdf file it places in addons/metamod. Plugins live under addons/counterstrikesharp/plugins, each in its own folder, and the folder name must match the name of the .dll inside it. When a plugin first runs, it usually creates its config file under addons/counterstrikesharp/configs/plugins in a folder named after itself.
| Path (under game/csgo) | Contents |
|---|---|
| addons/metamod | Metamod files plus the .vdf that registers CounterStrikeSharp |
| addons/counterstrikesharp/api | The framework core |
| addons/counterstrikesharp/dotnet | .NET runtime from the with-runtime package |
| addons/counterstrikesharp/plugins/ExamplePlugin/ExamplePlugin.dll | Each plugin in its own folder |
| addons/counterstrikesharp/configs | core.json, admins.json and plugin configs |
How do you check that plugins are loaded?
Type meta list in the server console. If Metamod is running, you get a list of loaded Metamod plugins, and CounterStrikeSharp should be on it. If the command is not recognised, Metamod never loaded, and the cause is almost always the gameinfo.gi line or a package built for the wrong operating system. meta version shows which Metamod build is installed.
On the CounterStrikeSharp side, css_plugins list shows every plugin the framework found and its state. If a plugin is missing from the list, check the folder name, the .dll name and which CounterStrikeSharp version the plugin requires. If it is listed but failing, read the console output and server logs; a missing dependency or an incompatible API version is usually spelled out plainly.
Most plugins add commands that start with css_, usable from chat and the console. Commands that need permissions only work once you have added yourself to admins.json with your SteamID; our CS2 setup guide walks through that file. When a command does nothing, check your permissions first and then whether the plugin actually loaded.
Which plugin categories are popular?
Most community servers draw on a handful of plugin categories. When picking a specific plugin, a few signals matter more than the name: when it was last updated, which CounterStrikeSharp version it supports, whether its source is public, and whether recent comments confirm it still works after the latest CS2 patch.
Download plugins only from sources you trust. Open-source, actively maintained projects carry less risk, both for security and for getting fixes after updates. A .dll from an unknown source can run any code it likes on your server, so treat anything with access to your files with the same care you would give any other software you install.
- Admin tools: kick, ban, mute, map changes and permission groups
- Retakes: post-plant scenarios, spawn data and automatic weapon allocation
- Practice and warmup: utility practice, unlimited money, round skipping
- Map rotation and voting: rock-the-vote, nominations, workshop map lists
- VIP: reserved slots, tags or extra perks for supporters
- Match management: ready-up systems, knife rounds, demo recording
Why do plugins stop working after a CS2 update?
The most common reason is simple. When SteamCMD applies an update, it replaces gameinfo.gi with Valve's original and your Metamod line disappears. The server starts fine and players can join, but no plugins load and the meta command is unknown. The fix is to add the line back and restart.
The second reason is more technical. Metamod and CounterStrikeSharp locate specific functions inside the game using signatures and offsets. When Valve ships a large patch, those can change, so the framework hooks the wrong place and the server crashes on startup or some features misbehave. In that case you wait for the developers to publish updated gamedata or a new release, then update Metamod and CounterStrikeSharp.
A short routine for update day saves a lot of guessing. Check the gameinfo.gi line, look at meta list and css_plugins list, and if the server is crashing, move your plugins into a backup folder and see whether it starts without them. If it starts cleanly, one of the plugins is the problem; if it still crashes, you are waiting on a framework update.
Can you use alternative frameworks such as SwiftlyS2?
Yes. CounterStrikeSharp is the most common choice, but not the only one. SwiftlyS2 is an actively developed framework from the team behind the earlier Swiftly project, and it supports plugins written in C#. If you run an older Swiftly-based server, check the project's own announcements to see which version is still supported.
Plugins do not carry over between frameworks. A plugin written for CounterStrikeSharp will not run on SwiftlyS2, and the reverse is also true. Choose your framework based on which platform the plugins you want were written for. Running two frameworks on one server can work in some setups, but it makes debugging much harder, so if you are starting out, stick with one.
How do GSLT and Valve's rules affect plugins?
A public CS2 server runs with a Game Server Login Token (GSLT) created for App ID 730. The token is tied to your Steam account, and Valve can ban the token of a server that breaks its rules. A banned token keeps the server out of the browser.
Keep this in mind when choosing plugins. Valve's community server rules forbid giving players items they do not own, such as weapon skins, knives or gloves, or imitating the inventory system. Plugins in that category are the best-known cause of token bans. Showing players misleading information falls into the same risk area.
The rules are updated from time to time, so follow Valve's own announcements for the current text. The general principle is straightforward: adding gameplay features is fine, imitating Valve's economy or inventory is not.
Install CS2 server plugins in 7 steps
- 1
Back up and stop the server
Copy game/csgo, or at least the cfg folder and gameinfo.gi, then shut the server down completely.
- 2
Extract Metamod:Source 2.x
Download the Metamod:Source 2.x dev package for your server's operating system and extract its addons folder into game/csgo.
- 3
Edit gameinfo.gi
In game/csgo/gameinfo.gi, find the Game_LowViolence csgo_lv line, add Game csgo/addons/metamod directly below it and save.
- 4
Confirm Metamod loads
Start the server and type meta list in the console. If the command is unknown, check the line placement and the package you downloaded.
- 5
Install CounterStrikeSharp
Extract the with-runtime package into game/csgo on first install, restart, and confirm CounterStrikeSharp appears in meta list.
- 6
Add plugins one at a time
Put each plugin in its own folder under addons/counterstrikesharp/plugins, restart, and confirm it with css_plugins list.
- 7
Configure and plan for updates
Edit the config files under configs/plugins, add your admins to admins.json and recheck the gameinfo.gi line after every CS2 update.
Frequently Asked Questions
Can I use SourceMod plugins from CS:GO on CS2?
No. CS2 runs on Source 2 and SourceMod's .smx plugins cannot load on it. Most of the popular ideas from CS:GO plugins have been rebuilt for CS2 on CounterStrikeSharp or SwiftlyS2. Look for the CS2 version of the feature you need; using a maintained C# plugin that does the same job is faster and safer than trying to port old SourcePawn code.
Why do I get Unknown command when I type meta list?
It means Metamod never loaded. First check that Game csgo/addons/metamod sits directly below Game_LowViolence csgo_lv in gameinfo.gi. If the line is correct, make sure the addons folder is at the right level inside game/csgo rather than nested, and that the package matches your server's operating system. Always do a full restart after the change, since the file is only read at startup.
Do I need the with-runtime package for every update?
Usually not. The with-runtime package includes the .NET runtime and is required on first install. Later updates can normally use the smaller package containing only the framework files. If the release notes say CounterStrikeSharp has moved to a new .NET version, install the with-runtime package again. When in doubt, updating with the with-runtime package is the safe option; it is just a bigger download.
Do I have to restart the server after changing a plugin's config?
It depends on the plugin. Some read their config on map change or through their own reload command, others only at startup. CounterStrikeSharp can reload updated .dll files, but for config changes a map change or full restart is the reliable option. If the plugin's documentation lists a reload command, use it to apply settings without disconnecting your players.
Will skin and knife plugins get my server banned?
They can. Valve's community server rules forbid showing players weapon skins, knives or gloves they do not own, and plugins doing this are a well-known reason for GSLT bans. A banned token keeps your server out of the server browser. If you want your community to grow over the long term, staying away from this category is worth more than the short-term attention it brings.
Do I need my own VPS to install plugins?
No. A game panel with a file manager and console access is enough; if you can upload and extract an archive inside game/csgo, the install works the same way. A VPS gives you more control but leaves updates, backups and security to you. On TheCrewHost's CS2 servers the file manager and console are built into the panel, and the İstanbul location keeps ping low for players in Türkiye.
