diff --git a/packages/builtin-tools/src/tools/ExecuteTool/prompt.ts b/packages/builtin-tools/src/tools/ExecuteTool/prompt.ts index 0a3e7bfa2..f4604e9e9 100644 --- a/packages/builtin-tools/src/tools/ExecuteTool/prompt.ts +++ b/packages/builtin-tools/src/tools/ExecuteTool/prompt.ts @@ -15,5 +15,12 @@ Inputs: - tool_name: The exact name of the target tool (string) - params: The parameters to pass to the target tool (object) -If the tool is not found, an error message will be returned suggesting to use SearchExtraTools to discover available tools.` +If the tool is not found, an error message will be returned suggesting to use SearchExtraTools to discover available tools. + +FAILURE HANDLING — CRITICAL: +If ExecuteExtraTool returns an error (missing parameters, validation error, permission denied, tool not found, or any other failure), you MUST: +1. Stop immediately — do NOT retry the same tool. +2. Do NOT call SearchExtraTools again for the same tool name. +3. Inform the user about the failure and suggest alternatives. +Never enter a SearchExtraTools → ExecuteExtraTool retry loop for the same tool.` } diff --git a/packages/builtin-tools/src/tools/SearchExtraToolsTool/prompt.ts b/packages/builtin-tools/src/tools/SearchExtraToolsTool/prompt.ts index 6f66c192a..298f9f2b0 100644 --- a/packages/builtin-tools/src/tools/SearchExtraToolsTool/prompt.ts +++ b/packages/builtin-tools/src/tools/SearchExtraToolsTool/prompt.ts @@ -27,6 +27,9 @@ const PROMPT_TAIL = ` Returns matching tool names. IMPORTANT: ExecuteExtraTool is always available in your tool list. After this search returns tool names, you MUST call ExecuteExtraTool with {"tool_name": "", "params": {...}} to invoke the deferred tool. This is the ONLY way to execute deferred tools — do not read source code or analyze whether the tool is callable, just use ExecuteExtraTool directly. +FAILURE RETRY POLICY: +If ExecuteExtraTool fails for a tool, do NOT search for that same tool again. Searching again will not fix the failure — it will only repeat the same error in a loop. Stop immediately and inform the user about the failure. + Query forms: - "select:CronCreate,Snip" — fetch these exact tools by name - "discover:schedule cron job" — pure discovery, returns tool info (name, description) without loading. Use when you want to understand available tools before deciding which to invoke.