Skip to content

CLI & Protocol

Wesley edited this page Aug 14, 2026 · 7 revisions

CLI & Protocol

TcNo-Acc-Switcher.exe handles the GUI, swaps, list commands, tray startup, and tcno:// links. There is no separate CLI binary.

TcNo-Acc-Switcher.exe --help

Quick reference

Action Example
Steam swap TcNo-Acc-Switcher.exe +s:76561197960287930
Steam swap with persona TcNo-Acc-Switcher.exe +s:76561197960287930:3
Templated platform swap TcNo-Acc-Switcher.exe +b:email@example.com
Open platform page TcNo-Acc-Switcher.exe Steam or --page=Steam
Add new / logout flow TcNo-Acc-Switcher.exe logout:Steam
List platforms TcNo-Acc-Switcher.exe --list-platforms
List accounts TcNo-Acc-Switcher.exe --list-accounts=Steam
JSON list output Add --json to a list command
Start hidden in tray TcNo-Acc-Switcher.exe -tray
Debug logs -v or --log-level=debug

Platform short names come from the first entry in each "Identifiers" array in Platforms.json.

Swap syntax

+<platformShort>:<uniqueId>[:optionalArg]
  • Steam uses +s:<steamId64>[:personaState].
  • Other platforms use +<platformShort>:<uniqueId>.
  • Unknown arguments after the swap token are passed to the target platform executable.

Steam persona state is an integer. Example:

TcNo-Acc-Switcher.exe +s:76561197960287930:3

Shortcut and game launch flags

Flag Use
--run-appid=<id> After a Steam swap, launch steam://rungameid/<id>
--run-shortcut=<value> After a swap, launch a .lnk or .url found in shortcut folders

--run-appid only works with +s:<steamId64>. --run-shortcut works with Steam and templated platform swaps. The shortcut value is URL-decoded, reduced to a basename, then searched in cache, Desktop, and Start Menu locations.

Example:

"C:\Program Files\TcNo Account Switcher\TcNo-Acc-Switcher.exe" +s:76561197960287930 --run-appid=730

The UI can create shortcuts from the account right-click menu.

Logout / Add New

These run the same flow as Add New in the GUI:

TcNo-Acc-Switcher.exe logout
TcNo-Acc-Switcher.exe logout:Discord
TcNo-Acc-Switcher.exe logout:Steam

logout:<platform>:<accountId> is parsed for protocol compatibility. The current logout flow clears the platform's current login state, not one saved account.

Open a page

TcNo-Acc-Switcher.exe Steam
TcNo-Acc-Switcher.exe --page="Epic Games"
TcNo-Acc-Switcher.exe --open-page=Steam

This is also used when the app restarts as administrator and needs to return to the same platform page.

List commands

TcNo-Acc-Switcher.exe --list-platforms
TcNo-Acc-Switcher.exe --list-accounts
TcNo-Acc-Switcher.exe --list-accounts=Steam --json

--json is valid only with --list-platforms or --list-accounts.

Protocol handler

Enable it in Settings -> System -> Protocol handler.

Protocol payloads mirror CLI swap tokens:

tcno://s:76561197960287930
tcno://s:76561197960287930:3
tcno://d:123456789012345678

Use links from Win+R, browsers, scripts, or other launchers.

Platform identifiers

Platform Identifiers
Escape from Tarkov eft, bsg, tarkov
OBS Studio obs
Epic Games e, epg, epic, epicgames
GOG Galaxy g, gog, gog2
Discord d, discord
Discord Canary dc, discordcanary, canary
Discord PTB dp, discordptb, ptb
Riot Games r, riot, riotgames
Origin o, origin
EA Desktop ea, eadesktop
GeForce Now gn, geforce, geforcenow
Ubisoft u, ubi, uplay, ubisoft
Meta Horizon Link mhl, metahorizon, metalink
Oculus oc, oculus
Magic Arena mtga, magicarena
PS Remote Play psr, psrp, psremote
Albion Online ao, albion, albiononline
Roblox rb, roblox, rblx
Rockstar rs, rockstar, socialclub
Battle.net b, bnet, battlenet, blizzard
Arena Breakout: Infinite abi, arenabreakout
Delta Force dfho, deltaforce, hawkops
Jagex jagex, osrs, runescape
Steam s, steam, valve

Check Platforms.json for the current list.

Environment variables

These are read once, at startup. They exist for cases where a command-line flag is awkward or does not exist — most usefully wails3 dev, which runs the app through a task and cannot forward arguments to it.

Variable Effect
TCNO_ALLOW_STEAMGUARD_CAPTURE Lets Steam Guard windows be screenshotted and recorded. Same as --allow-steamguard-capture.
TCNO_STEAMGUARD_CONFIRMATION_DUMP Writes the full payload of each confirmation you open to {UserData}\SteamGuard\diagnostics\. No flag equivalent.

A variable counts as set when it holds anything other than an empty string, 0, or false (any case). 1 is the conventional value:

$env:TCNO_ALLOW_STEAMGUARD_CAPTURE=1; .\TcNo-Acc-Switcher.exe
set TCNO_ALLOW_STEAMGUARD_CAPTURE=1 && TcNo-Acc-Switcher.exe

Both switches are process-wide and decided before any window exists, so nothing in the app can turn them on or off later, and neither is a setting in the UI.

TCNO_ALLOW_STEAMGUARD_CAPTURE

Steam Guard windows are hidden from screen capture, which also blocks deliberate capture — so screenshots and screen recordings of the feature itself come out blank. Setting this lifts the exclusion for that run, and the log records that the protection is off. It covers the confirmations window and the main window while it is showing a code or another sensitive view.

It does not touch Settings -> Privacy -> Always hide this app from screenshots, which is a separate, user-controlled setting covering the ordinary windows.

TCNO_STEAMGUARD_CONFIRMATION_DUMP

Off unless you set it, because the payloads describe live trades: item names, counterparties and the summary Steam rendered. Each confirmation you open writes one timestamped .json file, 0600, under {UserData}\SteamGuard\diagnostics\. The confirmation's id and nonce are deliberately left out — together they are the decision keys, and anyone holding them alongside a session could accept the trade.

Set it when reporting a confirmation that renders wrongly, and read the file before attaching it anywhere.

Development and test variables are listed in Building from source.

User-data move

When the app moves user data from Settings, it may restart with:

--userdata-move-from=<old> --userdata-move-to=<new>

This is normally automatic. The flags are documented for troubleshooting.

Clone this wiki locally