Skip to content

Decide whether J5 agents keep delegate_task alongside spawn_agent, native Subagents and propose_crew #336

Open

Description

@Jacksondr5

Question

Should J5 agents have delegate_task at all? J5 already gives agents three ways to get help: the provider's native Subagent, spawn_agent (a Peer Agent), and propose_crew (a Crew). Every extra "make an agent" tool makes it more likely an agent picks the wrong one.

History

Today delegate_task covers two narrow cases: running a saved persona as a subagent, and cross-provider help. Register entry D1 in docs/j5/product/upstream.md (#329) records it.

What to discuss (Jackson and Bryant)

  • Is "run a persona as a subagent" worth a fourth spawn tool? Alternatives:
    • a persona is only ever a Peer Agent (spawn_agent with a persona), or a Crew seat;
    • persona instructions reach native Subagents some other way.
  • Does cross-provider help need it, or is a Peer Agent enough?
  • If it goes, what happens to @persona mentions, which route to delegate_task today? See also A saved-agent mention can be silently ignored by the parent model #298.

Activity

  1. added
    jackson-directTaken by Jackson + Astra outside the fleet methodology; lanes never staff these
    on Sep 28, 2026
  2. added a commit that references this issue on Sep 28, 2026
  3. Jacksondr5 commented on Sep 28, 2026

    @Jacksondr5
    OwnerAuthor

    Jackson (2026-09-28): this is probably resolved by making the human-contact spectrum (docs/j5/product/principles.md, Lenses) a real part of the app, and working out what that really means and how it fits into the product. A Foreground agent is one the person talks to; a Background agent reaches the person only through the Inbox or its Captain. If the app knows where an agent sits on that spectrum, 'which spawn tool' may reduce to 'where on the spectrum should this helper live?', rather than four overlapping tools the agent has to choose between.

  4. Jacksondr5 commented on Oct 10, 2026

    @Jacksondr5
    OwnerAuthor

    Evidence for this discussion from the #508 live runs (2026-10-10, Claude Haiku, CLI 2.1.292). Before J5's tools were renamed, agents on Claude used Claude Code's native SendMessage in place of J5's send_message, and ten of those native sends were delivered: they landed in another J5 thread's Claude session on the same machine, outside the ledger, with nothing recorded and nothing shown in the timeline. Native ListAgents likewise lists other Claude sessions on the host, J5's and others'. After the rename (j5_send_message) there were no native calls in 20 runs, so agents no longer reach for it by mistake, but the channel still exists for an agent that chooses it. Withholding the native tools was rejected in #508 because native subagents need SendMessage for follow-ups. Whether J5 should see or constrain this channel belongs here.

  5. Jacksondr5 commented on Oct 12, 2026

    @Jacksondr5
    OwnerAuthor

    One more data point for this, from the live-testing work (#546), 2026-10-12, after the j5_ prefix landed.

    A Claude Haiku agent on an isolated test server was asked in plain language to "list the other agents you can message". It called Claude Code's native ListAgents, not j5_list_participants, and got back six real Claude sessions on the machine. It sent nothing. When the prompt named the J5 tools, it used them.

    So the prefix removed the name collision, as the 20 clean runs in #508 showed, but an open-ended prompt can still lead an agent to the native channel. No J5 change is proposed here: the 2026-10-10 direction stands (nothing native is withheld). The testing skill now tells testers to point a test agent at J5's tools and to check which tool it called.

  6. Jacksondr5 commented on Oct 12, 2026

    @Jacksondr5
    OwnerAuthor

    A second observation from the live-testing cold run (#546), 2026-10-12, one run on one model: a Claude Haiku agent was asked in plain words to "ask me through my J5 inbox ... and mark it as blocking". It tried the harness's own SendMessage (refused), then PushNotification, then TaskCreate, and reported that it had created a blocking task in the inbox. No Inbox row existed. A second thread that named j5_list_participants and j5_send_message worked first time. Details in the artifact test-reports/j5code-live-test-latest-change.md.

  7. Jacksondr5 commented on Oct 12, 2026

    @Jacksondr5
    OwnerAuthor

    Context from #519 (2026-10-12): Jackson ruled that delegate_task stays as it is for now. A check of the code confirmed it still creates a subagent of the calling thread and not a Peer Agent, so its overlap is with the provider's native subagents, which is this issue's question, and not with j5_spawn_agent. The comparison is in this comment on #519.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    jackson-directTaken by Jackson + Astra outside the fleet methodology; lanes never staff these

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions