implement local cloud handoff#9455
implement local cloud handoff#9455harryalbert wants to merge 1 commit intozb/continue-cloud-tombstonefrom
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
I'm starting a first review of this pull request. I completed the review and posted feedback on this pull request. Comment I completed the review and posted feedback on this pull request. Comment I completed the review and posted feedback on this pull request. Comment You can view the conversation on Warp. I completed the review and posted feedback on this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR adds client-side local-to-cloud handoff entry points, touched-workspace derivation, snapshot prep/upload plumbing, and spawn-request fields for forking a local conversation into a cloud agent.
Concerns
- Orphan file collection currently stages any readable absolute file outside a git repo based on conversation action paths, which can upload local files unrelated to the workspace.
- Handoff snapshot upload targets are matched by response order even though the response includes filenames, so reordered responses can corrupt the staged snapshot.
- Submitting before touched-workspace derivation completes drops the user's prompt and attachments because the input has already been cleared.
- Prep/upload failures are only logged/stored in unused handoff state, leaving the user without an inline error or retry prompt.
Verdict
Found: 1 critical, 3 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
50d01b3 to
0dd168b
Compare
0dd168b to
8582656
Compare
973da8c to
70f0742
Compare
There was a problem hiding this comment.
Overview
This PR adds local-to-cloud handoff entry points, touched-workspace derivation, snapshot prep/upload plumbing, and spawn-request fields for forking a local conversation into a cloud agent.
Concerns
- Handoff snapshot upload targets are matched to requested files by response order instead of by the returned filename, so an out-of-order server response can upload blobs under the wrong object names and break rehydration.
- Submitting before touched-workspace derivation completes, or while a submission is already starting, returns after the input layer has already cleared the prompt and attachments, silently dropping user input.
Security
- The touched-workspace scan treats every exchange working directory as touched, so handoff can upload uncommitted local repo changes even when the agent never touched that repo. Limit cwd inclusion to actual shell-command actions to keep the upload scope aligned with user expectations.
Verdict
Found: 0 critical, 3 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
There was a problem hiding this comment.
Overview
This PR adds the client-side local-to-cloud Oz handoff flow, including the handoff entry points, touched-workspace derivation, snapshot prep/upload, and spawn-request wiring for forked cloud runs.
Concerns
- Orphan-file collection can upload arbitrary local files referenced in the conversation, including files outside the workspace such as secrets under the home directory.
- Handoff snapshot upload targets are matched by response order instead of the response filename, which can swap or skip uploaded blobs if the server returns URLs in a different order.
- Submitting before touched-workspace derivation completes clears the input and then no-ops, dropping the user prompt without starting a run.
- Fatal prep/upload failures only update an internal state that is not rendered by this PR, so users get no visible error and the cleared prompt is not restored.
Verdict
Found: 1 critical, 3 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
I don't need oz to approve my PR
There was a problem hiding this comment.
Overview
This PR adds client-side local-to-cloud handoff entry points, touched-workspace derivation, handoff snapshot upload prep, and spawn request plumbing for forking a local conversation into a cloud run.
Concerns
- Handoff prep failures restore only the prompt even though pending attachments were already cleared from the input, so retrying loses user-selected attachments.
- The touched-path scan walks action messages oldest-to-newest within the newest exchange, so a long exchange can exhaust the 500-action cap before reaching its latest edits.
- The submit guard can silently no-op while touched-workspace derivation is still running; the user sees an enabled editor/send path but no feedback.
Security
- The handoff snapshot path logs the server conversation token for correlation; prefer a redacted or hashed correlation value because this token is also used in conversation/debug links.
Verdict
Found: 0 critical, 3 important, 1 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
70f0742 to
275dd8b
Compare
48ed3c0 to
9311573
Compare
9311573 to
eea298a
Compare
275dd8b to
a44fdd6
Compare
a44fdd6 to
cbef010
Compare
eea298a to
3e9b09c
Compare

Description
This PR implements local -> cloud handoff flow in the client. This includes a snapshotting flow (similar to the cloud -> cloud snapshotting), adding a cloud mode entrypoint for handing off a local conversation, and then actual handing off the conversation succesfully.
Don't over-index on the UI too much — in a follow-up PR I'll add the conversation into the cloud mode pane and also re-use the full cloud mode setup v2 UI.
The associated server PR for this client PR is here: https://github.com/warpdotdev/warp-server/pull/10777
Testing
demo: https://www.loom.com/share/a6caa2c974e34b49b2b038a8019c062c
Agent Mode