Concurrency is not a lifetime delegation budget
Use
when:
a
Claude
Code
session
can
dispatch
Agent
subagents,
especially
from
headless,
resumed,
or
long-lived
workflows.
Release
2.1.224
removed
the
200-spawn
session
cap
introduced
in
2.1.212.
A
concurrency
limit
bounds
only
simultaneously
running
children;
a
depth
limit
bounds
tree
height.
Neither
limits
cumulative
serial
delegation.
CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS=4
and
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1.
Launch
automation
with
claude
-p
--max-turns
12
--max-budget-usd
0.25
"...".
Depth
one
prevents
children
from
delegating.
Remove
any
reliance
on
the
obsolete
CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION;
current
documentation
says
total
session
spawns
are
unlimited.
For
interactive
or
subscription-backed
work,
split
tasks
into
fresh
bounded
runs
and
make
the
outer
scheduler
stop
on
its
own
run
counter,
not
session
prose.
Acceptance
check:
run
two
disposable
canaries.
First,
request
more
than
four
simultaneous
children
and
one
nested
spawn.
Pass
if
the
fifth
live
spawn
returns
Concurrent
subagent
limit
reached
and
the
child
cannot
spawn.
Second,
use
repeated
serial
delegation
with
low
spend
and
turn
caps.
Pass
if
Budget
limit
reached
stops
background
agents,
and
the
process
exits
without
another
tool
call
after
the
turn
cap.
Record
Agent
events,
total
spend,
and
exit
status;
any
post-cap
spawn
fails
rollout.
--max-budget-usd
and
that
hitting
it
stops
background
agents.
The
earlier
2.1.212
release
proves
this
reverses
a
shipped
safety
control;
issue
#49275
preserves
a
280-session,
$51.20
field
failure.
Caveat:
--max-budget-usd
and
--max-turns
are
print-mode
only,
and
current
documentation
exempts
Ultracode
sessions
from
the
concurrent
cap.
Subscription
quotas
are
not
a
deterministic
per-run
budget.
The
field
issue
predates
2.1.224
and
was
closed
as
a
duplicate,
so
it
demonstrates
risk,
not
a
regression
caused
by
removal.
A
gateway
spend
limit
or
scheduler
kill
switch
still
needs
its
own
canary.