| name | checkout |
| description | Atomic task locking. Ensures only one agent works on a task at a time. Returns 409 Conflict if already locked. Auto-releases on agent death or timeout. Prevents double-work and wasted compute in multi-agent systems. Triggers on: "checkout", "lock task", "claim task", "reserve"
|
/checkout
Atomic task locking — one agent per task, no double-work.
Purpose
Prevent two agents from working on the same task simultaneously. When an agent selects a task, it must check it out first. The checkout is atomic: if two agents race for the same task, exactly one wins and the other gets a 409 Conflict. Locks auto-release on agent death (detected via heartbeat), explicit release, or timeout.
Usage
/checkout task-d4e5
/checkout task-d4e5 --timeout 30m
/checkout release task-d4e5
/checkout release task-d4e5 --force
/checkout list
/checkout status task-d4e5
Arguments
| Subcommand | Description |
|---|
<task-id> | Check out (lock) a task |
release <task-id> | Release a checkout |
list | Show all active checkouts |
status <task-id> | Check lock status of a specific task |
| Flag | Type | Default | Description |
|---|
--timeout | duration | 30m | Auto-release after this duration |
--force | flag | false | Force-release even if held by another agent (admin only) |
--agent | string | self | Agent identity for the checkout |
--reason | string | — | Why this task is being checked out |
Workflow
Checkout (Lock)
- Validate — Confirm task exists in task store. Confirm requesting agent is registered.
- Atomic lock — Attempt to create lock file:
.locks/{task-id}.lock. Use OS-level atomic file creation (O_CREAT | O_EXCL) to guarantee only one writer succeeds.
- Write lock metadata —
{task_id, agent_id, agent_name, locked_at, timeout, reason}.
- Respond — 200 OK with lock confirmation, or 409 Conflict with current holder info.
- Schedule auto-release — Set timer for
--timeout. On expiry, release lock and log warning.
Release
- Validate — Confirm lock exists. Confirm releasing agent is the holder (unless
--force).
- Remove lock file — Delete
.locks/{task-id}.lock.
- Log — Record release event with duration held.
- Notify — If other agents are queued for this task, notify via inbox.
Auto-release (on agent death)
- Heartbeat monitor detects agent stall/death.
- Scan locks — Find all locks held by the dead agent.
- Release all — Remove lock files. Log as auto-release with reason "agent_death".
- Reassign — Notify orchestrator that tasks are available.
Output
Successful checkout
Checkout acquired: task-d4e5
Agent: researcher (agent-a1b2)
Locked at: 2026-03-20T14:35:00Z
Timeout: 30m (auto-release at 15:05)
Conflict (409)
Checkout DENIED: task-d4e5
Held by: writer (agent-c3d4)
Locked at: 2026-03-20T14:30:00Z
Timeout: 15m (auto-release at 14:45)
Suggestion: wait or pick another task
List output
## Active Checkouts
| Task | Agent | Locked At | Timeout | Remaining |
|------|-------|-----------|---------|-----------|
| task-d4e5 | researcher | 14:35 | 30m | 22m |
| task-f6g7 | writer | 14:30 | 15m | 7m |
| task-h8i9 | analyst | 14:20 | 30m | 12m |
Dependencies
- File system with atomic file creation (POSIX O_CREAT|O_EXCL or equivalent)
/heartbeat — Detects dead agents for auto-release
- Agent registry — Validates agent identity
- Task store — Validates task existence