---
title: "Durable pull request creation"
date: "2026-08-01"
---

<Warning>
**Pull request creation is now asynchronous, and run IDs are server-owned.** `POST /api/v1/runs/{id}/pull_request` now returns `202` with a `PullRequestCreation` record and a `Location` to poll. Remove `run_id` from run manifests and stop using the removed CLI run-ID override; the server always allocates the run ID.
</Warning>

## Pull request creation survives restarts

Explicit pull request creation is now stored before GitHub work begins. The request returns immediately, and you can poll its durable `pending`, `succeeded`, or `failed` state even if the server restarts.

## More

<Accordion title="API">
- New `GET /api/v1/runs/{id}/pull_request/creation` endpoint returns the latest explicit pull request request
- Run projections now include the latest `pull_request_creation` state
</Accordion>

<Accordion title="Fixes">
- Runs now fail when routing bypasses a required goal gate
- Reused child agents continue forwarding events after broadcast lag
- Artifact archives batch storage reads and tolerate files that vanish during download
- Structured-output repair errors now identify unexpected properties in a stable order
</Accordion>
