-
Notifications
You must be signed in to change notification settings - Fork 0
Security
- Your accounts and settings stay on your computer.
- accshift never asks for or stores your passwords.
- Sensitive bits (Steam Web API key, Roblox login cookie, session snapshots and optional CS2 bridge token) are encrypted using operating-system protection. Only your user account on this PC can decrypt them.
- Outbound traffic is limited to launcher operations, optional account lookups and health checks, the optional CS2 bridge, Windows update checks, and usage counters that carry nothing personal and can be switched off entirely.
The rest of this page is reference detail: paths, exact backends, and what the threat model is.
| Data | Path |
|---|---|
| Portable config | %APPDATA%\com.accshift.desktop\state\ |
| Machine-local config | %LOCALAPPDATA%\com.accshift.desktop\state\ |
| Logs | %APPDATA%\com.accshift.desktop\logs\ |
| User settings | %APPDATA%\com.accshift.desktop\user\ |
| Custom themes | %APPDATA%\com.accshift.desktop\themes\ |
| Platform snapshots | %LOCALAPPDATA%\com.accshift.desktop\platforms\ |
| Roblox accounts | %LOCALAPPDATA%\com.accshift.desktop\platforms\roblox\accounts.json |
| Migration backups | %LOCALAPPDATA%\com.accshift.desktop\backups\pre-migration\ |
| Data | Path |
|---|---|
| Runtime config | ~/.local/share/com.accshift.desktop/state/ |
| Logs | ~/.config/com.accshift.desktop/logs/ |
| User settings | ~/.config/com.accshift.desktop/user/ |
| Custom themes | ~/.config/com.accshift.desktop/themes/ |
| Platform snapshots | ~/.local/share/com.accshift.desktop/platforms/ |
| Migration backups | ~/.local/share/com.accshift.desktop/backups/pre-migration/ |
Honours $XDG_CONFIG_HOME and $XDG_DATA_HOME when set.
| Data | Path |
|---|---|
| Config, logs, settings and snapshots | ~/Library/Application Support/com.accshift.desktop/ |
| Cached profile data | ~/Library/Caches/com.accshift.desktop/platforms/ |
The Application Support root uses the same subfolders as the other platforms:
state/, logs/, user/, themes/, platforms/ and
backups/pre-migration/.
| OS | Backend | What it protects |
|---|---|---|
| Windows | DPAPI (user-scoped) | API tokens, Roblox cookies and encrypted platform snapshot files |
| Linux | Secret Service via the keyring crate (GNOME Keyring, KWallet, or any compatible daemon) |
Steam API key and other configured secrets, where applicable |
| macOS | Keychain via the keyring crate |
Steam API key and other configured secrets, where applicable |
Threat model: secrets are bound to your user session. Copying the config file to another machine does not yield decryptable secrets, because the OS key store will not surface them to a different user.
Service id used by the keyring backends: com.accshift.desktop. Entries appear grouped in keyring UIs.
Riot Games, Ubisoft Connect, Epic Games, GOG Galaxy, Jagex Launcher and Discord session snapshots are encrypted at rest. accshift decrypts them only while staging or restoring the selected local session. Battle.net does not use this snapshot mechanism.
Snapshots captured before encryption shipped carry no ACCS header and were
stored as-is. Re-capturing an account encrypts it, but that only happens when
you switch away from it, so an account left untouched since the upgrade kept
its session material in the clear.
Every launch now sweeps the snapshot store on a background thread and rewrites any headerless file encrypted. Files that already carry the header are skipped, so the pass is idempotent and needs no migration flag. Each rewrite stages a sibling temporary file and renames it into place; a file that cannot be encrypted is left exactly as it was rather than deleted. Reparse points are skipped, so a symlink planted in the store cannot steer the pass outside it.
The optional CS2 bridge Bearer token is encrypted with the same OS-backed secret storage. The bridge URL itself is stored in the app config, so a secret embedded in that URL is not vault-protected; prefer the token field when the server supports it.
Optional 4-digit PIN. When enabled with an inactivity blur delay, the window blurs after the configured timeout. Failed attempts add a short delay before the next try.
Configure in Settings > Privacy: enable the PIN, set the 4 digits, set the inactivity timeout in seconds (0 disables auto-blur but keeps the PIN gate).
When the on-disk layout changes between versions, accshift migrates data on startup. The previous file is copied into .../backups/pre-migration/<timestamp>/ before being moved. You can roll back by restoring from there.
Mutating platform operations (switch, forget, capture) take an exclusive file lock. The GUI and CLI share the same lock, so they cannot collide. The lock has a 2-second timeout; if it is contended, the second caller fails fast rather than queueing.
Network operations include:
- Steam Web API (when you set an API key for ban or profile lookups).
- Roblox login (
.ROBLOSECURITYexchanged for an auth ticket). - Riot, Battle.net, Epic, Ubisoft Connect, GOG Galaxy, Jagex Launcher, Discord: only the operations you start (launching the official client, etc.).
- Roblox session health check (a lightweight authenticated ping to
users.roblox.comto flag expired sessions). - A user-configured CS2 stats bridge, when enabled. It receives SteamID64 values and returns CS2 stats; see CS2 Stats Bridge.
- The signed Windows auto-updater (see Updates).
- Usage counters, unless you turn them off in Settings > Privacy. The anonymous tier is on after the first-launch screen; the enhanced tier only if you accepted it. See Anonymous analytics.
- One identifier-free choice aggregate after you answer the first-launch screen, whichever answer you pick.
Captured session files stay on disk. accshift does not send account credentials to its telemetry service or to a CS2 bridge. Authentication operations with an official platform still send the required cookie or ticket to that platform (for example, Roblox Quick Login).