prds/oss-873-try-from-here.md
Linear: OSS-873
A developer opens a past thread in Inspector to see what the agent did. They want to try a follow-up, or retry the same conversation, without changing that stored thread.
Today they can read the thread. They cannot start a safe experiment from it on the Threads view. If they keep chatting in the app, they risk writing into the real thread. Playground can load a whole thread from its own header. The developer who is already on Threads must leave the thread, open Playground, and pick the thread again.
The developer opens a real stored thread. The thread detail header shows Try from here.
A click copies the whole conversation (messages and thread state) into a new Playground scratch session. Inspector then opens Playground. The stored thread does not change.
The scratch session uses a new local thread id. Later Playground messages do not write back to the original thread.
If Playground already has a scratch chat, this click replaces it. There is no confirm dialog. If the copy fails, the developer stays on Threads. The old scratch session stays. An error appears next to the button.
The button is hidden on example tour threads and when thread inspect cannot load.
outcome success or failure, so that we can see if people use the control.GET {runtimeUrl}/threads/{threadId}/messages must succeed.GET {runtimeUrl}/threads/{threadId}/state is best-effort. If it fails, use empty state.clone() the source agent, assign a new Playground thread id, setMessages, setState.snapshot = loadThread(threadId)
if snapshot.messagesFailed:
showErrorOnThreads(error)
return
replaceScratch(snapshot) // clone agent, new thread id, messages + state
openLeaf("playground")
thread.agentId.oss.inspector.threads_try_from_here_clicked, with outcome: "success" | "failure" plus the same coarse Threads fields (leaf_key, runtime_mode, license and usage buckets). No thread id. No message text. No runtime URL. Honor telemetryDisabled.outcome and does not include thread id, message text, or runtime URL.Use the v2 react-router example with Inspector open (showDevConsole="auto"). Runtime must expose thread inspect (messages and, if present, state).
/threads/.../messages). Click Try from here. Confirm you stay on Threads, an error is next to the button, and Playground still has the unique scratch message.alem/oss-873-new-features-add-a-new-fork-from-here-action-to-the-the.