CrewAI 1.15: per-run state isolation for parallel Sume jobs
CrewAI 1.15 scopes runtime state per run so concurrent crews do not mix. Use that with one Sume Idempotency-Key and job id per crew run.

If you run several CrewAI crews at once, each should own its own Sume job ids and idempotency keys, and recent CrewAI releases help by scoping runtime state per run. CrewAI's changelog shows v1.15.22 on September 16 and v1.15.23 on September 28, 2026, with runtime state scoped per run to isolate concurrent runs. Isolation is inside CrewAI. Sume's concurrency is set by your plan, so parallel crews still share one limit.
Facts to design around
| Item | Detail |
|---|---|
| CrewAI v1.15.22 | September 16, 2026 |
| CrewAI v1.15.23 | September 28, 2026 |
| Per-run runtime state | Scoped to isolate concurrent runs |
| Sume concurrency by plan | Free 1, Pro 4, Startup 8, Scale 20 |
| Sume queue capacity | max(3, 5 times concurrency) |
One key and one job id per crew run
Do not store a Sume job id in a module global. Keep it on the run's own state, and derive the Idempotency-Key from the run identity plus the task. A retry inside the same run then returns the original job. A different run gets a different key, so crews never collide.
If your tool is a hosted MCP call, Sume write and paid tools require an idempotency_key argument anyway. Optional dry_run and max_spend_usd let the agent check cost first.
Respect admission
Eight crews calling a Pro plan, which has concurrency 4, will see waits and eventually 429 queue_full when queue capacity fills. That is max(3, 5 times 4), so 20. Handle it in the tool, not in the model's reasoning.
- 429
rate_limited: sleep for retry-after, then retry with the same key. - 429
queue_full: back off longer; thewave_size_hintin thegeneration_limitssnapshot is only a hint. - 402
insufficient_credits: stop and surface it.
Waiting inside a tool
A tool call should not block a crew for minutes. Submit, return the job id, and let a later task call jobs_wait (at most 55 seconds per call). Batch job_ids takes 1 to 20 ids and supports include_results: true, which suits a crew that fanned out several jobs.
Sources
Related posts
More in Agents
- Which model runs a Sume scheduled agent, and how to choose it
A Sume schedule stores its own model beside its instructions and cap. Where to pick it, what Agent Completions accepts, and what the changelog says on defaults.
- AI Act Article 50(1) chatbot notice for an agent built on Sume
Article 50(1) asks providers to make sure people know they are talking to AI. If you front Sume Agent Completions with a chat box, the notice is yours to add.
- GitHub Actions schedule delayed at the top of the hour: what to do
GitHub says scheduled workflows can be delayed, notably at the start of every hour. Offset the cron minute and call a Sume Scheduled run with a dated key.
- GitHub Actions schedule disabled after 60 days: a Sume Scheduled fix
A public repo's scheduled workflows are disabled after 60 days without activity. How Sume Scheduled's active and inactive status differs.
Written by Sume