Insurgency: Sandstorm Mods, Map Cycle and Scenarios via mod.io
Insurgency: Sandstorm mods come from mod.io. To run them on a dedicated server you start with -Mods, give the server a mod.io account, and either subscribe that account to the mods you want or list their IDs. Custom maps need a vanilla boot map and -ModDownloadTravelTo. Your rotation is controlled by MapCycle.txt.
Warning before you copy any older guide: the mod.io authentication changed with update 1.20 ("Operation: Clear Sight"). Several host guides describe a new method, while the developers' Server Admin Guide still documents the older one, so this page covers both and says which is which. Checked November 2026.
- Mods need the
-Modsstartup flag and a dedicated mod.io account for the server. - After 1.20, hosts describe a one-time emailed security code and mods controlled by the server account's subscriptions. The older flow used an access token in an ini file plus
Mods.txt. - Custom maps: boot on a vanilla map and add
-ModDownloadTravelTo=MAP?Scenario=SCENARIO, using names from the mod's mod.io page. MapCycle.txttakes one scenario per line, with optionalMode,LightingandMaxPlayersvalues.
On this page
Which mod.io method does your server use?
The developers' Server Admin Guide describes this older flow: create a read-only mod.io API access token, put it in Engine.ini under [/Script/ModKit.ModIOClient] (bHasUserAcceptedTerms=True and AccessToken=...), add -Mods, then list mod IDs one per line in Mods.txt, or use -ModList= or -CmdModList="id1,id2". The guide shows no update date.
Host documentation written after update 1.20 says the older approach no longer works. EmeraldHost states that the token in the ini file and Mods.txt or -ModList no longer apply, and Streamline Servers describes the new flow as requiring a fresh mod.io account. A community post for self-hosted Windows servers still has people editing GameUserSettings.ini with a token on top of the new steps. These sources do not fully agree, so do this: follow the newer steps below first, and treat the older ones as a fallback if your build still honours them. Whichever you use, test with one mod before adding twenty.
Setting up server mods after update 1.20
- Create a separate mod.io account
Use a new account and email address just for the server. Do not reuse your player account, since hosts report that a shared account will not download mods.
- Subscribe to the mods
Log in to mod.io as the server account and subscribe to every map, mutator and mod you want. Per the host guides, those subscriptions decide what the server downloads.
- Get a security code
Request the one-time security code for that account. Some hosts provide a panel button or helper page for this; the 5-digit code arrives by email.
- Start once with the code
Pass the code on the startup line (the community post and Docker project use
-SecurityCode=CODE) together with-Mods. Let the server start fully, then stop it.-Mods -SecurityCode=123456 - Set the code back to none
The code is single use. Change it to
none(or remove it) and restart. The server should now download the subscribed mods. - Check the files
Downloaded mods appear under a
mod.io/254folder (254 appears to be the game's mod.io ID). If downloads loop, hosts suggest deleting that cache and authorising again with a new code.
Players also need the same maps and mods. Custom maps require each player to subscribe on their own mod.io account to join.
Hosting with ChicagoServers? The Insurgency Sandstorm server hosting page lists what is included, such as a built-in mod installer, free server backups and SFTP file access. The principles above still apply.
Custom maps with -ModDownloadTravelTo
A modded map cannot be your boot map, because it has not downloaded when the server starts. The server boots on a vanilla map, downloads the mods, and then travels to the custom map. That travel is what -ModDownloadTravelTo does. Without it, one project notes that mutators on the first map show as invalid.
-Mods -ModDownloadTravelTo=TORO?Scenario=Scenario_TORO_Checkpoint_SecurityTORO is a community map whose ID (94277) is used as the example in the LinuxGSM docs. Add the map's scenarios to your MapCycle.txt so it stays in rotation, and use whatever mutators the mod lists with -mutators=Name1,Name2.
Writing MapCycle.txt
MapCycle.txt lives in Insurgency/Config/Server/. Put one scenario per line. The server cycles in order. Without the file, the default is all Versus scenarios. Each line can carry a mode override, lighting and a player cap:
(Scenario="Scenario_Crossing_Checkpoint_Security",MaxPlayers=8)
(Scenario="Scenario_Town_Checkpoint_Security",Mode="CheckpointHardcore")
(Scenario="Scenario_Town_Checkpoint_Security",Lighting="Night")
(Scenario="Scenario_Refinery_Push_Security",Lighting="Day")- List Day and Night entries separately for the same scenario if you want the correct voting images.
Mode="CheckpointHardcore"is the only mode override value shown in the developers' guide.bUseMapCycleandbMapVotinginGame.iniboth default to True. Voting picks from the cycle.- Use
-MapCycle=Nameto load a different file. - The developers' guide itself uses both Hideout and Town for one map (in its tables versus its examples), so verify names with the commands in the next section.
Game modes and finding the right scenario names
Scenario names follow the pattern Scenario_MAP_TYPE with an optional side or layout (_Security, _Insurgents, _East, _West, _A). The most reliable way to get names for your build is through RCON: run maps to list levels and scenarios to list scenarios, each with an optional filter. You can even switch with travelscenario SCENARIO.
| Group | Modes | Notes |
|---|---|---|
| Co-op (vs. AI) | Checkpoint, Outpost, Survival | Hardcore Checkpoint variant; players all on Security in Outpost and Survival |
| Versus (PvP) | Push, Firefight, Frontline, Domination, Ambush, Defusal | Skirmish and Team Deathmatch also appear in the developers' scenario tables |
The developers' guide lists Crossing, Farmhouse, Hideout, Hillside, Ministry, Outskirts, Precinct, Refinery, Summit, Power Plant, Tideway, Bab and Citadel with their available scenarios. Not every map has every mode (for example, Bab and Citadel list Outpost, and only some maps list Survival). Modes are added and removed over time (Wikipedia's article on the game notes Skirmish was removed from matchmaking in an older update), so confirm with scenarios on your own server before building a cycle.
Common problems
- Only stock maps in the vote. The map's scenarios are not in
MapCycle.txt, or the mod did not finish downloading. - Server stuck downloading. Wait for the first download, and if it loops, delete the mod.io cache and re-authorise. A community post warns that copying the mod.io folder to another machine causes a download loop.
- Mutators show as invalid. Start on a vanilla map and use
-ModDownloadTravelTo. - Security code already redeemed. The server is authorised. Set the code to
none. - Player cannot join. They have not subscribed to the same map or mods on their mod.io account.
Frequently asked questions
How do I add mods to an Insurgency: Sandstorm server?
Start with -Mods, give the server its own mod.io account, subscribe that account to the mods, and authorise it with the one-time emailed security code. Older guides use an access token and Mods.txt instead.
What is -ModDownloadTravelTo?
A launch argument for modded maps. The server boots on a vanilla map, downloads mods, then travels to the map and scenario you give, in the form MAP?Scenario=SCENARIO.
Does Mods.txt still work?
The developers' guide documents it, but host guides written after update 1.20 say it no longer applies. Test with one mod to see how your build behaves.
Where is MapCycle.txt?
In Insurgency/Config/Server/. It takes one scenario per line, with optional Mode, Lighting and MaxPlayers values.