Subagents can nest.
task → task succeeded. CLI release notes document a default depth of 4; that is not a measured limit for every session.
A session holds the conversation and execution state. Its agent reasons, calls tools, and responds.
Session = ongoing conversation. Agent = the worker operating within it.
The main agent passes a bounded task to another context, then uses its result to continue the conversation.
Investigate a module. Run a test. Review a change. Keep the main conversation focused.
It has its own history, state, and agent. You can open it, steer it, and return to it later.
A separate workstream needing its own conversation, lifecycle, or code workspace.
The app/host routes a message to the target session. Its agent processes that input and can report back.
task / read_agent / write_agent for workers.create_session / send_session_message for full sessions.
Verified behavior, documented defaults, and limitations are different kinds of evidence.
task → task succeeded. CLI release notes document a default depth of 4; that is not a measured limit for every session.
A child chat started a task and created a grandchild chat. Full session hierarchy and task nesting are separate mechanisms.
Creation capabilities vary by session type and policy. Ordinary-chat nesting tests are not a guarantee for every Project child.
Messaging or JSON-RPC alone does not establish standard A2A protocol compliance.
Subagent: give it a task. Child session: give it a workstream.