> For the complete documentation index, see [llms.txt](https://docs.kouch.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kouch.dev/docs/adr/0018-steam-cloud-on-by-default.md).

# ADR 0018: Steam Cloud sync is on by default for every emulator

## Status

Accepted on 2026-09-27 (owner). It reverses the default recorded in `docs/ARCHITECTURE.md` ("`EmulatorProfile.cloud_sync: bool` (default false) is the per-profile Steam Cloud opt-in") and `docs/DESIGN.md` §10c ("opt-in … off by default, never set by an imported profile"). ADR 0007 (what syncs) and ADR 0013 (how: the API only, three-way, per Steam user) are unchanged.

## Context

* The owner, 2026-09-27: "and steam cloud sync enabled by default (tho it wont work yet)".
* It can't work yet: a release build under a non-Steam shortcut runs the Steam API as app 480, and every Steam Cloud write is guarded off until Kouch's own app id exists (`input::has_own_app_id()`, `64a1cd6`). So turning the default on changes nothing today; it decides what users get once Kouch is on Steam.
* The data that syncs is already bounded by rules that don't depend on the toggle: never `system`/`bios`, never a profile's `user_data.private` globs, never `..` or unknown folders, refused both ways (ADR 0013); `settings.cloud_cap_mb` per profile; Steam's per-file limit.

## Decision

* **`cloud_sync` defaults to true** for every emulator: new profiles, profiles added by hand, and imported `.kod` files. An import no longer forces it off (the update toggles keep their own rule: checks automatic, installs opt-in, `docs/KOD_PLATFORMS_PLAN.md`).
* **Existing installs:** a one-time migration turns it on for every profile that has it off, once (a settings marker records that it ran), because until now "off" was only ever the default: the user could turn it on but never needed to turn it off. Anyone who turns it off afterwards keeps it off.
* **The user can still turn it off per emulator** (Settings › Emulators, the import sheet), and the Storage "Move my saves to Steam Cloud" flow is unchanged.
* **Until Kouch has its own app id** the UI says so where the toggle is ("Syncs once Kouch is on Steam"), so "on" never suggests a sync is happening.

## Consequences

* Once the app id arrives, saves, states, screenshots and config for every emulator start syncing for signed-in users without a trip to Settings; the per-profile cap and Steam's quota still stop a sync cleanly with a toast.
* A profile author can't use the default to push anything extra into the cloud: what syncs is still the profile's `cloud` folders minus every refused path.
* `docs/ARCHITECTURE.md` and `docs/DESIGN.md` §10c are updated to the new default.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kouch.dev/docs/adr/0018-steam-cloud-on-by-default.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
