feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(server): add Codex thread start MCP tool - #3107

Closed
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp
Closed

feat(server): add Codex thread start MCP tool#3107
D3OXY wants to merge 5 commits into
pingdotgg:mainfrom
D3OXY:feature/codex-thread-spawn-mcp

Conversation

@D3OXY

@D3OXYD3OXY commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a provider-scoped MCP tool, t3_thread_start, that lets Codex start another T3 Code thread only when the user explicitly asks to start, spawn, or create another thread/agent.

This keeps the tool available for intentional multi-thread workflows without encouraging autonomous delegation or background parallel work.

What changed

  • Registers a new thread MCP toolkit with t3_thread_start.
  • Adds a thread-management MCP capability and grants it to provider-scoped MCP sessions.
  • Supports three start modes:
    • new_worktree: creates a temporary branch/worktree from the default branch by default.
    • existing_worktree: starts a thread in a supplied worktree path.
    • current_checkout: starts a thread on the current checkout and returns warning metadata.
  • Inherits model/runtime/interaction settings from the source thread unless the tool call overrides them.
  • Updates Codex developer instructions so this tool is used only after explicit user intent, not for autonomous delegation.

Implementation notes

  • Extracts bootstrap turn-start handling from the WebSocket route into BootstrapTurnStartDispatcher.
  • The shared dispatcher owns thread creation, optional worktree preparation, setup-script launch, cleanup on bootstrap failure, and VCS status refresh.
  • WebSocket dispatch and MCP tool dispatch now share the same bootstrap path instead of duplicating orchestration/worktree behavior.
  • MCP route registration stays lightweight; runtime-only services are registered for the server lifetime so tool registration does not leak git/projection/orchestration dependencies into HTTP route construction.

Validation

  • vp check
  • vp run typecheck

Risk

Moderate. This touches thread-start orchestration and WebSocket bootstrap routing, but the behavior is centralized behind the same command shape and covered with new thread-tool tests plus existing server type coverage.

Note

Add t3_thread_start MCP tool for starting Codex child threads

  • Adds a new t3_thread_start MCP tool defined in tools.ts supporting new_worktree, existing_worktree, and current_checkout modes with structured input/output schemas.
  • Implements handlers.ts that resolves branches/worktrees, gates on the new thread-management capability, and enqueues a thread.turn.start command via ServerRuntimeStartup.
  • Extracts WebSocket bootstrap logic from ws.ts into a new BootstrapTurnStartDispatcher service in BootstrapTurnStartDispatcher.ts, which handles worktree creation, setup scripts, and VCS status refresh.
  • Newly issued MCP sessions now include thread-management alongside preview in their capabilities set.
  • Adds T3_CODE_THREAD_TOOL_INSTRUCTIONS to Codex developer instruction strings to guide LLM usage of the new tool.

Macroscope summarized 0c5c105.


Note

Medium Risk
Touches thread creation, git worktrees, and orchestration on a shared bootstrap path used by WebSocket and MCP; behavior is covered by new MCP thread tests but mistakes could affect existing thread-start flows.

Overview
Adds t3_thread_start on the T3 Code MCP server so Codex can spawn child threads when the user explicitly asks. Issued provider MCP tokens now include thread-management alongside preview. The tool builds a bootstrap thread.turn.start command (default new_worktree, or existing_worktree / current_checkout), inherits settings from the invoking thread unless overridden, queues it through server startup, and returns launch metadata without waiting for the child turn.

Bootstrap turn-start logic is extracted from ws.ts into BootstrapTurnStartDispatcher (thread create, optional worktree prep, setup script, failure cleanup, VCS refresh). WebSocket bootstrap dispatch and the MCP handler both call dispatchActive.

Codex developer instructions now describe when t3_thread_start is allowed (explicit user intent, not autonomous delegation). Server startup registers the thread MCP toolkit and active bootstrap/thread-start runtimes via ServerApplicationRegistrationsLive.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitaiBot commented Jun 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1633dfd5-1922-41e8-b230-7e4ad7a78498

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 16, 2026
@macroscopeapp

macroscopeappBot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new MCP tool that allows spawning new threads/agents, representing significant new user-facing functionality and orchestration capabilities that warrant human review.

You can customize Macroscope's approvability policy. Learn more.

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch 3 times, most recently from dd38768 to 7b14758CompareJune 18, 2026 21:55
@D3OXYD3OXY closed this Jun 19, 2026
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

#2829

@juliusmarminge

Copy link
Copy Markdown
Member

we can get this in before #2829 :)

@juliusmarminge
juliusmarmingeforce-pushed the feature/codex-thread-spawn-mcp branch from 7b14758 to 3ae43a2CompareJune 19, 2026 19:26
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 19, 2026
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 3ae43a2 to 31d431eCompareJune 22, 2026 08:08
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@cursor review

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 094c88c9546f759de560c041b4bb3f323195511e. Configure here.

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Effect Service Conventions: 2 findings on the newly added thread-spawn services. See inline comments.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/orchestration/Services/BootstrapTurnStartDispatcher.ts Outdated
@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from d3645e2 to 0543f39CompareJune 22, 2026 09:25
@D3OXY

Copy link
Copy Markdown
ContributorAuthor

@juliusmarminge

@D3OXY
D3OXYforce-pushed the feature/codex-thread-spawn-mcp branch from 0543f39 to ef899b5CompareJune 23, 2026 19:39

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One Effect convention issue: several ThreadStartToolError constructions derive message from cause.message, which the error conventions prohibit. The wrapper message must come from the error's own structural attributes (e.g. operation/cwd), never from cause/cause.message; the underlying failure is already preserved in cause. This applies to handlers.ts lines 97, 199, 222, 309 (the cause instanceof Error ? cause.message : ... branches) and line 360 (message: cause.message). Each site already has a static fallback string (or can derive one from operation), so drop the cause.message branch and keep cause for the full chain.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
Comment threadapps/server/src/mcp/toolkits/thread/handlers.ts Outdated
@juliusmarminge

Copy link
Copy Markdown
Member

Changed my mind. Gonna push to get the new orchestrator soon out which has more powerful capabilities

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

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@D3OXY@juliusmarminge