feat(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks
, '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(mcp): expose thread workspace inventory - #8685

Open
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory
Open

feat(mcp): expose thread workspace inventory#8685
juliusmarminge wants to merge 338 commits into
t3code/codex-turn-mappingfrom
agents/mcp-workspaces/inventory

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Aug 29, 2026

Copy link
Copy Markdown
Member

Problem

An agent can see only the branch and worktree path recorded on its own thread. That does not reveal whether Git still agrees, which physical worktrees are available, whether they are dirty, or which live threads are bound to them.

Change

  • enrich t3_worktree_status with separate recorded and actual workspace state plus an agreement result
  • add bounded, cursor-based t3_worktree_list results with bounded thread bindings and per-entry availability
  • add a dedicated internal Git worktree inventory read that returns canonical common-directory and physical worktree-root identity
  • include detached and missing/prunable registered entries without changing the existing paginated vcs.listRefs wire payload or cache shape
  • resolve each distinct nested or symlinked recorded path through Git identity before attributing it to a physical checkout
  • expose both read tools consistently, including Claude read-only permission handling, presentation labels, tests, and docs

Behavior

These tools are read-only and current-project scoped. Inventory pages are sliced before per-worktree status reads, one missing or unreadable checkout produces an explicit entry outcome instead of failing the entire page, and plain non-repository project roots return a truthful status. Nested independent repositories are not attributed to a containing checkout. The tools do not create, switch, remove, prune, revive, or repair worktrees.

Validation

  • vp test run apps/server/src/mcp/WorktreeMcpService.test.ts (60 tests)
  • vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts (58 tests)
  • focused contracts, client-runtime, Git workflow, MCP registration, and Claude adapter coverage from the stack
  • old-shape vcs.listRefs decode/cache compatibility coverage
  • real GitWorkflow non-repository status plus detached, symlink, nested-repository, archived-binding, missing-path, and stale-entry coverage
  • targeted server TypeScript check and targeted lint

Dependency

Bottom of native stack #8711, rooted on agents/mcp-controls/base-490318a at 490318afa505d3d033295eca12d7e62b4b922725. The dependent checkout mutation is PR #8680. This is independent of lifecycle PR #5589.

Implemented by GPT-5.6-Sol via Codex in T3 Code.


Note

Medium Risk
Breaking change:WorktreeMcpStatusResult adds required fields. New Git inventory and binding-resolution logic touches thread workspace attribution; mistakes could mis-report bindings or agreement, though tools are read-only and project-scoped.

Overview
Adds read-only workspace discovery for agents: t3_worktree_list pages Git-registered checkouts in the current project (branch, dirty state, availability, thread bindings) and t3_worktree_status now compares recorded thread metadata to on-disk Git state via an agreement field.

Git gains listWorktrees (canonical paths, common dir, detached entries) wired through GitWorkflowService; list/status resolve nested or symlinked recorded paths against repository identity without changing the vcs.listRefs wire shape. Claude’s read-only MCP allowlist, tool registration, presentation labels, and docs are updated accordingly.

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

Note

Add listWorktrees operation to WorktreeMcpService and extend status result

  • Exposes a new t3_worktree_list MCP tool that returns a paginated inventory of project git worktrees with per-worktree branch, git status, availability, and durable thread bindings.
  • Adds listWorktrees(cwd) to GitVcsDriver and GitWorkflowService to enumerate worktree checkouts including detached ones, with canonicalized real paths via fileSystem.realPath.
  • Extends WorktreeMcpStatusResult with recordedWorkspace, actualWorkspace, and agreement fields that compare the thread's recorded checkout against the physical repo state.
  • Updates docs, read-only Claude allowlist, and tool presentation map to include the new tool.
  • Behavioral Change: WorktreeMcpStatusResult schema now requires three new fields (recordedWorkspace, actualWorkspace, agreement); existing consumers of the status result must decode the new shape. Local branch refs in readGitRefsSnapshot now include prunable worktrees whose directories still exist.

Macroscope summarized 9eaeae0.

@coderabbitai

coderabbitaiBot commented Aug 29, 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 Plus

Run ID: 71b8ce76-89e2-4f74-b444-f8a7e54f290f

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
@github-actions

github-actionsBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 9eaeae0.

This comment will update automatically after the next completed run.

Comment threadpackages/contracts/src/git.ts Outdated
@juliusmarminge
juliusmarminge marked this pull request as ready for review August 29, 2026 22:44
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threaddocs/orchestration-v2/orchestrator-mcp-server.md
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 29, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
Comment threadapps/server/src/mcp/WorktreeMcpService.ts
@macroscopeapp

macroscopeappBot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial agent-facing worktree inventory capability and changes existing status behavior, Git identity handling, and the MCP response contract. Its read-only scope limits operational risk, but the new runtime surface and shared VCS changes warrant human review.

No code changes detected at 9eaeae0. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge changed the base branch from t3code/codex-turn-mapping to agents/mcp-controls/base-490318aAugust 30, 2026 00:51
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 067be67 to 45486fbCompareAugust 30, 2026 17:29
@github-actionsgithub-actionsBot removed the size:XL 500-999 changed lines (additions + deletions). label Aug 30, 2026
@juliusmarminge
juliusmarminge changed the base branch from agents/mcp-controls/base-490318a to t3code/codex-turn-mappingAugust 30, 2026 17:30
@github-actionsgithub-actionsBot added the size:XXL 1,000+ changed lines (additions + deletions). label Aug 30, 2026
Comment threadapps/server/src/mcp/WorktreeMcpService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Macroscope has since reviewed this pull request. An earlier review was skipped by a cost limit; a review has now completed, so that notice no longer applies.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Aug 30, 2026

@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 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but a cloud agent failed to start.

Reviewed by Cursor Bugbot for commit d1a6955. Configure here.

Comment threadapps/server/src/vcs/GitVcsDriverCore.ts Outdated
juliusmarmingeand others added 6 commits August 30, 2026 12:37
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
Fixes review: #2829 (comment)
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the agents/mcp-workspaces/inventory branch from 602bf69 to 9eaeae0CompareAugust 30, 2026 20:14
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@juliusmarminge@mwolson@PixPMusic@nsxdavid@Yusuf007R@maria-rcks