Repository navigation
fix(mcp): name other-workspace projects in POSIX refusals and ls / - #1780
Conversation
…1778) A hosted session that can reach several workspaces only listed its own workspace's projects. A path whose first segment named a project in another workspace was refused with the local mounts only, so an agent retrying from the message could never find the spelling that works. - The refusal now names the workspace holding a same-named project and both spellings that reach it ('<workspace-slug>/<project>/<path>' or project_id). It still refuses: an unqualified first segment never routes to another workspace (#1421). - When nothing matches, the refusal says how other workspaces' projects are addressed and points to list_memory_projects. - `ls /` adds the accessible workspace slugs and a note. They are not rows, since a bare slug is not a routable path. - Only cloud-routed sessions consult workspaces, so local refusals and root listings make no new control-plane calls. - ls(1), cat(1) and find(1) document the workspace-qualified form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KjsDUcHANBa17M84sKxFG3 Signed-off-by: phernandez <paul@basicmachines.co>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fbad63975f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… discovery failure Review follow-ups for #1780. - The refusal hint matched only the first path segment, so with 'Research' beside 'Research/2026' it pointed 'research/2026/foo' at the shorter project. It now uses split_project_permalink_prefix, the splitter routing uses, and names the remainder in the spelling. - A control-plane failure while listing workspaces turned a working `ls /` into an error. The slugs only annotate the root, so it logs and lists the mounts without them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KjsDUcHANBa17M84sKxFG3 Signed-off-by: phernandez <paul@basicmachines.co>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6595f5649b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ed hints - catch ToolError from workspace discovery in the other-workspace hint, so the refusal still lists this session's mounts - offer only project_id when a mount would claim the qualified spelling Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KjsDUcHANBa17M84sKxFG3 Signed-off-by: phernandez <paul@basicmachines.co>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4b2dc7e9f8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… discovery failure Review follow-ups for #1780. - The refusal hint matched only the first path segment, so with 'Research' beside 'Research/2026' it pointed 'research/2026/foo' at the shorter project. It now uses split_project_permalink_prefix, the splitter routing uses, and names the remainder in the spelling. - A control-plane failure while listing workspaces turned a working `ls /` into an error. The slugs only annotate the root, so it logs and lists the mounts without them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KjsDUcHANBa17M84sKxFG3 Signed-off-by: phernandez <paul@basicmachines.co>
Fixes #1778.
What changes
On a hosted session that can reach several workspaces, the POSIX tools only showed the session's own workspace. A path whose first segment named a project in another workspace was refused with the local mounts only, so an agent could not find the spelling that works.
no project 'agent-release-test' — active projects: … . project 'agent-release-test' is in workspace 'zesty-tapir-stone' — use 'zesty-tapir-stone/agent-release-test/<path>' or project_id='…'The path still refuses. An unqualified first segment never routes to another workspace (feat(mcp): route project-qualified paths in the POSIX tools #1421).
My Workspace/...), the error says how other workspaces' projects are addressed and points tolist_memory_projects.ls /mentions the other workspaces. The root listing keeps only the session's projects as rows, and addsworkspaces(accessible slugs) and anote. The slugs are not rows because a bare slug is not a routable path, and every row must be one.ls(1),cat(1)andfind(1)document the workspace-qualified form andproject_id.Only cloud-routed sessions consult workspaces. Local refusals and root listings make no new control-plane calls, including a local session that has cloud credentials saved.
Tests
test_cloud_unqualified_first_segment_never_reaches_another_workspacenow expects the hint. It still pins that the path refuses; the hint offers only the qualified spelling andproject_id.ls /adds the slugs only when several workspaces are reachable.just fast-checkandjust fast-test(1,061 passed), plus the routing, POSIX, project-context and CLI POSIX suites (562 passed).🤖 Generated with Claude Code
https://claude.ai/code/session_01KjsDUcHANBa17M84sKxFG3