@@ -173,13 +173,12 @@ func LoadWithOverrides(ctx context.Context, path string, runtimeConfig config.Ru
173173 return nil , fmt .Errorf ("failed to get tools: %w" , err )
174174 }
175175
176+ if len (a .SubAgents ) > 0 {
177+ agentTools = append (agentTools , builtin .NewTransferTaskTool ())
178+ }
179+
176180 if len (agentTools ) > 0 {
177- if agentConfig .CodeModeTools || runtimeConfig .GlobalCodeMode {
178- codemodeTool := codemode .Wrap (agentTools )
179- opts = append (opts , agent .WithToolSets (codemodeTool ))
180- } else {
181- opts = append (opts , agent .WithToolSets (agentTools ... ))
182- }
181+ opts = append (opts , agent .WithToolSets (agentTools ... ))
183182 }
184183
185184 ag := agent .New (name , agentConfig .Instruction , opts ... )
@@ -237,10 +236,6 @@ func getModelsForAgent(ctx context.Context, cfg *latest.Config, a *latest.AgentC
237236func getToolsForAgent (ctx context.Context , a * latest.AgentConfig , parentDir string , envProvider environment.Provider , runtimeConfig config.RuntimeConfig ) ([]tools.ToolSet , error ) {
238237 var t []tools.ToolSet
239238
240- if len (a .SubAgents ) > 0 {
241- t = append (t , builtin .NewTransferTaskTool ())
242- }
243-
244239 for i := range a .Toolsets {
245240 toolset := a .Toolsets [i ]
246241
@@ -252,7 +247,16 @@ func getToolsForAgent(ctx context.Context, a *latest.AgentConfig, parentDir stri
252247 t = append (t , WithInstructions (tool , a .Instruction ))
253248 }
254249
255- return t , nil
250+ if ! a .CodeModeTools && ! runtimeConfig .GlobalCodeMode {
251+ return t , nil
252+ }
253+
254+ // Wrap all tools in a single Code Mode toolset.
255+ // This allows the agent to call multiple tools in a single response.
256+ // It also allows to combine the results of multiple tools in a single response.
257+ return []tools.ToolSet {
258+ codemode .Wrap (t ),
259+ }, nil
256260}
257261
258262func createTool (ctx context.Context , toolset latest.Toolset , a * latest.AgentConfig , parentDir string , envProvider environment.Provider , runtimeConfig config.RuntimeConfig ) (tools.ToolSet , error ) {
0 commit comments