# Rift CS2 Beta privacy — 1.2.12 This notice accompanies Rift CS2 Beta 1.2.12 and describes its implemented behavior. Actual release and real-device/shared-PC verification are recorded separately; preparation alone does not establish them. Published 1.2.11 and earlier packages remain unchanged. ## Product pictures, manufacturer tools and connected mice This version adds 14 official manufacturer-tool page groups and 18 curated exact model identities. Choosing an official-tool action opens its fixed HTTPS support page in your browser; no installer or firmware is run, no browser hardware permission is granted, and compatibility remains model-specific. Merely choosing a software entry makes no vendor-update request. The 37 reviewed model-image entries (28 earlier entries and nine new mouse keys) load from reviewed fixed addresses shaped as `https://kiomad.com/assets/gear/v1/-.png`. Displaying a reviewed picture can make an HTTPS image request. Its URL reveals the curated model key and therefore the depicted model; the host also receives normal IP, timing, User-Agent and connection information, which access logs may retain. The request has no cookies, authentication, anonymous installation/report ID, player/profile fields, raw Windows device name, USB/container identity or serial number. The model key comes from the compiled reviewed catalog, not an arbitrary device string. Pictures are checked against the catalog's byte count, SHA-256 and PNG dimensions before display. The bounded cache stays in process memory; images are not written to player folders, profiles or restore backups. An unavailable or rejected image leaves neutral category imagery; a new model without a reviewed picture uses that same fallback. Previews and fixture audits make no artwork network request. Audit-only local fixtures are excluded from normal shipping output, and normal builds do not embed product pictures. Picture requests are separate from optional usage sharing and reports; switching that consent off does not disable ordinary picture requests. Failed picture attempts remain in memory until the picture cache is reset. Game mode resets pictures and failed attempts while Rift is hidden, and restoring it allows a fresh request for displayed reviewed pictures. Restarting Rift also resets the attempts. Reopening a panel or refreshing hardware preserves the current attempt. This retry behavior sends the same reviewed image URL and connection information described above; it does not send a report or change usage-sharing consent. Three newly generated illustrations are shared by the six curated ATK A9 editions, the VXE R1 Pro/Pro Max pair and the original XM2 8k. They represent the family or model and do not prove edition-specific appearance or capabilities. The nine new keyboard identities have neutral category imagery. Connecting or disconnecting a mouse only updates read-only device identification and a uniquely matched software suggestion; it does not apply pointer settings or firmware. Manually changed or cleared software choices remain in the open panel until it closes. Choosing a player profile loads choices without applying or restoring Windows settings. Windows pointer speed and precision affect all mice in the current Windows account. They are changed only by an explicit pointer action or a requested routine that includes that change; new routines keep the change off. On a shared account, use End my session before the next player starts. Modern restore points record Rift's applied values: later changed speed/precision are preserved independently and become the new baseline if you explicitly reapply. Legacy restore points without applied markers keep their existing restoration behavior. This is value-based preservation, not per-device or per-player isolation. ## Existing privacy behavior Easy mode (previously One Tap) stores only the selected home view (`one-tap` or `advanced`) in `%LOCALAPPDATA%\RiftCS2\home-view.txt`. Its readiness rows reuse the existing local probes. While Easy mode is in front, the existing lightweight process/Steam-registry check updates the rows; it pauses when that view is inactive, minimized or CS2 is in front. Choosing the view applies no settings or vendor updates; the separate signed update-notice check can run after startup, and reviewed product pictures can be requested as they are displayed. The setup wizard's name, crosshair code and TeamSpeak edition use the existing player-profile fields. Anonymous usage sharing is **off by default**. If explicitly enabled in the **Updates** button's About panel under **Help improve Rift**, the app registers a random installation UUID and app version with `https://kiomad.com/api/rift/`. A deduplicated event records the first successful setup that completed supported settings/configuration for that participating installation. Subsequent successful setups reuse that event UUID to refresh the 30-day activity count without increasing the first-setup total. Finding or opening apps alone, skipped/empty routines, failed flows, UI previews and tests never qualify. There are no startup usage-sharing requests. Counts represent participating installations, not unique people or PCs, and first successful setups, not every setup run. Manual issue reports are separate from usage consent. Before **Send this report**, the full JSON is visible: a random report UUID, app version, Windows family/major/build and one fixed issue category/code. **Include basic hardware** is separately unchecked; enabling it adds only CPU and GPU model names and installed RAM in GB to that preview. No serials, PC/user/player names, email, IP fields, accounts, profile/config files, freeform notes, crash contents or raw logs are included. The report is frozen while submitting and its UUID deduplicates retries. Sending a report without usage consent creates a report-only anonymous identity; it does not count a participating installation. Rift 1.2.11 keeps an uncertain diagnostic preview only in memory until Rift closes, including across About panel reopening. An explicit retry sends the same payload and ID; changing the issue or hardware choice starts a new report, and a verified receipt starts a fresh preview with hardware unchecked. No report payload is saved or logged. If an existing anonymous identity file cannot be read or verified, it stays untouched and sharing/report actions pause; no replacement identity is registered automatically. **Recheck saved report state** only reads that local file again. **Ask for help · text feedback** opens the separate form below, retaining its existing memory draft and adding no identity file, credentials or diagnostic contents. Opening either action makes no service request, resets no identity and changes no sharing consent. Text feedback still requires its own explicit Submit action. **Send feedback** is an optional, separate text form in **Updates**. It posts only when **Submit feedback** is chosen, to `https://kiomad.com/api/rift/ideas.php`. Its six JSON fields are schema, a fresh random draft UUID, app version, chosen category, interface language and the message the user typed. No installation ID, bearer token, registration proof, diagnostics, hardware, profiles, email, attachments or cookies are added. Usage sharing can remain off. Messages must be nonempty, at most 2,000 Unicode characters and 8,000 UTF-8 bytes; the actual JSON request is bounded to 16 KiB. Leave private information out of your text. A draft stays in memory only while Rift is open. Failed or uncertain delivery retains it for an explicit retry with the same ID and payload; editing after an attempt creates a new submission. There are no automatic retries, startup submissions or forced feedback prompts. Success appears only after an exact service acknowledgement and clears the draft. Normal HTTPS connection metadata remains visible to the web host. Authorized admins can read submitted suggestions. The service keeps them for up to 90 days; an admin can delete them earlier. This requires the separately deployed feedback service to be active. This form does not add installation or successful-setup counts. The installation token and random registration proof are encrypted for the current Windows user in `%LOCALAPPDATA%\RiftCS2\optional-reports.json`; they are not exported in `.riftcs2` profiles. Registration retries require the same UUID **and** cryptographic proof, preventing duplicate counters or UUID-only credential rotation. Turning sharing off stops future usage events locally even when the service is offline. **Delete anonymous server data & turn sharing off** requests deletion of that installation's events/reports and revocation of its token; success is shown only after acknowledgement. Anonymous historical aggregates remain. The server retains only hashes of revoked credentials for up to 90 days to acknowledge safe deletion retries. Standard HTTPS requests expose normal IP/request information to the web host and its access logs; excluding IP from the report JSON cannot hide this transport information. The app has no advertising trackers and never requests account passwords or uploads player profiles or raw diagnostics. Automatic setup runs only when requested. It reads installed app paths, monitor/driver capabilities and the active Windows power plan. It applies the displayed system preset with local restore backups and opens the chosen match apps. Installation buttons offer verified downloads or official vendor pages; the slim release includes Rift's .NET runtime but no third-party installers. The RiftPeek step opens the language's fixed kiomad.com picture guide in Chrome. The player chooses their Chrome profile, enables Developer mode and uses Load unpacked themselves. Done records only the player's confirmation in memory; it does not verify extension readiness. Skip leaves the step for later. Manual installation is temporary; RiftPeek is coming to the Chrome Web Store soon. Rift does not read Chrome extension manifests, cookies, passwords, account data or login tokens, install an extension, change browser settings or change the saved player profile. Step results stay in memory; existing local error logging still applies. English is the first-launch language unless a saved choice exists. Player preferences, profiles and restore backups are stored locally. Hardware, installed-app and Windows details are read locally to provide setup and diagnostics. Portable profiles live beside the app; installed profiles and PC-specific backups use the current user's local RiftCS2 data folder. Players control exports and sharing. Uninstall retains profiles/backups for recovery. **Install from this PC** reads names, file sizes, timestamps and product/version metadata in bounded local download/installer folders when the software panel opens. An explicit **Find on other drives** searches common folders on fixed/removable drives; **Choose installer** reads one selected EXE/MSI and can use a shared folder. Ambiguous known setup files may be hashed locally to identify an exact approved package. Searches skip linked/system folders and do not recursively crawl every drive or run installers. Candidate paths stay in memory for this session and are not included in usage reports or feedback. Pressing Install rechecks the selected file and its publisher or exact approved checksum; the existing official installer and Windows prompts then apply. Searches can be canceled, and changing/closing the panel cancels its current search. Rift keeps a small local error log in `%LOCALAPPDATA%\RiftCS2\Logs` (two files of at most 256 KB) so problems can be diagnosed on the PC where they happened. Paths inside the Windows user folder are shortened to `%USERPROFILE%`. The log is never uploaded; share it only if you choose to. Finished, abandoned or failed Rift update downloads in `%LOCALAPPDATA%\RiftCS2\Updates` are deleted at the next start, so they do not accumulate. Only folders Rift created that hold its own installer, signed record, signal files and update helper are removed; a verified download still waiting for **Install** is kept. If the update handoff cannot finish, **Show downloaded installer** opens that verified file in File Explorer so it can be run by hand. Nothing is sent by either step. The copied support report leaves out the Steam account name shown on a Get ready line, and a Get ready result is cleared when the player changes. The optional usage and report requests store no cookies. For compatible Logitech mice, Rift first checks this PC's own list of listening ports (no network packet is sent) and only when G HUB is listening can it read device identity, battery percentage and charging state from the running G HUB agent at 127.0.0.1 on this PC. Only device-list and battery GET requests are made. Hardware identifiers used to match the receiver remain in memory; these readings are not exported with player profiles or uploaded. Rift does not read G HUB accounts, passwords or profile databases, and does not start G HUB automatically. The app is not entirely offline. Explicit update/download/install actions contact `https://kiomad.com/downloads/rift/catalog.json` for a signed catalog, then an approved same-origin Rift file or an exact allowlisted official vendor URL. If the catalog is unreachable, absent, rejected or has no current entry, signed vendor checks use their independently validated official sources. Unsigned gear software requires its exact compiled approved version/hash in the verified catalog; it never falls back to an unverified newer vendor release. Rejected catalog metadata never authorizes a download. Rift installers additionally require an independent offline release signature; signed vendor installers retain exact Authenticode publisher checks and unsigned gear installers retain their compiled SHA-256 pin. Downloads show progress, pause/resume and cancel, and verified files are cached locally. Installing an app update needs a separate click and opens the normal setup; starting with 1.2.8, one bounded signed catalog request after startup, while Rift is in front and CS2 is closed, can show a dismissible version notice. It sends the normal app User-Agent and connection metadata, without profiles, installation IDs or usage events. Downloads and installations never happen automatically; opening a card alone makes no update request. Choosing **What changed** opens the fixed English or Persian release page in your normal browser, which makes ordinary website connections. Full release notes are not rendered inside the software. Portable users are told to export their `.riftcs2` profile before converting to an installed copy. The future host endpoint was configured in 1.2.4, but local preparation is not proof the host has been activated. Community statistics refresh only when explicitly clicked. Opening About does not register an anonymous identity or request those counts. The separately disclosed background update check and displayed product-picture requests can continue independently. NVIDIA driver queries include GPU/Windows selections. Connection and repair tests contact DNS resolvers, the selected match endpoint and relevant websites, including FACEIT status/connectivity endpoints. These services receive normal connection information such as source IP, domains and requested resources. Windows certificate verification may contact certificate authorities. No diagnostic/profile payload is uploaded by update or connection checks. The bundled Iranify promotion and the kiomad.com maker links on the home screen and in About send nothing until clicked. A click opens kiomad.com first, which counts it (the app, the screen and the day; no cookie, no address, nothing about the player or the PC) and then forwards to iranify.ir or the website. The RiftPeek guide opens only when its button is clicked or the player-requested Automatic setup reaches its guide step; the hosted page makes ordinary website connections. Done and Skip send nothing. Other external links open only when clicked. External websites, installers and apps—including Steam, FACEIT, ExitLag, TeamSpeak and gear software—follow their own privacy practices and may require accounts or internet access. After a successful uninstall, a small completion window keeps profiles/backups and offers **Close** or **Share why (optional)**. It sends no report itself. Only Share why opens `https://kiomad.com/rift-feedback/?version=1.2.12` through the interactive Windows desktop's browser token, with no installation UUID, bearer token, Windows/hardware data or player identity in the URL. The hosted page offers fixed reasons and requires a separate submit; it uses its own short-lived CSRF/session and normal web-host connection/rate-limit information. Quiet uninstall suppresses the completion/feedback offer. Feedback requires the host to be deployed; an unavailable page does not undo the completed uninstall or reinstall Rift. ## Historical changes in 1.1.0 Everything below happens on this PC, only when the player uses the feature, and sends nothing to Rift's developer. - **Steam.** Rift reads Steam's `loginusers.vdf` for account numbers, Steam display names, automatic sign-in and last-use time — never login names or passwords — plus `libraryfolders.vdf` and CS2's `appmanifest_730.acf` (to find CS2 and a pending update). Display names are shown in the Steam card only and are never saved. When the player turns on **Put my launch options into Steam**, Rift writes CS2's launch options in that account's `localconfig.vdf` while Steam is closed, after saving the previous value in a local restore point; **Take my launch options out** and **End my session** put it back exactly. Rift also reads (never writes) the launch options of accounts on this PC to avoid deleting a config file they still run. - **Carry my CS2 setup.** Only when the player presses **Capture my CS2 setup**, Rift reads that account's CS2 settings files and keeps an allowlist of plain values (crosshair, sensitivity, viewmodel, HUD, radar, audio, brightness, fps_max) and, if chosen, key binds (which can include the player's own chat text) in the player profile and `.riftcs2` file. The Steam name, microphone device, account numbers and login names are not stored. Other cfg files on this PC are read to show checks and are never written. Rift searches CS2's installed game files for the names of two console commands; it never runs, injects into or reads the memory of CS2. - **Game mode.** Rift receives Windows' notice when the foreground window changes and compares the process ID with running processes named cs2. It opens no handle to the game, watches no input and stores nothing. - **New local files** in `%LOCALAPPDATA%\RiftCS2`: `startup.jitprofile` (the list of Rift's own startup code, no personal data), `when-cs2-starts.txt`, `refresh-backup.json` (resolution, refresh rates, PC and Windows user name — like the other restore points) and `audio-ducking-backup.json` (the previous Windows setting, PC name and Windows user ID). A refresh rate the player keeps is saved as that Windows user's display setting; the voice-call sound fix writes one per-user Windows value. Both have Restore. - **Pro tools.** The polling-rate test counts mouse reports sent to Rift's own window during the 3-second test only; no hook stays behind. The sound check reads Windows' audio devices. Practice and Workshop buttons hand CS2 or a Workshop page to the Steam client only when clicked. - **Quick Fix and PC checks.** The clock check reads only the Date and Age headers of the FACEIT requests Quick Fix already makes when the player asks for a fix. Hardware checks read graphics adapters and outputs, PCI link width, memory speeds and chassis type from the firmware table (not serial numbers), battery presence, and the names of installed services to recognise reset-on-reboot software; NVIDIA's own `nvidia-smi` may run locally as a fallback. **Copy support report** builds a text report only on click and puts it only on the clipboard, after removing Windows user, PC and domain names, player names, emails, IP addresses, Steam IDs and user folders. - **End my session and Forget me.** End my session runs Rift's own restores and deletes only Rift's restore points and Rift-written config files that are unchanged. **Forget me on this PC** deletes this player's profile only from this PC's Rift folder — never profiles on a USB drive, beside a portable Rift, or `.riftcs2` files. Rift never signs in to or out of Steam, FACEIT or TeamSpeak. - UI checks (`--ui-smoke`, `--preview`) never write the player's files. ## Historical changes in 1.2.0 - **Finding your apps.** Rift looks for Steam, FACEIT Anti-Cheat, ExitLag and TeamSpeak where installers record them and in the usual folders on every start. The slower search across all fixed drives, for one of them that is still missing, runs once; `station.json` then remembers which apps it did not find, with this PC's fixed drive letters and volume serial numbers, so later starts skip that search for a week unless the drives change. F5, **Clear saved location & search again**, Quick Fix and installs search the drives again. The FACEIT client and Logitech G HUB (only named in the support report) are looked for in their usual places only. - **Is this PC fast enough for CS2?** Only when the player presses **Measure FPS** in PC Drivers, Rift starts CS2 through Steam for one offline deathmatch with bots, with the practice link for that start only (`-condebug`, `+sv_cheats 1` and Rift's link cfg files). While that CS2 runs, Rift reads CS2's own `console.log` to see the map load and CS2's `[VProf] FPS` report, and sends CS2 one `disconnect` through the link; a `console.log` that exists only because of this start is deleted once CS2 closes. Nothing is read from the game's memory, no frame timing is recorded and no driver is installed. To say where a frame cap comes from, it also reads (never writes) that account's CS2 launch options in Steam and CS2's `autoexec.cfg`. When the panel opens and after a check, Rift reads (never writes) the power plan, the display's modes, and the signed-in (otherwise the next) Steam account's `cs2_video.txt` and `cs2_machine_convars.vcfg`; that account's number and Steam display name are shown on the cards its settings fill, on screen only. The last five results for this PC (PC name, time, average and 1% low FPS, map, seconds on the map, refresh rate, fps_max and V-Sync) are kept in `%LOCALAPPDATA%\RiftCS2\speed-check.json` and never uploaded. - **Protect my CS2 video settings.** When CS2 Config opens, Rift reads that account's `cs2_video.txt` to show it and compare it with the copy the player chose to remember. **Remember these as mine** and **Keep the new ones as mine** save that copy (the file's exact contents) in `%LOCALAPPDATA%\RiftCS2\cs2-video`, labelled with the PC name, Windows user name, the ID of the Rift player who saved it, Steam account number and the main monitor's model code (its name only when Windows reports no model code) and desktop mode; it never leaves this PC and is not part of profiles or `.riftcs2` files. The copies stay until the player presses **Forget my remembered video settings** in CS2 Config, which deletes every copy and the Undo point for that Steam account on this PC and Windows user, or **Forget me on this PC**, which deletes the copies and Undo point that player saved here. Rift writes CS2's `cs2_video.txt` only when the player presses **Restore mine**: with CS2 closed (checked again right before the file is replaced), never over a copy saved for another graphics card or CS2 settings format, and with the display mode checked against the modes Windows lists (a mode this PC cannot show is replaced by Fullscreen Windowed at the desktop size). A `cs2_video.txt` set to read-only is left as it is; Rift never clears the attribute. The file it replaced is kept in the same folder for **Undo**, which puts it back only while the file still holds Rift's copy. CS2's own `cs2_video.txt.bak` is never touched. - **Practice link.** Only for a practice or warm-up start from Rift, CS2 starts once with `-condebug`, and Rift reads the new lines of CS2's `console.log` (map loads, Rift's own commands, positions) twice a second while that CS2 runs, and more often for at most ten seconds while CS2 confirms one of Rift's commands. The log also holds the Steam ID and name; Rift keeps none of it and deletes a log that exists only because of that start once CS2 closes, or on its next start if Rift was closed first; to recognise that log, Rift's local data keeps only the cfg folder and a hash of the log's first bytes. While that practice or warm-up start is live, F8 and F9 are registered as Rift's hotkeys (no keyboard hook, no input sent to the game). Saved lineups (map, position, view angles, name, time) are stored in the player profile and `.riftcs2` file. - **Fresh TeamSpeak identity.** Only when the player presses **Use a fresh TeamSpeak identity** in the TeamSpeak card, with TeamSpeak closed, Rift moves this Windows user's TeamSpeak profile folder (`%APPDATA%\TS3Client`, a portable TeamSpeak 3's `config` folder, or `%APPDATA%\TeamSpeak\Default`), which holds TeamSpeak's identity, bookmarks and settings, into `%LOCALAPPDATA%\RiftCS2\teamspeak-profiles` (beside the profile under a `.rift-backup-…` name when that is on another drive), and writes `teamspeak3-identity.json` or `teamspeak6-identity.json` with the PC name, Windows user name, both folder paths and the time. Rift never opens the files inside, contacts no TeamSpeak server and runs no third-party tool. **Undo** and **End my session** move the folder back; a newer profile TeamSpeak made in the meantime goes to the Recycle Bin. - **End my session and Forget me.** End my session does not undo **Restore mine** for CS2 video settings (the player's own settings, in their own Steam account); that Undo stays in CS2 Config. **Forget me on this PC** also deletes the CS2 video copies and Undo point that player saved on this PC. - **Steam and Get ready.** When Steam is closed or waiting for sign-in, Get ready opens Steam and waits up to two minutes for an account to sign in; the account's Steam display name is shown in that step only and never logged. A Steam restore point saved on another PC or for another Windows user is renamed `.other-pc.json` and kept. `refresh-confirmed.json` records the display modes the player kept with the 15-second prompt (PC name, Windows user name, the monitor's interface path and the mode), so Get ready does not ask again on this PC. - **First start (historical 1.2.0 behavior).** That release started in Persian on Persian Windows. Since 1.2.2, a new install starts in English and remembers an explicitly chosen language. ## New in 1.2.2 Easy mode adds explicit Open buttons for Steam, FACEIT Anti-Cheat, TeamSpeak and ExitLag. Its FACEIT sign-in button opens the official login URL in Chrome only when pressed. Login takes place in the browser; Rift does not receive the credentials or verify the browser session. ## New in 1.2.1 - **Starting CS2.** Before any CS2 start, Rift reads whether Steam runs in this Windows session, the signed-in account number from Steam's registry entries and, to show that account's name on the CS2 card, Steam's `loginusers.vdf`; nothing is saved. With Steam closed it starts Steam without any launch arguments. The `-refresh` value comes from Windows' list of display modes and that account's `cs2_video.txt` (read only). - **Cards that follow the PC.** While Rift is on screen and not in game mode, it listens for Windows' own display, power and mouse/keyboard settings messages and reads the changed values again (display modes, the power plan and charger, pointer and shortcut settings). Only while a card that shows app state, or a button that waits for CS2 to close, is open, it reads every 2 seconds the names of running processes in this Windows session (no process is opened) and Steam's registry values for whether it runs, the signed-in account number, the game it reports and a CS2 update. These readings are compared in memory to update the open card; nothing is stored, logged or sent. - **Desktop resolution.** Only when the player presses Try in the Monitor card, Rift changes the desktop resolution and refresh rate, keeps the change only when the player confirms within 15 seconds, and saves the previous resolution and rate in the existing refresh restore point (`refresh-backup.json`) for Restore and End my session. This notice describes Rift 1.2.12; historical sections identify when earlier features were introduced. This notice does not claim that Windows or other installed apps never communicate online. Automatic setup can stop Riot Vanguard’s vgc service and vgk driver before opening FACEIT Anti-Cheat. The fixed administrator helper accepts no service names, changes no service startup settings, and reports no service information externally. Windows may require approval. End my session does not restart Vanguard; restart Windows before playing Riot games again. The per-version update-notice dismissal is saved locally in `update-notice-dismissed.txt`. It contains only the dismissed release version, is not uploaded and does not hide a later version. A notice is available only until its verified catalog expiry. A failed check does not claim the app is current.