You installed Reunion so non-Steam players get stable, unique Steam IDs, but players still show STEAM_ID_LAN, share one ID, or get a different ID every reconnect — which breaks admin flags, bans, and stats that are all keyed by SteamID. Reunion works, but only when its salt and ID-generation mode are configured correctly, and a common failure is that it silently did not load at all. Here is how to get real, stable IDs.
1. Confirm Reunion actually loaded
Reunion is a Metamod plugin. If it is not listed in Metamod's plugin list, nothing it does is happening and the engine falls back to STEAM_ID_LAN for non-Steam clients. From the server console:
meta list
Reunion must appear with status running. If it is absent, its line is missing from addons/metamod/plugins.ini; if it shows bad load, the most common cause is the salt problem in the next step — Reunion refuses to start without a valid salt.
2. Set a SteamIdHashSalt of at least 16 characters
This is the single most common reason Reunion does not load. Its config, reunion.cfg in the server root, must define a hash salt of 16 characters or more. Anything shorter and Reunion refuses to initialize:
SteamIdHashSalt = a-long-random-secret-salt-value
The salt is what makes generated IDs both unique and stable — it is mixed into the hash that turns a non-Steam client's identity into a persistent STEAM_ ID. Once set, never change it: changing the salt regenerates every non-Steam player's ID, orphaning their admin access, bans, and rank. Pick one long random value at setup and leave it.
3. Choose the right cid (client id) generation mode
Reunion generates the ID for non-Steam clients from a source you select in reunion.cfg. The mode decides whether IDs are stable. A mode that keys off something the client can change or that many clients share produces collisions; a mode that keys off the client's stored authentication produces stable, distinct IDs. Set the generation mode per Reunion's documented options in reunion.cfg and prefer the mode that derives the ID from the client's own stored token rather than from an easily-shared value. If two different people consistently get the same ID, your mode is deriving IDs from something they share — switch modes and have them reconnect.
4. Match Reunion to your engine
Reunion is the non-Steam provider for ReHLDS. On original Valve HLDS you use dproto instead. Running Reunion on stock HLDS, or an old Reunion build against a newer ReHLDS, can load but misbehave — wrong IDs, or clients that authenticate as Steam when they are not. Confirm you are on ReHLDS (its banner prints at boot) and that Reunion is a build current with your engine, as covered in the ReHLDS compatibility guide.
5. Understand Steam vs non-Steam clients
Reunion handles the non-Steam side; genuine Steam clients keep their real Steam ID regardless. If a legitimate Steam player shows a wrong ID, that is not a Reunion issue — check that the server is validating Steam tickets and that sv_lan is 0, since a LAN server issues STEAM_ID_LAN to everyone. Mixing this up sends admins chasing Reunion config when the real cause is a LAN-mode server. Set sv_lan 0 and confirm real Steam clients resolve to their own IDs before blaming Reunion for non-Steam ones.
Troubleshooting
- Reunion
bad loadinmeta list—SteamIdHashSaltis shorter than 16 characters or missing. Set a long salt (step 2). - Everyone is
STEAM_ID_LAN— Reunion is not loaded at all, orsv_lan 1. Checkmeta listand setsv_lan 0. - Two players share one ID — the cid generation mode derives the ID from a shared value. Change the mode (step 3).
- ID changes every reconnect — the mode keys off something non-persistent, or the salt was changed. Fix the mode and leave the salt alone.
- All non-Steam bans stopped working after an edit — you changed
SteamIdHashSaltand regenerated every ID. Restore the original salt. - Wrong engine — Reunion on stock HLDS. Use dproto there instead.
Verification
Have a non-Steam player connect and run status in the console; note their STEAM_ ID. Have them reconnect and confirm the ID is identical — stable across sessions is the whole point. Then have a second non-Steam player join and confirm they get a different ID. If IDs are stable per player and distinct between players, Reunion is configured correctly and admin flags, bans and rank will now key reliably. Finally, add a non-Steam admin by their resolved ID and confirm the flag applies on their next connect. Guard reunion.cfg and its salt like a password.









