Conversation
…eads (#3) Adds a threads toolkit (spawn_thread, message_thread, read_thread, list_child_threads) next to device, preview and pullRequests. A bridge mirrors each child thread's lifecycle into its parent's activities as the task.* rows the Agents panel already folds, and can send each finished turn back to the parent. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…elf (#3) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… a starting child (#3) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e Agents panel (#3) Replaces the Subagents shelf: child threads are filtered out of the sidebar, and their Agents panel rows link to the child thread. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Sep 25, 2026
Closed
Author
Author
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.
Throwaway spike for #3. Draft, not for merge.
Agents in a T3 thread can now start child threads on a chosen provider instance, model and effort through a new
threadsMCP toolkit, next todevice,previewandpullRequests. Each child shows in the parent's Agents panel, and clicking its row opens the child thread, where the user reads it and messages it with the normal composer. Child threads are hidden from the sidebar. This replaces the earlier Subagents shelf (commit 8638154). Findings and the recommendation are on #3.How it works
spawn_thread,message_thread,read_thread,list_child_threads): dispatches the ordinarythread.createandthread.turn.startcommands for the calling thread's project.sub.<parentThreadId>.<suffix>, so no contract, projector or migration change is needed. A production version would add a realparentThreadIdfield.task.*rows (agentKind: "agent") thatsubagentRuntime.tsalready folds.AgentsPanel.tsxandsubagentRuntime.tsare unchanged.reportBackis true (the default), each finished child turn is sent to the parent as a message, so the reply reaches the parent without polling.Diff split
New files (6, 604 lines):
apps/server/src/mcp/toolkits/threads/handlers.tsapps/server/src/mcp/toolkits/threads/tools.tsapps/server/src/mcp/toolkits/threads/subagentThreadId.tsapps/server/src/mcp/toolkits/threads/subagentThreadId.test.tsapps/web/src/components/AgentThreadLink.tsxapps/web/src/components/subagentThreads.tsEdited upstream files (3, +14 / -1):
apps/server/src/mcp/McpHttpServer.tsapps/web/src/components/Sidebar.tsxapps/web/src/components/AgentsPanel.tsxAgentThreadLinkThe earlier shelf version edited 2 upstream files, +54 / -3 (Sidebar.tsx +47 / -3), and added
sidebar/SidebarSubagentsShelf.tsx.The spike merges cleanly with
upstream/mainas of f3cb2a1 (checked withgit merge-tree).Proof
/tmp, server port 14791, web port 7056. The user's instance was not touched.tsc --noEmitpasses forapps/serverandapps/web.vp test run src/mcp/toolkits/threads/passes (2 tests). Lint on the changed files adds no new errors.gpt-6-luna), Grok (grok-build), OpenCode (nemotron-3.5-lightning-free) and a second Claude instance. It also messaged a working child and an idle child, and got each child's reply back as a message.Children hidden from the sidebar; the parent's Agents panel lists them:
After clicking a child row and sending a message with the composer, the child replied:
Earlier shelf version (superseded), with MCP-spawned and outside-process children in the Agents panel:
Children created from outside through
POST /api/orchestration/dispatchshow up the same way:Not covered: mobile, and a way back from a child thread to its parent. The child has no sidebar row, so the user returns through the parent's own row.
Model and harness: Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code