Download
depot / docs / vs SteamCMD

SteamCMD can't get an old version

You ran app_update hoping to put a server or game on a specific older build, and SteamCMD just installed the current one — because that's all it does. This isn't a flag you're missing; SteamCMD has no real way to pin an arbitrary old version. DepotDownloader does, and the two are complements, not rivals. I keep both on every server box I run, and here's the division of labour and the bridge across it.

01The wall you hit

SteamCMD is the tool game developers point you at for dedicated servers, and it's excellent at its job: app_update <id> installs and keeps a server's files on the current version. The wall appears the moment you want a different version — to match a community server pinned to an old patch, to roll back after an update broke your mods or your server, or to hold a build that worked. You search for a SteamCMD flag to specify the version, and there isn't a usable one. This is the recurring "SteamCMD download old version" question across the Rust, ARK and Satisfactory server communities, and the answer is the same each time: SteamCMD isn't built for it.

02Why SteamCMD can't

SteamCMD's app_update is a syncing mechanism — it brings your install to whatever the app's current build is, full stop. There's no parameter to say "give me the build from three patches ago." It does carry a hidden download_depot console command that takes a manifest, but it's the same one in the Steam client and it's subject to the same restrictions — it increasingly only fetches the current build or refuses old manifests (the full story is on the download_depot page). So in practice SteamCMD gives you one version: today's. To pin a specific older one you need a tool that speaks manifests, and that's exactly what DepotDownloader is.

03Who does what

The taskThe tool
Install / keep a server on the current versionSteamCMD — what the devs document, the production path
Download a specific older version by manifestDepotDownloader — the -manifest flag SteamCMD lacks
Pin a server to an old build and stop it updatingDepotDownloader for the build, then hold it
Routine "is there an update? apply it" automationSteamCMD — built for exactly that loop

So it's not "DepotDownloader instead of SteamCMD" — it's both, for different jobs. Many server setups use SteamCMD day to day and reach for DepotDownloader only when they need a version SteamCMD can't express — that's exactly how I run mine, and the mistake I see people make is assuming there must be a SteamCMD flag for old versions and burning an afternoon hunting for it. The fuller side-by-side (and where steamctl fits) is on the comparison page; this page is just the old-version task.

04The bridge: roll a server back

Concretely, to put a dedicated server on a specific old version: find that version's manifest for the server app on SteamDB, and download it with DepotDownloader instead of SteamCMD. Dedicated-server apps are usually free and download anonymously, so often no login is even needed:

# SteamCMD (current only): app_update 258550 validate # DepotDownloader (a specific build): $ ./DepotDownloader -app 258550 -depot 258551 -manifest <old-build-manifest> -dir ./server

Then pin it — set the install not to auto-update and update it deliberately, the stop-download-restart rhythm the Rust server guide details. The dedicated-servers hub covers the per-game app IDs and the cron pattern for keeping (or holding) a server's version.

05Server-admin notes

  • Match clients to the server. A server pinned to an old build only accepts clients on the same version — the version-matching guide covers getting everyone aligned.
  • Old manifests can be gated. Very old server builds ride the same request-code restrictions as games — recent versions are the reliable case; deep history is a coin flip.
  • Panels that wrap SteamCMD. If your host panel (AMP, Pterodactyl, a game-server provider) only knows SteamCMD, you can still drop a DepotDownloader-fetched build into the server's files directory and point the panel at it — it runs the files, it doesn't care which tool fetched them.

The summary fits on a sticky note: SteamCMD for the current version, DepotDownloader for a specific old one. Keep both in the toolbox and the "SteamCMD won't downgrade" wall stops being a wall.