A plugin hook can block a subagent from starting or change which model it uses.
An agent.spawn hook with deny and model-swap power exists, answerable only by the disabled plugin modules.
What's wrong with this entry?
Before spawning a subagent, Claude Code now runs an agent.spawn hook carrying the tool use id, prompt, subagent type, model, permission mode, and whether the spawn is background, forked, and its working directory. A deny aborts the launch and is recorded as subagent_spawn_denied_by_hook. The hook may also swap the model the subagent runs on.
Subagent spawn denied by a plugin:
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.234
Another forged control tag is escaped in subagent output
Both mention subagent
-
v2.1.234
Spawned processes get
--flag=valuewhen the value looks like a flagBoth mention subagent
-
v2.1.235
New error for delegating to a subagent without naming one
Both mention subagent