When the agent picks the wrong sub-agent
Misrouting is usually ambiguous phrasing, not a broken agent. Word the first sentence so only one of the six domains can claim the job.
When the agent generates one 8-second clip instead of a 30-second narrated ad, the tools are fine. The orchestrator sent the turn to generation because you said "make a video," and generation owns single short clips. Versely routes 139 tools through six domain sub-agents. Independent jobs can run in the same turn, but an ambiguous single ask still lands in one domain. Ambiguous verbs, missing durations, and outcome-style asks that never name a domain are how that pick goes next door.
The fix is a rewrite of the first sentence so only one specialist can claim it. Re-running the original sentence is how people convince themselves the agent is flaky.
The collisions the router actually makes
These follow the orchestrator's own rules, not a guess at tool names.
"Make a video" / "make me an ad." A single clip, roughly 15 seconds or under, with no recurring subject, goes to generation (generate a video from text). A product ad, a 30-second explainer with voiceover, a series that must keep the same face or bottle, or anything you want to rerun is workflow (save and reuse a video workflow). The workflow specialist is the default for those outcome asks, including ones that never say "workflow." If you do not mention duration, narration, or a recurring subject, you will often get one short generated clip and think the agent ignored the brief.
Longer than one clip, no voice, no hero to lock. A 40-second cinematic montage or an explicit "movie" with per-scene model variety is video_studio's movie path (create a multi-scene AI movie). Sending that to workflow gives you a narrated pipeline you did not ask for. Sending it to generation gives you one clip.
"Edit this" / "fix this video." If you already have files: stitch, trim, attach, caption, EDL render belong in video_studio (build a video from clips, music, and captions). If the visual editor is open, change-the-open-timeline belongs in web_editor, because only that specialist can put a result on the timeline you are looking at. If you attach a still, generation will image-edit it. "Edit this" is four domains. Name the object: "this still," "these four clip URLs," "the open timeline."
"Make a video from these photos." Image-to-video on one still is generation. A carousel is slideshow (turn photos into a slideshow). A concat of stills held for N seconds each is video_studio (compose_video_with_overlay). If you wanted motion on one product shot, say "animate this still." If you wanted slides, say "slideshow." If you wanted one video of stills, say "stitch these images, 2 seconds each, no slideshow project."
"Add captions." Burned-in speech captions on a finished file are video_studio. Overlay titles on slides are slideshow. The caption field on a scheduled post is social. "Caption this" needs an object: "transcribe the speech on this video and burn subtitles" versus "write the Instagram caption" versus "put this title on slide 3."
"Add music." Generating a new track is generation. Attaching a track you already have, or scoring a clip you already have, is video_studio. If you already like a file, say "attach" or "mix." If you do not, say "generate a track, then attach it to this video URL."
"Post this every weekday." Scheduling a finished file is social (post or schedule). Regenerating fresh scenes on a clock is workflow (run a recurring video series). The first reuses last week's MP4. The second is supposed to make a new one. "Post this every weekday" without "new footage each run" is how you accidentally schedule the same file.
Rewrite the first sentence, not the whole brief
The routing rubric keys off duration, whether a subject has to persist, and whether you already have files. Put those in the opening. If they are missing, generation will often take a "make a video" ask as one short clip.
Pattern:
- Name the duration or the shape. "6s clip," "30-second explainer," "8 slides," "one-off movie."
- Name whether a subject recurs. "same bottle in every scene" versus "no recurring character."
- Name the object you already have, if any. "these four HTTPS clips," "this finished export," "the open timeline."
- Name the thing you do not want when the collision is common. "Do not generate a new clip." "Do not make a slideshow." "Do not post yet." "Do not save a reusable workflow."
Weak:
Make a video for our new bottle, something we can post every week.
Better:
Build a reusable 30-second product workflow. Same bottle in every scene, voiceover from this script, 9:16. I will schedule weekly reruns. Do not generate a single short clip and do not post yet.
Weak:
Edit this, add some music, maybe captions, it's for TikTok.
Better:
Stitch these two HTTPS clips on the server, 9:16, mix this music under the original audio, burn speech captions. Preview at 480p (free, short per-user cooldown). Do not generate new footage and do not post.
Weak:
Add captions to this.
Better, three ways:
Transcribe the speech on this video and burn subtitles in the glass style. This is not a slideshow.
Put the title "Week 12" on slide 4 of my current slideshow. Do not caption a video.
Write an Instagram caption for this finished video and schedule the post for 6pm. Do not burn text into the pixels.
Weak:
Make a 40-second cinematic piece.
Better, if you mean visual-only:
One-off visual movie, about 40 seconds, no narration, no recurring character, vary the model per scene.
Better, if you mean a branded explainer:
40-second narrated explainer, same presenter throughout, save as a workflow I can rerun.
How to recover mid-thread without starting over
You do not need a new conversation. You need a correction the orchestrator can paste into a new meta-tool call, including any id or URL.
- If it generated one short clip when you wanted a 30-second ad: "Stop. That was a single-clip generation. Build a 30-second workflow with voiceover and this product photo locked across scenes. Do not shorten the duration."
- If it opened a slideshow when you wanted a stitch: "No slideshow project. Concatenate these images in order, 2 seconds each, into one video."
- If it posted when you wanted a draft: "Cancel if anything was scheduled. I wanted a server-side timeline preview, not a publish."
- If it assembled files when the visual editor is open and you wanted the on-screen project changed: "Work on the open timeline. Do not render a new standalone file."
- If it started a movie when you wanted a reusable narrated series: "Not a one-off movie. Save a workflow I can schedule, with voiceover."
Then teach the preference if you always mean the same thing: "when I say 'caption this,' I mean burn subtitles on the video, never a social caption." Memories stick across threads; a one-off correction does not.
Library lookup is a different misfire that looks like routing. "Use the beach clip" may generate a new beach if the agent never searched. Say "find the beach clip in my library, then attach it."
A wrong-domain generation still spends credits. Editor previews on edit_video are the unpaid exception, and they carry a short per-user cooldown. If the wrong specialist was generation, you already paid. Correct the domain before you retry.
A short test you can run on your own prompts
Read the first sentence. Count how many of the six domains could honestly claim it.
- 1: send it.
- 2 or more: add duration, whether a subject recurs, the object you already have, and one negative.
- 0: you used a metaphor ("make this pop," "clean this up"). Replace it with a domain verb.
Cheat card:
| Domain | First-sentence tests |
|---|---|
| generation | One new asset, ~15s or under, no recurring subject, no "every week" |
| slideshow | The words slideshow, carousel, or slides |
| social | Post/schedule this file, analytics, connect an account |
| workflow | 30s+, voiceover, same product/face across scenes, rerun, template, full script |
| video_studio | Files I already have, stitch/caption/attach, or a one-off visual movie |
| web_editor | Only if the visual editor is open: change this timeline |
If the first sentence passes one row, send it. If it passes two, it will not save you.
FAQ
How do I tell a wrong-domain turn from a wrong-model turn?
Wrong domain: it ran a different kind of job (one short clip instead of a 30-second workflow, a slideshow instead of a stitch, a post instead of an assemble). Wrong model: it generated the right kind of clip with the wrong look or family. Fix domain first. Model pinning only helps after you are inside generation or a per-scene movie plan.
Will saying "use the editor" select web_editor?
Only when that editor is actually open. If the meta-tool is absent, "editor" will not summon it, and the orchestrator is instructed not to invent UI walkthroughs. For a server-side assembly of URLs you have, say "stitch these clips" or "edit_video preview" so the turn goes to video_studio.
Can I name the sub-agent in the prompt?
You can, and it is a clean reset on a confused thread: "Send this to the workflow agent, not generation." Most of the time, duration plus recurring-subject plus object is enough.
I corrected it and it did the same thing again. Now what?
The original media in context is still pulling it. Detach the wrong object: "ignore the slideshow id, work only on this video URL." Start the next message with a negative: "Do not generate a new clip." If you always hit the same collision, store it as a lasting preference rather than fighting it every turn.
Misrouting is a phrasing bug with a mechanical fix. Make the first sentence claimable by one specialist.