# Vercel — Making every harness durable

- Company: Vercel (vercel.com)
- Announced: 2026-10-19T13:00:00+00:00
- Category: developer-tool-release
- Coverage: not counted
- Announcement: yes
- Group: announcements
- Source: https://vercel.com/blog/making-every-harness-durable
- Record: https://forck.live/items/25461-making-every-harness-durable
- Subject: v0 / AI SDK / AI Gateway

Vercel introduced durable-harness, an open-source package that adds crash recovery to coding agent harnesses such as Pi, OpenCode, Codex and Claude Code without changing the harness itself. Harnesses keep long-lived sessions in memory and agent tasks often run for minutes or hours, so a function timeout or dropped connection in the cloud can lose a turn's work. durable-harness writes each step of a turn to a durable log in a World, the Workflow SDK's backend: it records an intent before a model or tool call and the outcome after, and a queue message hands a dead turn to a new function that reads the log and continues. Completed calls are read from the log rather than re-run, so Vercel says you are never billed twice for a finished model call's tokens, and interrupted tools marked replay: 'safe' run again while others return to the model as possibly run. Harnesses with their own session files, including Claude Code's transcript, Codex's rollout and OpenCode's event store, have every record mirrored into the log so a new function or Sandbox can rebuild them. The same agent can move between Worlds without code changes: Vercel World in production, files locally, or Postgres, MongoDB, Redis and Turso on your own servers, with two environment variables redirecting it to Postgres. Agent Runs on Vercel shows the trace of every session, with resumed turns appearing in the same trace.

## Evidence

Verbatim from https://vercel.com/blog/making-every-harness-durable:

> It writes each step of a turn to a durable log. Before a model call or tool call runs, it records an intent, and when the call finishes, it records the outcome. The turn itself is backstopped with a queue message, so if its function dies, the queue hands the turn to a new function that reads the log and continues where it left off.

---

Record: https://forck.live/items/25461-making-every-harness-durable
Catalogue: https://forck.live/llms.txt
Current issue: https://forck.live/feed.md
