1. A method for storing and updating data, the method comprising: under control of a Program Execution Service (PES) that includes a number of data centers, each data center including one or more physical computing systems configurable to execute one or more virtual desktop instances, each virtual desktop instance associated with a computing environment that includes an operating system configurable to execute one or more applications, each virtual desktop instance accessible by a computing device of a user of the PES via a network: hosting a file at the PES, the file created by accessing an application at a virtual desktop instance provided by the PES, the file comprising user data generated based at least in part on user interaction with the application; forming a bi-directional connection between the PES and a first computing device of a user, the first computing device separate from the PES; receiving from the first computing device a request to access the file from the PES; accessing file metadata, the file metadata indicating whether the file is to be synchronized with one or more computing devices; determining, based at least in part on the file metadata, whether the file is to be synchronized with the first computing device; and in response to determining that the file is to be synchronized with the first computing device, providing the first computing device with a copy of the file and synchronizing the copy of the file with the file stored at the PES to maintain a synchronized file using the bi-directional connection, wherein the synchronized file is stored locally on the first computing device and is accessible without the bi-directional connection between the PES and the first computing device and wherein the file at the PES is updated to reflect modifications to the synchronized file upon reestablishment of the bi-directional connection.