Agent calls agent

Let one agent hand off work to another — the caller pauses, the target runs in full, and the answer comes back as a tool result.

How it works

In the Agents it can call section of the Agent tab you can attach any published agent in your workspace. Each link gets a description — that description is exactly what the calling model reads when deciding whether to invoke it.

When the caller decides to use it, a fresh session is started for the target agent. It runs to completion (or until it pauses for approval), and its final answer is returned to the caller as a tool result. The caller then continues its own run with that information.

Each linked agent appears as a tool named call_agent_name. The tool accepts a single message argument — whatever context the caller wants to pass.

What the target agent receives

The target sees a user message formatted as: “Agent ‘Cancellations’ asks: [your message]”. This provenance framing helps the target understand who is asking and why, and makes the run trace readable.

The target runs with its own tools, accounts, approval rules, and token budget — not the caller’s. Attaching an agent as a call does not share any credentials.

Publishing requirement

Only published agents appear in the attachment list. If a target is later unpublished, its tool silently drops out of the caller’s next run — the caller will not see it or try to use it.

Approval pauses

If the target agent hits a tool that requires owner approval, it pauses and waits. The caller immediately receives the message:

Agent ‘Booking’ needs the owner’s approval to continue. It will finish on its own after approval — proceed without its result.

The caller should treat this as a soft failure and continue without the target’s output. Once the owner approves, the target resumes independently.

Depth limit

A run started by another agent never gets call_* tools of its own. Depth is capped at 1 — A can call B, but B cannot call C (or A). This prevents infinite chains and deadlocks.

Rate limit

Each caller–target pair is limited to 10 calls per hour. If the limit is reached the tool returns a clear message and the caller should not retry within the same run.

Writing good descriptions

  • Be specific about what triggers the call: “Hand off when the customer mentions booking or cancelling an appointment — include their name and phone number.”
  • Tell the caller what to include in the message so the target has enough context to act.
  • Avoid vague descriptions like “Use when needed” — the model needs to know when to call and what to pass.

When to use it — and when not to

Start with a single capable agent. Add a second agent only when its specialisation genuinely helps — different tools, a different model, or a long sub-task that benefits from its own token budget and trace.

Agent calls are not a substitute for instructions. If you can write a rule in the instructions that covers the case, do that first — it is faster, cheaper, and easier to debug.

NextSkills →