Actions, then sub-agents, then the agent's own tools, then the control tools its configuration
declares — one reverse map for all of them. Collisions and reserved-name clashes are hard
errors, exactly as Action/Action collisions are. A reserved name stays reserved when its tool is
turned off, so changing an agent's configuration can never make an Action's name collide.
Agent tools are not control tools: like Actions, they are kept for every native model, hybrid
included, so they are not listed in controlToolNames. Framework tools (native-only mode) ARE
control tools: a hybrid model keeps the envelope fields they replace, so the runner strips them.
Actions, then sub-agents, then the agent's own tools, then the control tools its configuration declares — one reverse map for all of them. Collisions and reserved-name clashes are hard errors, exactly as Action/Action collisions are. A reserved name stays reserved when its tool is turned off, so changing an agent's configuration can never make an Action's name collide.
Agent tools are not control tools: like Actions, they are kept for every native model, hybrid included, so they are not listed in
controlToolNames. Framework tools (native-only mode) ARE control tools: a hybrid model keeps the envelope fields they replace, so the runner strips them.