Blog ·

War Thunder on Mac stuck as a dead launcher

Steam War Thunder on some Macs — especially Apple Silicon + Rosetta — never gets past a dead launcher. Exit -1. Tiny RSS, about 16KB. No aces process. A full reinstall or verify often does not fix it. Steam puts the same zips and the same broken first-run path back.

This is not a crack, a cheat, or a recode of the game. The script restores install layout and extracts binaries that already ship inside Gaijin’s own zips. Then you clear Gatekeeper if macOS blocked the app.

What is actually wrong

  1. Primary. The launcher should unpack aces and CEF from those zips. On affected installs it dies before that finishes. Reinstall reprints this.
  2. Then macOS may still block until Privacy & Security → Open Anyway.
  3. OS Error 259 means the nest path is incomplete — often WarThunder.app.work left beside the launcher. That is a layout problem. It clears when the nest is restored. It is not the root of (1).

Steam’s wt_mac_install.vdf backslash installscript error is cosmetic. Ignore it.

The fix, in order

  1. Restore the nest if needed: WarThunderLauncher.app/Contents/WarThunder.app
  2. Unpack aces and CEF from the shipped zips if they are missing. Unzip keeps Gaijin’s Developer ID signatures. You should not need to re-sign on the normal path.
  3. Quit Steam, hit Play, then Open Anyway if macOS blocked the app.
  4. Confirm a real client: aces RSS in the tens or hundreds of MB — often GB — not a ~16KB launcher stub.

fix-warthunder-mac.sh does steps 1–2. Step 3 is you.

Nest restores write an undo script under $WT/.wt-fix-backup/<timestamp>/ before moving. There is no default full-tree copy — that would duplicate about 80GB. Set WT_FIX_BACKUP=1 for a full copy first, or WT_FIX_YES=1 to skip the interactive confirm when stdin is a TTY.

About code signing

  • You should not need to re-sign for the usual fix. The working payload is still Gaijin-signed from the zip.
  • Blind codesign --force --sign - is a don’t. It strips the secure timestamp and breaks the outer notarized seal.
  • The script only ad-hoc signs if a binary looks unsigned — no TeamIdentifier, or “not signed.” It does not use codesign --verify on in-bundle paths. That false-fails when the nest seal is imperfect and would wrongly trigger a force-sign.

Run it

git clone https://github.com/Gingerjoe1/warthunder-macos-launch-fix.git
cd warthunder-macos-launch-fix
chmod +x fix-warthunder-mac.sh play-warthunder.sh
./fix-warthunder-mac.sh
./fix-warthunder-mac.sh "/path/to/Steam/steamapps/common/War Thunder"

After the script:

  1. Quit Steam fully, relaunch, hit Play.
  2. System Settings → Privacy & Security → Security → Open Anyway, if blocked.
  3. Confirm a real client:
ps -axo pid,rss,etime,command | grep -i "MacOS/aces" | grep -v grep

Fallback if Steam still will not spawn aces after Open Anyway:

./play-warthunder.sh "/path/to/Steam/steamapps/common/War Thunder"

Do not

  • Reinstall hoping for a different outcome.
  • Treat OS Error 259 as the root bug if nest restore is not finished.
  • Move WarThunder.app out of the launcher “to fix the seal.”
  • Blind ad-hoc re-sign everything.
  • Call it done on a ~16KB launcher with no aces child.
  • Call this hacking the game. It isn’t.

Not affiliated with Gaijin Entertainment or Valve. Layout restore and extract of files already inside the official Mac bundle only. Use at your own risk.

Script and notes live on GitHub: Gingerjoe1/warthunder-macos-launch-fix.