field notes · modding

TESL Reborn on macOS

Play TESL Reborn, the community revival of The Elder Scrolls: Legends, on your Mac with the game's own macOS build and the official plugin. Intel Macs run it natively, Apple Silicon Macs run the same x86_64 build through Rosetta 2. No Wine, no Parallels, no Windows VM, and you stay logged in.

Tested on macOS 27 · Apple Silicon via Rosetta 2 Build Steam · plugin v1.3.1-beta Updated 2026-10-16 Source GitHub
TL;DR The official patch is a standard BepInEx 5 package. Swap its Windows injector for the BepInEx macOS launcher, fix two small launch gotchas, and add the tiny TESL Reborn Mac Fix plugin, because the server mishandles the Mac client's device profile. The first start asks for your TESL Reborn username and password once, after that Steam signs you in automatically.

Prerequisites

The game lives here, everything below goes next to its app.app:

~/Library/Application Support/Steam/steamapps/common/The Elder Scrolls Legends/

Option A · automatic setup

The script fetches the current TESL Reborn plugin, the BepInEx macOS launcher and the Mac fix files from the GitHub release, installs everything, and applies all three Mac fixes below. It verifies the checksums of the Mac fix files and is safe to re-run, e.g. after a plugin update. Have a look at it before running it:

curl -fsSL https://github.com/MarschMallow/tesl-reborn-mac/releases/latest/download/install.sh -o install.sh
less install.sh
sh install.sh

Then set the Steam launch option from Launching and do the first start.

Option B · manual setup

1. Get the packages

2. Put the files into the game folder

The Elder Scrolls Legends/ ├── app.app ├── BepInEx/ │ ├── config/ │ ├── core/ │ └── plugins/ │ ├── RuntimeUnityEditor/ │ ├── TeslRebornPlugin/ │ └── TeslRebornMacFix/ │ └── TeslRebornMacFix.dll ├── libdoorstop.dylib ├── run_bepinex.sh ├── tesl_reborn_mac_fix.py └── .doorstop_version

3. Configure the launcher

Open run_bepinex.sh and set the executable name near the top:

executable_name="app.app"

Make it executable and clear the quarantine flag macOS puts on downloads:

cd ~/Library/Application\ Support/Steam/steamapps/common/The\ Elder\ Scrolls\ Legends
chmod +x run_bepinex.sh
xattr -dr com.apple.quarantine BepInEx libdoorstop.dylib run_bepinex.sh

4. Fix 1 · Steam environment, Fix 2 · localhost:3000 probe

Launched via the script instead of directly from Steam, SteamAPI_Init fails ("SteamNotAvailable") unless the Steam app ID is in the environment. And the plugin first asks http://localhost:3000 for its config; on a developer Mac something often listens there (Node, Docker, Grafana), answers with HTML, and the game dies with invalid token "<". tesl_reborn_mac_fix.py flips one byte in the plugin so it goes straight to tesl-reborn.com. It keeps a backup, is idempotent, and refuses to touch a changed plugin.

In run_bepinex.sh, directly below # Everything past this point is the actual script, insert:

cd "$(dirname "$0")"
python3 "$(pwd -P)/tesl_reborn_mac_fix.py" || true
export SteamAppId=364470 SteamGameId=364470 SteamClientLaunch=1 SteamEnv=1

5. Fix 3 · the login (TESL Reborn Mac Fix)

Already in place if you copied TeslRebornMacFix.dll in step 2. Without it you can log in exactly once, every later login fails. Why is explained below.

Launching

From Steam (recommended): Library → right-click the game → Properties → Launch Options:

"/Users/<you>/Library/Application Support/Steam/steamapps/common/The Elder Scrolls Legends/run_bepinex.sh" %command%

Or from the terminal (Steam must be running):

~/Library/Application\ Support/Steam/steamapps/common/The\ Elder\ Scrolls\ Legends/run_bepinex.sh

Mind the exact path, a stray double space breaks the Steam launch with OS Error 260. The splash screen shows the TESL Reborn plugin version in a corner.

First start

Once per Mac On the first start the game asks for your TESL Reborn username and password. Enter them, that registers your Mac as a trusted device. From the next start on, Steam signs you in automatically, no password needed.

Logging in on another device logs out your other sessions, that is normal TESL Reborn behaviour.

