Deep research
Deep research is not a separate mode of the chat. It is an AI tool: the assistant calls it like any other tool, and what comes back is a written, sourced report it answers from. A single call plans the question into steps, searches and reads across them over many model calls, and takes minutes rather than seconds.
Every workspace is seeded with one researcher, Workspace Deep Research, which researches the workspace
itself — searching with search and reading what
it finds with consult. To research something
else, write your own: see
Writing a custom deep researcher.
What a run does
The loop belongs to the workspace; a researcher only says how each phase should be prompted, which tools the gather phase may call, and how much a run may spend. Only the gather phase has tools — the provider drives that tool loop itself, so what comes back is the whole exchange, which is what the findings phase reads.
A step grows while it still has room: the "what next" phase may add up to 2 directions per round, and a step tops out at 8 directions, so one step cannot consume a whole run's budget and leave the rest of the plan unresearched.
Each phase is an editable prompt
The six phases are ordinary prompt templates, listed under Settings → AI → Prompt Templates:
| Template | Phase | Placeholders |
|---|---|---|
| Deep Research · Plan | Turns the question into steps and starting directions | ${QUESTION}, ${CONTEXT} |
| Deep Research · Queries | Turns one direction into search queries | ${QUESTION}, ${STEP}, ${GOAL}, ${FINDINGS}, ${COUNT} |
| Deep Research · Search | Drives the gather phase — the one that calls tools | ${QUESTION}, ${GOAL}, ${QUERIES} |
| Deep Research · Findings | Distils what was gathered into findings with sources | ${QUESTION}, ${GOAL}, ${RESULTS} |
| Deep Research · Next Directions | Decides what is still worth exploring in this step | ${QUESTION}, ${STEP}, ${FINDINGS}, ${EXPLORED}, ${COUNT} |
| Deep Research · Report | Writes the markdown report | ${QUESTION}, ${CONTEXT}, ${PLAN}, ${FINDINGS} |
They are seeded create-if-missing, so edits survive restarts and upgrades. Editing one changes every researcher that points at it; a researcher that wants different behaviour for one phase points at a copy of its own.
The templates also get the substitutions every prompt template gets (${TODAY}, ${LANGUAGE}, …).
What the user sees
The whole run is drawn as one plan card inline in the reply — the steps, their directions, and which one is being worked on right now, updating as the run progresses. Its heading is a short title the calling model supplies alongside the question ("File type distribution", "2024 pricing changes"), and its footer carries the number of steps completed and the number of tool calls the run has made so far.
The searches the run makes are deliberately not also listed as tool chips over the plan they are already steps of. The exception is a call that failed: the card is live-only, so a failure keeps its chip for the user to open.
While a research is in flight the conversation takes no further messages — posting or queueing one is refused — because the run is the turn. Cancelling the chat cancels the research: a queued run is dropped before it starts, an executing one stops at its next checkpoint and gives its slot back.
Nothing is persisted
A run has no graph schema. It lives in memory for as long as the tool call does, is reported to the chat as progress, and is gone when the turn ends. What outlives it is the report, which is already part of the reply.
The shared queue
A run costs many model calls, so runs are admitted by one shared, workspace-wide queue rather than started on demand. Once the queue itself is full, further calls are refused with an explanation the assistant can relay ("try again in a few minutes") rather than queued indefinitely.
Settings → AI → Deep Research lists the workspace's researchers, what is running right now, and the limits:
| Limit | Default | Ceiling | Meaning |
|---|---|---|---|
| Concurrent runs | 2 | 32 | Runs executing at once, workspace-wide |
| Queued runs | 16 | 512 | Runs allowed to wait for a slot before calls are refused |
| Concurrent runs per user | 1 | 32 | Runs one user may have executing at once |
| Max iterations | 12 | 200 | Directions a run may explore in total |
| Max duration | 600 s | 7200 s | Wall clock for a whole run |
The last two are ceilings, not settings for a run: a researcher asks for its own budget and the workspace caps it, so a tool an admin wrote can never spend more of the shared queue than the workspace allows. A run that reaches either limit stops researching and writes its report from what it has.
An admin can also stop a run in a conversation that is not theirs, from the same page.
Access
The gather phase calls the researcher's tools as the user who asked. Every tool is checked against that user's access before the run starts, and a run whose tools are all inaccessible to them fails with an explanation rather than researching with fewer tools. A researcher is configuration, not an escalation path: it can never read what its caller could not.
Related
- Writing a custom deep researcher
- The search tool and the consult tool — what the seeded researcher gathers with.
- Sub-agent workflows — the other way to spend several model calls on one request, when the shape of the work is known in advance.