Delimit Agent Dispatch
delimit_agent_dispatchRecord an engineering dispatch with replayable audit trail, assignee, constraints, and optional tracked worker launch for subagent delegation.
Instructions
Record an engineering-task dispatch with full audit trail.
When to use: as the PLANNING + AUDIT surface when the orchestrator decides to delegate parallelizable engineering work to a subagent. Per the operating model (2026-05-01 revision), actual execution is performed by the Agent tool with subagent_type=engineering; this tool records the intent, assignee, constraints, and eventual outcome so the dispatch is replayable from the ledger. With a launchable assignee ("muse", "codex", "copilot", or "auto") plus the launch parameter, the worker IS started as a tracked contained process whose session, lease, questions, and terminal state are bound to the task record; "auto" rotates runtimes in policy order instead of pinning one. When NOT to use: as an autonomous queue processor expecting auto-execution — without launch this records dispatch but does NOT run the work. Real autonomous queue execution is deferred to a future capability (LED-193 daemon) with strict sandboxing + founder-approval semantics. Also do not use for conversational tasks, sub-5-minute work, or work where no function exists yet.
Sibling contrast: delimit_agent_status reads dispatched task state; delimit_agent_handoff transfers a recorded task to a different model; delimit_agent_complete closes the task with results; delimit_agent_poll / _answer / _cancel operate a launched worker. Compared to delimit_ledger_add, this is the engineering-work surface with assignee, tools_needed, and constraints schema; ledger items are free-form.
Side effects: writes a new task record to disk via
ai.agent_dispatch.dispatch_task (a JSON record in the agent
tasks file plus an audit log entry). String list inputs
(tools_needed, constraints) are coerced from comma strings
to lists; launch is coerced from a JSON string or dict via
_coerce_dict_arg. Without launch, NO subagent is spawned by this
call — the caller is responsible for invoking the Agent tool
separately. With launch + a launchable assignee ("muse", "codex",
"copilot", "auto"), the contained worker launcher IS invoked
(sandbox on, never a sandbox-disabling flag) and the task
records the session binding. This lifecycle surface is not
license-gated in the current build.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short task title. Required. | |
| launch | No | Optional tracked-launch spec: dict or JSON string with workspace, prompt_file, max_steps, network. Assignees "muse"/"codex"/"copilot" launch; "auto" rotates in policy order (total failure is "exhausted"). | |
| context | No | Background info to seed the executor. | |
| assignee | No | Worker — "claude", "codex", "gemini", explicit-only "copilot"/"muse", "any" (default), or "auto" (policy-order rotation: muse, copilot, antigravity, codex; requires launch). Copilot/Muse name harnesses, not model families; any excludes both. Launchable: "muse", "codex", "copilot", "auto". | any |
| priority | No | One of "P0" (immediate), "P1" (default), "P2". | P1 |
| constraints | No | Comma-separated constraints (e.g. "no force push"). | |
| description | No | Longer task description. | |
| tools_needed | No | Comma-separated MCP tools the work will need. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||