Why the login fix is needed

Since TESL Reborn v1.1.0 the server checks whether a device is trusted. A new device has to confirm with username and password. For the macOS client that confirmation is broken on the server: the Mac build identifies itself as componentType "osx", os "OSX", platform "MAC_CLIENT" with a UUID-style device fingerprint, and the password login for an existing account answers those values with HTTP 500. So the Mac never becomes trusted. You get in once, afterwards the Steam sign-in fails (resultCode 17 or 13) and the password fallback crashes.

The Windows client sends win, WINDOWS, PC_CLIENT, osVersion "10" and a 40-character hex fingerprint, and that works. The Mac Fix plugin rewrites exactly those fields in the game's account requests to the Windows values. The fingerprint becomes a stable SHA-1 hash of your Mac's own hardware ID, so it is unique per Mac and never changes. Nothing else is touched: your Steam ticket, your credentials and the game itself go through unchanged, and the plugin does nothing on Windows. If the game's Steam step reports SteamAuthFailed, it continues to the password dialog instead of a dead end.

How this was found: with every Mac-side cause ruled out, the Windows client was run under CrossOver on the same Mac and its requests compared field by field with the native client's. The issue is reported to the TESL Reborn team. Once it is fixed on the server, the plugin becomes unnecessary and can simply be deleted.

Updating the plugin

Download the new TESL Reborn ZIP and unpack it over the game folder (overwrite BepInEx/), or simply re-run install.sh. The Mac Fix plugin and the localhost fix survive updates, the launcher re-applies the localhost patch on every start. If it prints "IL pattern not found", the plugin code changed, please report it with the version. If a build bumps .doorstop_version, grab the matching BepInEx macOS release.

Alternative · CrossOver

The Windows client also runs in CrossOver (paid, 14-day trial): install Windows Steam in a Windows 10 64-bit bottle, install the game there, unpack the TESL Reborn ZIP into the game folder and set the library override winhttp to native, builtin in the bottle's Wine configuration. You still need the localhost fix on a Mac with something on port 3000. It works, but the native route above is free and lighter.

Troubleshooting

Logs are in BepInEx/LogOutput.log inside the game folder. The Mac Fix plugin writes one line per account request there (HTTP status and result code, no credentials).

SymptomCause / fix
SteamNotAvailable dialogSteam not running, or env vars missing (Fix 1).
invalid token "<" at startSomething on port 3000 (Fix 2).
No Reborn version label on the splashBepInEx did not inject: wrong executable_name, script not executable, or quarantine flag.
Logs in once, then never againMac Fix plugin missing. Install it, then log in once with username and password.
Password prompt on every startCheck the log for TESL Reborn Mac Fix active. If it is there, log in once more so the Mac gets registered.
Bad CPU type / game does not start on M-seriesRosetta 2 missing, see prerequisites.
OS Error 260 from SteamA typo or double space in the launch-option path.

How this works

Downloads

All files come from the latest release of github.com/MarschMallow/tesl-reborn-mac, where the source lives too.

install.sh One-shot setup (Option A) TeslRebornMacFix.dll Login fix plugin v1.0.0, goes into BepInEx/plugins/TeslRebornMacFix/ sha256 20d96f8a36cca37d324386556745f2160538e1152863e7daf01def04a3d85df7 macfix/Plugin.cs Source of the plugin (BepInEx 5, net35) tesl_reborn_mac_fix.py localhost:3000 fix, one-byte IL patch sha256 dc5ea480f71fe9f1571fd4dd5d9c5a6d5a4a5fe9e5fda4f7f67738f09158a001

Removing everything

Delete BepInEx/, run_bepinex.sh, libdoorstop.dylib, .doorstop_version, tesl_reborn_mac_fix.py and steam_appid.txt from the game folder, and clear the Steam launch options. The game itself is untouched.

Comments

Questions, success reports, a different Mac model? Leave a note. Comments are moderated and show up once they are approved. Your name and comment are stored on this server; the email field is optional, never shown, and only used if you want reply notifications.

This guide does not redistribute the game. You must own the game client from Steam (or the former Bethesda.net Launcher). It links to the official TESL Reborn and BepInEx downloads and provides only the small Mac fix files, with source. Not affiliated with Bethesda, Sparkypants, Dire Wolf Digital, or the TESL Reborn team.