Concurrency
Limits per project, worker, organization, agent and provider — how they are enforced atomically and how to raise them.
| Limit | Default | Enforced |
|---|---|---|
concurrency.perProject | 1 | At claim, atomically |
concurrency.perWorker | 2 | By the worker itself |
concurrency.perOrganization | 0 (unlimited) | At claim, atomically |
concurrency.perAgent | — (by agent id) | When a task starts on a target |
concurrency.perProvider | — (by provider id) | When a task starts on a target |
Project and organization slots are reserved when a task is claimed. Agent and provider slots are taken when a task starts on a target, so a task can be claimed and prepared before it finds its preferred agent or provider full; it then uses another compatible target or goes back to the queue. Dispatch steers away from saturated targets, and a freed slot re-dispatches waiting tasks.
Raise a limit
On the project page under Advanced policy (JSON), or for the whole organization under Settings → Organization execution policy:
{ "concurrency": { "perProject": 2, "perAgent": { "claude-code": 3 } } }One active task per project by default avoids two agents editing the same working copy.