docs(delegate_task): clarify that it is synchronous and not durable (#17022)

delegate_task runs inside the parent turn and is cancelled when the parent is interrupted (new user message, /stop, /new). The child status payload (status=interrupted, exit_reason=interrupted) is already honest, but the tool schema and user-facing docs did not set the expectation, so users reasonably assumed delegated subagents would keep running in the background after interrupting the parent.

Updates:

- tools/delegate_tool.py DELEGATE_TASK_SCHEMA description adds a WHEN NOT TO USE bullet pointing at cronjob / terminal(background=True, notify_on_complete=True) for durable long-running work.

- website/docs/user-guide/features/delegation.md gains a Lifetime and Durability callout above Key Properties.

- website/docs/guides/delegation-patterns.md expands the Use something else list and the Constraints section with the same guidance.

Reported by LizLiz (@lizliz404) via Teknium.

Co-authored-by: teknium1 <teknium@users.noreply.github.com>
This commit is contained in:
Teknium 2026-04-28 06:45:15 -07:00 committed by GitHub
parent 5f84eac451
commit 69b8fa65d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 1 deletions

View file

@ -2367,7 +2367,14 @@ DELEGATE_TASK_SCHEMA = {
"WHEN NOT TO USE (use these instead):\n"
"- Mechanical multi-step work with no reasoning needed -> use execute_code\n"
"- Single tool call -> just call the tool directly\n"
"- Tasks needing user interaction -> subagents cannot use clarify\n\n"
"- Tasks needing user interaction -> subagents cannot use clarify\n"
"- Durable long-running work that must outlive the current turn -> "
"use cronjob (action='create') or terminal(background=True, "
"notify_on_complete=True) instead. delegate_task runs SYNCHRONOUSLY "
"inside the parent turn: if the parent is interrupted (user sends a "
"new message, /stop, /new) the child is cancelled with status="
"'interrupted' and its work is discarded. Children cannot continue "
"in the background.\n\n"
"IMPORTANT:\n"
"- Subagents have NO memory of your conversation. Pass all relevant "
"info (file paths, error messages, constraints) via the 'context' field.\n"