Runway Agent long sessions vs Sume previous_run_id continuation

Runway says very long Agent sessions may degrade; start fresh per project. Sume continues a Format run with previous_run_id; Agent Completions cannot.

5 min readSume
All posts

Runway's Agent page says very long sessions may see degraded performance and recommends starting a new session for each project. Sume's way to continue work is previous_run_id on a Format run: the new run picks up the earlier run's thread, so you can revise without restating everything. Agent Completions cannot continue a thread and rejects assistant turns, so continuation there means a fresh request.

Continuing, side by side

Continuation (read 2026-10-04)
QuestionRunway AgentSume
Advice on long workStart a new session per project; long sessions may degradeStart a new run for each revision, linking it with previous_run_id
Continue a thread by APINot described on the page I readFormat run: previous_run_id; Agent Completions: no continuation
Prior assistant turns in a requestNot described on the page I readRejected on /v1/agent/completions; messages are system or user only
Spend on a continued runCredits per message by brain modelUsage is per run; the new run has its own cap

What a Format continuation requires

The earlier run must be terminal and belong to the same Format. The API refuses with a distinct error when the run is not found, is from another Format, is not yet terminal, or is not resumable, so branch on the error code, not the HTTP status alone. A continued run needs a fresh Idempotency-Key, its own generation_spend_cap_usd, and an instruction that says only what changes.

import json, os, urllib.request, uuid

def revise(handle: str, slug: str, prev: str, change: str) -> dict:
    body = {"instruction": change, "previous_run_id": prev,
            "generation_spend_cap_usd": 20}
    req = urllib.request.Request(
        f"https://api.sume.com/v1/formats/{handle}/{slug}/runs",
        data=json.dumps(body).encode(), method="POST",
        headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
                 "Content-Type": "application/json",
                 "Idempotency-Key": str(uuid.uuid4())})
    with urllib.request.urlopen(req) as resp:
        return json.load(resp)

Habit that carries over

Whichever tool you use, treat a finished cut as a checkpoint: name what changes, keep the instruction short, and begin a new session or run when the scope moves to a different project.

A revision rule of thumb

Continue with previous_run_id while the change is a revision of the same piece, such as a new hook or a different voice. Start from a clean run when the brief itself changes, which mirrors Runway's advice to begin a new session for a new project.

Sources

Related posts

More in Comparisons

All Comparisons posts

Written by Sume