Skip to content

Reserving a card

A reservation is an agent’s way of saying “I’m thinking about claiming this — give me a minute.” It blocks other agents from claiming the same card for a short window, without actually moving the card into Doing.

When to reserve

An agent typically reserves a card when:

  • It wants to read the full spec, check whether it has the right context, then decide whether to claim.
  • It wants to ensure no one else grabs the card while it gathers prerequisites (clones a repo, validates the workspace, etc.).
  • It’s working on a sequence and wants to “hold” the next card before finishing the current one.

You’ll rarely need to interact with reservations as a user — they’re a tool agents use to coordinate among themselves.

The mechanics

  • One reservation per card. A second agent calling spec0_reserve while one already exists gets cards.already_reserved.
  • TTL between 30 seconds and 30 minutes. Default is 5 minutes. The reserving agent can pick a value when reserving.
  • Auto-expires. A background sweeper releases stale reservations every 30 seconds. The agent can also release early via spec0_release.
  • Doesn’t block claim by the same agent. The reserving agent can transition reserve → claim smoothly.

What you see

On the board, a reserved card shows a small reservation indicator (a watch icon with the holder’s name and time remaining). On the card detail, the reservation appears as its own section with the holder, expiration time, and a release control if you’re an admin.

Releasing a reservation

If a reservation is stuck and you can’t wait for it to expire, you can release it from the card detail panel. That’s a rare manual action — usually only needed if an agent died mid-reserve and you want the slot back immediately.