Troubleshooting: Agent Studio graph and custom-tool validation
The Agent Studio canvas (see Build Agents Visually in the Agent Studio Canvas) can reject a publish or a test-run, and the custom-tool registry rejects registration or invocation, each with its own validation code. The runtime-error family (agent runtime errors) covers the codes that fire mid-turn; this page owns the validation family that fires at publish, register, or wiring time. Every failure here arrives as a structured envelope — key onerror.code,
and for GRAPH_VALIDATION_FAILED read the per-issue list in
error.details before you touch the canvas:
Graph publish validation
Custom tool registration
These codes come fromPOST /agents/custom-tools and the invoke path
(see Build custom tools for AI agents).
Sample
INVALID_EXECUTOR_URL envelope:
Tool wiring errors
These fire when a graph, registry, or agent reference points at a KB, a handoff target, or a runtime handler that cannot resolve.KB re-chunking
Decision checklist
Run this after any of the codes above:- Read
error.codeon the envelope. - If it is one of the deterministic 422s (
GRAPH_VALIDATION_FAILED,GRAPH_TOOL_NODES_NOT_SUPPORTED_IN_TEST_RUN,RESERVED_TOOL_NAME,INVALID_EXECUTOR_URL-family reject classes,INVALID_HANDOFF_TARGETS,INVALID_KNOWLEDGE_BASE_IDS) — do NOT retry; fix the payload, the graph, or the registry first. - If it is
TOOL_NAME_TAKENorTOOL_DISABLED— clear the collision or re-enable the tool, then retry. - If it is
TOOL_IMPL_NOT_REGISTERED— treat as a runtime fault; do not retry and escalate. - For
GRAPH_VALIDATION_FAILED, scanerror.detailsfor the exact node/edge and fix on the canvas; the console prints the same list inline.
What NOT to do
- Do not retry
GRAPH_VALIDATION_FAILEDin a loop. The graph is invalid; a retry re-runs the same gate. - Do not rename a custom tool to work around
TOOL_NAME_TAKEN. The name is the id the LLM sees and every attached agent trains prompts on it; renaming after the fact breaks trained prompts. Rename the duplicate target instead. - Do not point
executor_urlat an internal host with a public alias. DNS resolution runs at write time and again at dispatch, so a public-looking hostname that resolves internally still fails. - Do not escalate on
TOOL_NAME_TAKEN/TOOL_DISABLED/INVALID_HANDOFF_TARGETS/INVALID_KNOWLEDGE_BASE_IDS/ the 422 validation codes. These are deterministic tenant-owned gates. Escalate onlyTOOL_IMPL_NOT_REGISTERED(500) withrequest_id. - Do not retry the re-chunk on a legacy document. Re-upload through the canonical KB flow first; the 409 is deterministic.
When to escalate
Escalate to support only forTOOL_IMPL_NOT_REGISTERED (500) — the
request_id from meta lets support trace which registry entry the
executor resolved. Everything else on this page is a deterministic
tenant-side fix.
See also
- Build Agents Visually in the Agent Studio Canvas — the canvas that owns the graph validations.
- Build custom tools for AI agents — the registry this page’s codes come from.
- Agent runtime errors — the sibling runbook for mid-turn codes.
- Knowledge base document inspector — the re-chunk action and its version lineage.
- Error code reference — the full catalog this page maps.