CS2-Bot-Hider is Metamod:Source & CounterStrikeSharp plugins for Counter-Strike 2 that can disguise CS2 bots as real players
C++
29
166 commits
updated Sep 26, 2026
Make Bot Vivid Again
For developer, see TECH.md.
BotHider is a plugin for Counter-Strike 2 that makes bots look like real human players.
BOT tag from the scoreboardBotHider-windows.zip or BotHider-linux.zip from the Releases page./addons/ folder into your server's /game/csgo/ directory.The packaged addons/BotHider/config.json selects the identity mode and fake-ping behavior. Use "player" to keep BotHider's synthetic-player presentation, or use "bot" to retain Valve's native bot flags. Fake-ping values are constrained to the configured inclusive range. Missing settings use the packaged defaults.
| Command | Description |
|---|---|
bh_status | Show every bot's details |
bh_setname <slot> <name> | Change a bot's name |
bh_setsid <slot> <SteamID64> | Change a bot's SteamID |
bh_setflair <slot> <item_def_index> | Change a bot's scoreboard flair (0 clears it) |
bh_setavatar <slot> <png_path/0> | Apply a server-local PNG avatar, or use 0 to clear it (@css/root or server console/RCON) |
bh_identity_mode <player/bot> | Change the managed-bot identity mode |
bh_namesource <0/1> | 0 = use name from botprofile.db (default)1 = use name from bot_info.json (only affects new bots) |
BotHider can apply a server-local PNG file as the avatar of a managed bot. The file must:
Use the engine player slot shown by bh_status. Quote paths that contain spaces:
bh_setavatar 1 "E:/game/csgo/addons/avatars/player.png"
bh_setavatar 1 0
These commands can be executed from the server console/RCON or by a CounterStrikeSharp administrator with @css/root. bh_status reports avatar state as avatar=<applied>/<bytes>, for example avatar=True/8011B.
The avatar is associated with the bot's final SteamID64. BotHider automatically rebinds it when that bot's SteamID changes, clears the old override when the bot disconnects, and prevents a new bot in the same slot from inheriting it.
CS2 uses separate caches for some HUD surfaces. ServerAvatarOverrides updates the scoreboard avatar, but the compact score strip can retain its previous cached avatar and is not guaranteed to refresh immediately.
You can create a file named bot_info.json inside /game/csgo/addons/BotHider/ to define custom identities for your bots. Example:
{
"73936547": {
"player_name": "s1mple",
"crosshair_code": "CSGO-pE5f8-6RQvk-HLpdN-KW3J6-BQwLA",
"scoreboard_flair": 6034
},
"153400465": {
"player_name": "ZywOo",
"crosshair_code": "CSGO-FqJYj-kLuW3-V2QZ3-xbkQK-PHPYE",
"scoreboard_flair": 5226
}
}
0 clears it).If scoreboard_flair is missing, invalid, or set to 0, BotHider leaves the scoreboard flair empty.
Use unicbm/cs2-econ-id-index to look up valid scoreboard flair item definition IDs.
When a bot is spawned, BotHider will pick an identity from this list (preferring a name match if possible).
To use the names from this file as the bot's display name, set bh_namesource 1.
Q: I changed the steamid in an existing bot_info.json entry, but the bot still loads the old account. Why?
A: The plugin selects an identity entry by matching the bot's name (from botprofile.db) against the JSON keys, not by the SteamID value. If no name match is found, a random entry is used. To force a specific bot to use a specific Steam profile:
botprofile.db bot name as the key in bot_info.json.steamid (32-bit account ID) and crosshair_code under that key.bh_namesource 1 so the display name also comes from this entry (ensuring a one-to-one name/SteamID link).bot_add <that name>.Q: Can I give the same SteamID to multiple bots?
A: No. The CS2 scoreboard distinguishes players by SteamID. If multiple bots share the same SteamID, some will not appear correctly. Each bot that needs a specific avatar must have its own distinct SteamID.
Q: Can I change a bot's identity in game?
A: Yes. Use bh_setsid <slot> <SteamID64> and bh_setname <slot> <name> to assign a new SteamID or name to a bot already in the game.
For more technical details on how identities are assigned, see TECH.md.
CS2-Bot-Hider is licensed under the GNU Affero General Public License version 3 (AGPL-3.0). Commercial use involving closed-source distribution or hosted services may require a separate license. See the LICENSE file for details.
C++
92.7%
C#
5.8%
CS2-Bot-Hider is Metamod:Source & CounterStrikeSharp plugins for Counter-Strike 2 that can disguise CS2 bots as real players
C++
29
166 commits
updated Sep 26, 2026
Make Bot Vivid Again
For developer, see TECH.md.
BotHider is a plugin for Counter-Strike 2 that makes bots look like real human players.
BOT tag from the scoreboardBotHider-windows.zip or BotHider-linux.zip from the Releases page./addons/ folder into your server's /game/csgo/ directory.The packaged addons/BotHider/config.json selects the identity mode and fake-ping behavior. Use "player" to keep BotHider's synthetic-player presentation, or use "bot" to retain Valve's native bot flags. Fake-ping values are constrained to the configured inclusive range. Missing settings use the packaged defaults.
| Command | Description |
|---|---|
bh_status | Show every bot's details |
bh_setname <slot> <name> | Change a bot's name |
bh_setsid <slot> <SteamID64> | Change a bot's SteamID |
bh_setflair <slot> <item_def_index> | Change a bot's scoreboard flair (0 clears it) |
bh_setavatar <slot> <png_path/0> | Apply a server-local PNG avatar, or use 0 to clear it (@css/root or server console/RCON) |
bh_identity_mode <player/bot> | Change the managed-bot identity mode |
bh_namesource <0/1> | 0 = use name from botprofile.db (default)1 = use name from bot_info.json (only affects new bots) |
BotHider can apply a server-local PNG file as the avatar of a managed bot. The file must:
Use the engine player slot shown by bh_status. Quote paths that contain spaces:
bh_setavatar 1 "E:/game/csgo/addons/avatars/player.png"
bh_setavatar 1 0
These commands can be executed from the server console/RCON or by a CounterStrikeSharp administrator with @css/root. bh_status reports avatar state as avatar=<applied>/<bytes>, for example avatar=True/8011B.
The avatar is associated with the bot's final SteamID64. BotHider automatically rebinds it when that bot's SteamID changes, clears the old override when the bot disconnects, and prevents a new bot in the same slot from inheriting it.
CS2 uses separate caches for some HUD surfaces. ServerAvatarOverrides updates the scoreboard avatar, but the compact score strip can retain its previous cached avatar and is not guaranteed to refresh immediately.
You can create a file named bot_info.json inside /game/csgo/addons/BotHider/ to define custom identities for your bots. Example:
{
"73936547": {
"player_name": "s1mple",
"crosshair_code": "CSGO-pE5f8-6RQvk-HLpdN-KW3J6-BQwLA",
"scoreboard_flair": 6034
},
"153400465": {
"player_name": "ZywOo",
"crosshair_code": "CSGO-FqJYj-kLuW3-V2QZ3-xbkQK-PHPYE",
"scoreboard_flair": 5226
}
}
0 clears it).If scoreboard_flair is missing, invalid, or set to 0, BotHider leaves the scoreboard flair empty.
Use unicbm/cs2-econ-id-index to look up valid scoreboard flair item definition IDs.
When a bot is spawned, BotHider will pick an identity from this list (preferring a name match if possible).
To use the names from this file as the bot's display name, set bh_namesource 1.
Q: I changed the steamid in an existing bot_info.json entry, but the bot still loads the old account. Why?
A: The plugin selects an identity entry by matching the bot's name (from botprofile.db) against the JSON keys, not by the SteamID value. If no name match is found, a random entry is used. To force a specific bot to use a specific Steam profile:
botprofile.db bot name as the key in bot_info.json.steamid (32-bit account ID) and crosshair_code under that key.bh_namesource 1 so the display name also comes from this entry (ensuring a one-to-one name/SteamID link).bot_add <that name>.Q: Can I give the same SteamID to multiple bots?
A: No. The CS2 scoreboard distinguishes players by SteamID. If multiple bots share the same SteamID, some will not appear correctly. Each bot that needs a specific avatar must have its own distinct SteamID.
Q: Can I change a bot's identity in game?
A: Yes. Use bh_setsid <slot> <SteamID64> and bh_setname <slot> <name> to assign a new SteamID or name to a bot already in the game.
For more technical details on how identities are assigned, see TECH.md.
CS2-Bot-Hider is licensed under the GNU Affero General Public License version 3 (AGPL-3.0). Commercial use involving closed-source distribution or hosted services may require a separate license. See the LICENSE file for details.
C++
92.7%
C#
5.8%