When a task is large, DataMind Oda can hand part of it to a helper agent, called a subagent. This page covers what happens after a subagent starts: the id it keeps, the messages and stops that follow, the lists of a chat's subagents, and the notices that arrive when one settles. What subagents are and where they appear is on Subagents.
started subagent <id>; everything later is addressed to that id.started background subagent job <id> instead, and is collected as a job; see Background jobs.Diagnostic: line, and whatever the subagent produced before it ended, under Partial output before the run ended:.The headline names why the run stopped:
subagent run was cancelledsubagent run failedsubagent run hit its token limit before finishingsubagent declined the tasksubagent run ended abnormally (<reason>)Oda sends a follow-up to a direct subagent by its id. Messages travel between neighbours in the tree: down from the chat that started a subagent, or up from a subagent to its direct parent.
message delivered to agent <id> is a receipt, not an answer. It confirms that the message was accepted for the subagent; the call returns no answer from it, and a failure means the message was not delivered.
message delivery requires the exact live sender agent), the chat that started the subagent must be live (direct parent is not live; the message was not delivered), and a subagent that is being wound down refuses messages too (subagent "<id>" activation is being disposed; the message was not delivered).Model "<model>" does not support image input.). A follow-up carrying too many images is refused as a batch (Image batch exceeds the configured image-count limit.).Agent <sender-id> sent a message:. The prefix marks a relay from that subagent: the text is attributed to it, and it never carries the authority of an instruction.interrupt requested for agent <id> means the request was accepted; the stop is cooperative, so the subagent may keep running briefly.interrupting "<id>" requires the exact live ancestor agent; a subagent cannot stop itself.When Oda lists a chat's subagents, the list shows the ones that can take follow-ups.
running means the subagent is working right now. inactive means no turn is executing, whether it is loaded or will be brought back when it is messaged; it is not a verdict on the work, so it does not say the subagent finished, succeeded or failed, or that it waits for other subagents.[diagnostic: <reason>] instead of its label in the whole-tree listing: corrupt means its record cannot be read, and unavailable means it was unreadable for now and can clear on a later listing.(no subagents).When the work of a subagent that can take follow-ups ends, Oda settles it, and the chat that started it receives one settlement notice. The notice arrives in every case, even while that chat is closing.
Background subagent <id> finished and will do no further work unless you send it more.was stopped before it finished.ran out of room before it finished. (it reached its token limit)declined the task. (it refused the work, or a policy step refused it before it could start; a refused subagent is reported as declined, never as finished)failed before it finished.ended abnormally (<reason>) before it finished.Its closing message: followed by the text, or It left no closing message. when only reasoning or tool activity was left.A settled subagent is inactive, not gone. Send it a new message and Oda brings it back from what it saved, instead of starting a new run. If the record cannot be read by this version of Oda, or a part of Oda it needs is missing, the message is refused and the subagent cannot be resumed (subagent "<id>" has no supported continuation state and cannot be resumed; choose a different target). Start a new subagent for that work.
message delivered to agent <id> mean?It is a receipt, not an answer. The line confirms that the message was accepted for the subagent; Oda gets no answer from it at that moment, and a failure means the message was not delivered. A reply from the subagent, when it sends one, arrives as a separate message.
No. Messages travel between neighbours: down from the chat that started a subagent to a direct subagent, or up from a subagent to its direct parent. A deeper subagent can be stopped by an ancestor, but it cannot be messaged by one.
A follow-up that cannot be delivered is refused, not stored for later. The usual reasons: the message did not come from the subagent's exact place in the tree (message delivery requires the exact live sender agent), the chat that started the subagent is not live (direct parent is not live; the message was not delivered), or the subagent is being wound down (subagent "<id>" activation is being disposed; the message was not delivered).
inactive mean in the subagent list?No turn is executing for that subagent right now, whether it is loaded or will be brought back when messaged. It is not a verdict on the work: it does not say the subagent finished, succeeded or failed, or that it waits for other subagents. A direct subagent stays a candidate for a follow-up in every status.
The list shows only subagents that can take follow-ups. A one-shot background run cannot, so it never appears; its result is collected as a job instead. See Background jobs.
[diagnostic: <reason>] line in a listing?In the whole-tree listing, an entry that cannot be read shows a diagnostic instead of its label. corrupt means its record cannot be read; unavailable means it was unreadable for now, and a later listing can show it again.
When the work of a subagent that can take follow-ups ends, Oda settles it and sends one settlement notice to the chat that started it (or to the subagent that started it, when subagents are nested). The notice arrives in every case, even while that chat is closing.
The ending of the first sentence tells you how the work ended: was stopped before it finished., ran out of room before it finished. (it reached its token limit), declined the task. (it refused the work, or a step refused it before it could start; reported as declined, never as finished), failed before it finished., or ended abnormally (<reason>) before it finished.
It left no closing message.?The subagent ended without producing any closing text, for example when its last output held only reasoning or tool activity. There was nothing to quote, so the notice says so instead of showing an empty closing message.
Agent <sender-id> sent a message:?That prefix marks a message a subagent sent to its parent. The text is attributed to that subagent, and it never carries the authority of an instruction.
Yes, when it can take follow-ups. Send it a new message and Oda brings it back from what it saved, instead of starting a new run.
Oda resumes a subagent only while it can read the record saved for it. If the record cannot be read by this version of Oda, or a part of Oda it needs is missing, the message is refused (subagent "<id>" has no supported continuation state and cannot be resumed; choose a different target), and you start a new subagent for the work.