Skip to content

Claims & leases

Before editing, an agent claims the paths (and, for repo-work missions, the branch) it’s about to touch. ClaimPaths is the claim broker: agents lease paths before touching them, so concurrent agents can see — and, for exclusive leases, avoid — each other’s in-flight work. A claim is a time-boxed lease, not a permanent lock: every claim carries an expiry, and only unreleased, unexpired claims count as active. A lease you never release simply ages out; there’s no separate renew call — call ClaimPaths again with a fresh TTL before the old one expires, which is safe and idempotent because your own prior claims never conflict with your own new ones.

A claim can be exclusive or advisory. An exclusive claim is enforced: if an active exclusive holder overlaps the requested path, the new claim is refused and reported as a conflict, not granted — the caller backs off and picks a different ready task instead of racing the first agent’s edit. A non-exclusive (advisory) claim is always granted and reported alongside any conflicts, never blocking.

An exclusive holder that’s parked awaiting approval — e.g. waiting on client review — keeps enforcing its lease only for a grace window. Past that window, the holder is treated as advisory (non-blocking) even though its claim row is still active, so a stalled agent can’t indefinitely lock out everyone else. The moment it un-parks, enforcement resumes; nothing about the claim itself is mutated to make this happen.

This is what CLOBBER=1 on corral-agent deliberately disables, as a demo of what uncoordinated multi-agent editing looks like: watch two agents pile onto the same file with claims turned off, then compare against the coordinated run.

corral-admin status shows active claims alongside active agents and recent work — see the CLI reference.