Let Copilot CLI host composite loops, and run a composite's workers on its backend - #257
Merged
Conversation
Copilot's supportsSubAgents row was written against a CLI with no fan-out. 1.0.80 lists /fleet (parallel subagent execution), /tasks (subagents and shell commands) and /subagents, plus --agent on the launch line — the capability a composite leans on — so the row flips to true and the picker stops refusing the pairing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pxwzz1AZnVE3peZ8qMejLa
A composite never runs a session of its own; its workers do, and a worker created inside one with no backend named fell to NodeDraft.effectiveBackend — Claude Code. A composite labelled Copilot would have run Claude workers. Sub-graph creation now fills an unnamed backend from the composite (a findable creator still wins, a named backend wins over both), and the app's form seeds its picker with the open composite's backend the same way. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pxwzz1AZnVE3peZ8qMejLa
…ts one Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pxwzz1AZnVE3peZ8qMejLa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Copilot CLI can now host composite loops, and a composite's workers run on the composite's backend.
Why Copilot couldn't host a composite
canHost(.composite)iscapabilities.supportsSubAgents, and Copilot's row saidfalse: it was read off Copilot CLI 0.0.410 / 1.0.75, whose help listed no sub-agent fan-out, and the capability table's rule is that anything unverified stays false rather than guessed.There was a second, silent gap behind that one. A composite never runs a session of its own; its workers do. A worker created inside a composite with no backend named fell to
NodeDraft.effectiveBackend, which is Claude Code. Flipping the row alone would have produced a composite labelled Copilot whose every worker ran Claude.What changes
copilot help commandslists/fleet("enable fleet mode for parallel subagent execution"),/tasks("view and manage tasks (subagents and shell commands)") and/subagents, and--agent <agent>is on the launch line.supportsSubAgentsis nowtrue, with the same older-Copilot caveat the time-based row carries.runInSubGraphfills an unnamed backend from the composite before the child store creates the node. A creator the tree can find still wins, and an explicitly named backend wins over both, the same precedencecreateNodealready applies to loops fanning out from inside a session.CopilotBackendTestspins the pairing being allowed; newCompositeBackendTestspins inheritance and the named-backend override (its own file becauseCompositeAndGlobalGraphTestssits at the lint type-body budget).Verification
CompositeBackendTests).🤖 Generated with Claude Code
https://claude.ai/code/session_01Pxwzz1AZnVE3peZ8qMejLa